Embodiments of the present invention pertain to electronic circuits. In some embodiments, the present invention pertains to packet routing and packet multicasting. In some embodiments, the present invention pertains to multiprocessor systems.
Packet multicasting generally involves sending data to many participating nodes of a distributed network. Some conventional techniques for multicasting packets use unicasting to help reduce the cost and complexity associated with true packet multicasting. Unicasting generally involves sending the same packet (i.e., having the same data) to multiple destinations. One problem with unicasting for packet multicast is that the same packet (except for the destination address) is generated many times making it difficult to use packet buffers, such as first-in, first-out (FIFO) buffers, which are conventionally used for non-multicast packet generation.
The appended claims are directed to some of the various embodiments of the present invention. However, the detailed description presents a more complete understanding of embodiments of the present invention when considered in connection with the figures, wherein like reference numbers refer to similar items throughout the figures and:
The following description and the drawings illustrate specific embodiments of the invention sufficiently to enable those skilled in the art to practice them. Other embodiments may incorporate structural, logical, electrical, process, and other changes. Examples merely typify possible variations. Individual components and functions are optional unless explicitly required, and the sequence of operations may vary. Portions and features of some embodiments may be included in or substituted for those of others. Embodiments of the invention set forth in the claims encompass all available equivalents of those claims. Embodiments of the invention may be referred to, individually or collectively, herein by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
In some embodiments, a packet, including its header, may be read from multi-read buffer 102, and processor 106 may determine from the header whether the packet is a multicast packet. After reading a packet from multi-read buffer 102, the destination address in the header may be modified to identify the destination for that packet. When the packet is a multicast packet, it may be re-read from multi-read buffer 102, and its destination address may again be subsequently modified for the next destination.
In some embodiments, network communication device 100 may be a wireline communication device associated with network 110 over a wireline link. In some embodiments, network 110 may be a transmission control protocol/internet protocol (TCP/IP) network, although the scope of the invention is not limited in this respect. In some embodiments, network 110 may be an Ethernet-type network, and link 114 may be a wireline link operating in accordance with an Ethernet-type communication protocol, although the scope of the invention is not limited in this respect. In some embodiments, network communication device 100 may operate as a data router for routing packets to and from network 110. In some embodiments, network communication device 100 may be a wireless communication device associated with network 110 over a wireless link. In some wireless embodiments, network 110 may be a wireless local area network (WLAN), and link 114 may be a wireless link operating in accordance with a wireless local area network communication protocol, although the scope of the invention is not limited in this respect. In some wireless embodiments, network communication device may include antenna 112, although the scope of the invention is not limited in this respect. Link 114, although illustrated as a wireless link, may be any type of communication link.
In accordance with some embodiments, processor 106 may check a header for a current packet being generated to determine if the packet is a multicast packet. If the packet is a multicast packet, processor 106 may assert multi-read mode signal 108. In these embodiments, multi-read buffer 102 may latch a start read address of a read pointer pointing to the start of multicast packet data when the multi-read mode signal is asserted. Multi-read buffer 102 may also increment the read pointer while the multicast packet data is read, and it may reload the latched start read address to the read pointer after the multicast packet data is read for generation of a next multicast packet. Examples of some embodiments are described in more detail below.
In some embodiments, when network device 100 is a wireless communication device, network interface circuitry 104 may include a wireless transceiver to transmit multicast packets over a wireless link with antenna 112. In some wireless embodiments, the transceiver may be a multicarrier transceiver that communicates the multicast packets on multicarrier communication signals over the wireless link. The multicarrier communication signals may comprise a plurality of substantially orthogonal subcarriers, and they may include orthogonal frequency division multiplexed (OFDM) subcarriers or discrete multitone (DMT) subcarriers, although the scope of the invention is not limited in this respect.
In some wireless embodiments, network communication device 100 may be a personal digital assistant (PDA), a laptop or portable computer with wireless communication capability, a web tablet, a wireless telephone, a wireless headset, a pager, an instant messaging device, a digital camera, an access point or other device that may receive and/or transmit information wirelessly. In some wireless embodiments, the transceiver may transmit and/or receive radio-frequency (RF) communications in accordance with specific communication standards, such as the Institute of Electrical and Electronics Engineers (IEEE) standards including IEEE 802.11(a), 802.11(b), 802.11(g/h) and/or 802.11(n) standards for wireless local area networks (WLANs) and/or 802.16 standards for wireless metropolitan area networks (WMANs), although device 100 may also be suitable to transmit and/or receive communications in accordance with other techniques including the Digital Video Multicasting Terrestrial (DVB-T) multicasting standard, and the High performance radio Local Area Network (HiperLAN) standard. In some wireless embodiments, antenna 112 may comprise a directional or omnidirectional antenna, including, for example, a dipole antenna, a monopole antenna, a loop antenna, a microstrip antenna or other type of antenna suitable for reception and/or transmission of RF signals.
Although network communication device 100 is illustrated as having several separate functional elements, one or more of the functional elements may be combined and may be implemented by combinations of software-configured elements, such as processing elements including digital signal processors (DSPs), and/or other hardware elements. For example, processing elements may comprise one or more microprocessors, DSPs, application specific integrated circuits (ASICs), and combinations of various hardware and logic circuitry for performing at least the functions described herein.
In accordance with some embodiments, multi-read buffer 200 operates as a packet buffer that may store packet data until a next destination is determined. In non-multicast operations, multi-read buffer 200 reads the oldest packet data first and reads the packet data once. In packet multicast operations, multi-read buffer 200 re-reads packet data multiple times for generating packets for multicast.
In some embodiments, read logic circuitry 202 generates read pointer 214 which points to a location in memory 206 that will be read next, and write logic circuitry 204 generates write pointer 216, which points to a location in memory 206 that will be written next. Write logic circuitry 204 may include fullness checker 218 to determine when the buffer is full, and read logic circuitry 202 may include emptiness checker 220 to determine when the buffer is empty. The buffer may be considered empty when all memory locations have been read, and a read may be prohibited. Conversely, a write may be prohibited when all memory locations are full.
In accordance with some embodiments, multi-read logic circuitry 210 may latch a start read address of read pointer 214 of multicast packet data in response to assertion of multi-read mode signal 208. Multi-read mode signal 208 may correspond to multi-read mode signal 108 (
In some embodiments, multi-read logic circuitry 210 may hold latched start read address 211 to write logic circuitry 204 during the incrementation of read pointer 214. Accordingly, read pointer 222 is a delayed copy from read logic circuitry 202 and does not get incremented during the reading of a multicast packet indicating that memory 206 is not being emptied.
In some embodiments, for generating a current multicast packet, address incrementer logic circuitry 212 may increment read pointer 214 until the end of the multicast packet data is reached. Multi-read logic circuitry 210 may reload the latched start read address to the current read pointer after all the blocks of the multicast packet data are read while the multi-read mode signal 208 is asserted. Incrementer logic circuitry 212 may increment the reloaded read pointer until the end of the multicast packet data is reached again for generation of the next multicast packet.
Memory 206 may be any read/writable storage medium including, for example, a dual-port memory or a dual port random-access-memory (RAM), although other memory structures are also suitable. In some embodiments, single-port memories may also be used, although the scope of the invention is not limited in this respect.
In accordance with some data-processing embodiments, a packet is read a first time to determine the start of valid data in the packet, and then the valid packet may be read (i.e., a second time) from the start of the valid data, which may be indicated by the start read pointer. In these embodiments, a portion of a packet may be read from memory 206 (i.e., rather than an entire packet), and processor 106 (
Multi-read logic circuitry 300 may also comprise read address output multiplexer 310 to provide latched start read address 311 to write logic circuitry 204 (
Multiplexers 306 and 310, although described as multiplexers, may comprise any type of logic circuitry for selecting an output from two or more inputs. Registers 302 and 304, although described as registers, may comprise any type of logic circuitry for storing and/or latching information.
Operation 402 comprises checking a current packet being generated to determine if the current packet is a multicast packet. In some embodiments, the current packet may be stored in a buffer, such as multi-read buffer 200, and operation 402 may be performed as the packet is being read from the buffer. In some embodiments, the header of the current packet may be checked to determine if the packet is a multicast packet, although the scope of the invention is not limited in this respect.
In operation 404, when the packet is determined to be a multicast packet, operation 406 is performed. When the packet is determined not to be a multicast packet, operation 420 is performed.
Operation 406 comprises asserting a multi-read mode signal. In some embodiments, operation 406 comprises providing asserted multi-read mode signal 208 (
Operation 408 comprises latching the start read address of the packet data, which would be multicast packet data. In some embodiments, the start read address may be latched in register 304 (
Operation 410 comprises holding the latched start read address to write logic of a multi-read buffer. In some embodiments, multiplexer 310 (
Operation 412 comprises reading the multicast packet data. In some embodiments, operation 412 comprises incrementing the read pointer 309 (
Operation 414 comprises generating the multicast packet from the packet data that was read in operation 412. In some embodiments, operation 414 may comprise updating, changing, or modifying the packet header to reflect the destination address for the packet. In some embodiments, operation 414 may also include transmitting the packet over a network link, such as network link 114 (
Operation 416 determines when the multi-read mode signal is still asserted. When the multi-read mode signal is asserted, operation 418 is performed. When the multi-read mode signal is not asserted, operation 420 is performed.
Operation 418 comprises reloading the latched start read address to the current read pointer to allow the multicast packet data to be reread. In some embodiments, multiplexer 306 (
Operation 420 comprises generating a non-multicast packet. Operation 420 is performed when multi-read mode signal 308 (
Although the individual operations of procedure 400 are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated.
Embodiments of the invention may be implemented in one or a combination of hardware, firmware and software. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by at least one processor to perform the operations described herein. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash-memory devices, electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.), and others.
The Abstract is provided to comply with 37 C.F.R. Section 1.72(b) requiring an abstract that will allow the reader to ascertain the nature and gist of the technical disclosure. It is submitted with the understanding that it will not be used to limit or interpret the scope or meaning of the claims.
In the foregoing detailed description, various features are occasionally grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments of the subject matter require more features than are expressly recited in each claim. Rather, as the following claims reflect, invention may lie in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate preferred embodiment.