Abstract:
Briefly, in accordance with one embodiment of the invention, a system includes: shared memory. The system includes the capability to transfer to a router processing unit a fragment of a received frame and a pointer to the fragment in shared memory.

Description:
BACKGROUND  
         [0001]    Wireless communication systems such as, for example, wireless local area networks (WLAN&#39;s), often involve the transferring of data in packets from one point to another. The transmission of packets may be done by a packet selector that identified the next packet to transmit based on the priorities associated with the packets waiting to be transferred. The packet selector may then provide the packet to a transmitter which, in turn, attempts to transmit the packet. The packet selector then waits for an acknowledgement signal (i.e. a success or fail indicator) from the transmitter and identifies the next packet to transmit based on the result of the last attempted transmission.  
           [0002]    However, the use of this feedback mechanism may introduce delay in transmitting packets and reduce the overall transmission data rate within a wireless network. Thus, there is a continuing need for better ways to transfer packets within a wireless network. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0003]    The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:  
         [0004]    [0004]FIG. 1 is a schematic representation of a portion of wireless communication device in accordance with an embodiment of the present invention;  
         [0005]    [0005]FIG. 2 is a flow chart of a method in accordance with an embodiment of the present invention; and  
         [0006]    [0006]FIG. 3 is a decision tree in accordance with alternative embodiments of the present invention. 
     
    
       [0007]    It will be appreciated that for simplicity and clarity of illustration, elements illustrated in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements are exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals have been repeated among the figures to indicate corresponding or analogous elements.  
       DETAILED DESCRIPTION  
       [0008]    In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present invention.  
         [0009]    Some portions of the detailed description that follows are presented in terms of algorithms and symbolic representations of operations on data bits or binary digital signals within a computer memory. These algorithmic descriptions and representations may be the techniques used by those skilled in the data processing arts to convey the substance of their work to others skilled in the art.  
         [0010]    An algorithm is here, and generally, considered to be a self-consistent sequence of acts or operations leading to a desired result. These include physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like. It should be understood, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.  
         [0011]    Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities within the computing system&#39;s registers and/or memories into other data similarly represented as physical quantities within the computing system&#39;s memories, registers or other such information storage, transmission or display devices.  
         [0012]    Embodiments of the present invention may include apparatuses for performing the operations herein. An apparatus may be specially constructed for the desired purposes, or it may comprise a general purpose computing device selectively activated or reconfigured by a program stored in the device. Such a program may be stored on a storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, compact disc read only memories (CDROMs), magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a system bus for a computing device.  
         [0013]    The processes and displays presented herein are not inherently related to any particular computing device or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired method. The desired structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.  
         [0014]    In the following description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.  
         [0015]    It should be understood that embodiments of the present invention may be used in a variety of applications. Although the present invention is not limited in this respect, the devices disclosed herein may be used in many apparatuses such as in the transmitters and receivers of a radio system. Radio systems intended to be included within the scope of the present invention include, by way of example only, cellular radiotelephone communication systems, satellite communication systems, two-way radio communication systems, one-way pagers, two-way pagers, personal communication systems (PCS), personal digital assistants (PDA&#39;s), wireless local area networks (WLAN), personal area networks (PAN, and the like.  
         [0016]    Turning to FIG. 1, an embodiment 100 in accordance with the present invention is described. Embodiment 100 may comprise a wireless communication device  50  such as a mobile communication device (e.g., cell phone), a two-way radio communication system, a one-way pager, a two-way pager, a personal communication system (PCS), a portable computer, an access point, a base station, a network server, or the like. Although it should be understood that the scope and application of the present invention is in no way limited to these examples. It should also be understood that only a portion of the components of wireless communication device  50  have been shown for clarity. In addition, although the embodiment shown in FIG. 1 is a “wireless” device, in alternative embodiments, packets of data may be transmitted over a wire or wired connection. In yet other embodiments, packets of data may be transmitted over a communication link that includes any combination of both wired and wireless legs.  
         [0017]    Embodiment 100 here includes an processor  20  that may comprise, for example, a microprocessor, a central processing unit (CPU), a digital signal processor, a microcontroller, a reduced instruction set computer (RISC), a complex instruction set computer (CISC), or the like. However, it should be understood that the scope of the present invention is not limited to these examples. Embodiment 100 may also optionally include other components such as a display  15  to present information to a user.  
         [0018]    Wireless communication device  50  may also include memory  35  that may optionally be used to store instructions that are executed by processor  20  during the operation of wireless communication device  50 , and may be used to store user data such as the conditions for when a message is to be transmitted by wireless communication device  50  or the actual data to be transmitted. Memory  35  may be provided by one or more different types of memory such as one of those described above. For example, memory  35  may be volatile memory (any type of random access memory) or non-volatile memory, such as flash memory, although the scope of the present invention is not limited in this respect.  
         [0019]    In this particular embodiment, wireless communication device  50  may also include a packet selector  10  and queues  11  to store and identify the packets to be transmitted. Although the scope of the present invention is not limited in this respect, queues  11  may be used to store packets of information to be transmitted and may be arranged to store packets of varying priority or class level. In other words, one queue  11  may store packets that are of greater significance or are to be transmitted by wireless communication device  50  before the packets in another one of queues  11 . Alternatively or additionally, Queues  11  may also store packets based on other criteria such as the content of the packet, the destination, the source, the age, etc, although the scope of the present invention is not limited in this respect. Queues  11  may be provided using a variety of techniques such as, for example, random access memory, non-volatile memory, etc.  
         [0020]    Although the scope of the present invention is not limited in this respect, queues  11  may be arranged a first-in-first-out (FIFO) queues that provide the packets to be transmitted to packet selector  10  in about the order they were received. Queues  11  may also be arranged to provide packets in a round-robin order or some other statistical approach that allows for packets to be transmitted in some balanced manner that allows for transmitting packets in some combination of lower and higher priority packets.  
         [0021]    In alternative embodiments, queues  11  may include or be provided using interrupts or other signaling method to identify the relative priority of each packet with respect to the other packets to be transmitted. In addition, it should be understood that the scope of the present invention is not limited by the number, type, or particular arrangement of queues  11 .  
         [0022]    The packets stored by queues  11  may be organized in a variety of ways and include different types of data and information. Although the scope of the present invention is not limited in this respect, the packets may include data (e.g. voice, audio, video, user data, etc.) along with header information associated with the packets. For example, the header data may specify the priority, origin, destination, or security data associate with the particular packet. Alternatively, the packet may include information to permit encryption/deciphering, error code correction, etc. on the cargo of the packets. It should be understood that the scope of the invention is not limited by the particular arrangement or contents of the packets to be transmitted.  
         [0023]    As explained in more detail below, packet selector  10  may be used to speculate and identify which of the packet or packets in queues  11  is to be transmitted in an upcoming transmission cycle. In this particular embodiment, packet selector  10  is shown primarily has a hardware block within wireless communication device  50 , although the scope of the present invention is not limited in this respect. In alternative embodiments, packet selector  10  may be any combination of hardware and software, including being implemented exclusively all as hardware or all as software.  
         [0024]    Packet selector  10  may speculate as to what packet or packets should be transmitted next or in the near future using information associated with the prior or past transmissions. Based on this information, packet selector  10  may then provide a transmitter with the packet or packets along with information to allow the transmitter to decide which packet to transmit next (arrow  26 ).  
         [0025]    Thus, wireless communication device  50  may include a transceiver or a transmitter  25  that may be used to transmit packets of information. Although the scope of the present invention is not limited in this respect, transmitter  25  may be adapted to transmit information in accordance with one of the communication protocols associated with cellular communication, WLAN protocols, PAN protocols, etc.  
         [0026]    Types of cellular radiotelephone communication systems intended to be within the scope of the present invention include, although not limited to, Code Division Multiple Access (CDMA) cellular radiotelephone communication systems, Global System for Mobile Communications (GSM) cellular radiotelephone systems, North American Digital Cellular (NADC) cellular radiotelephone systems, Time Division Multiple Access (TDMA) systems, Extended-TDMA (E-TDMA) cellular radiotelephone systems, third generation (3G) systems like Wide-band CDMA (WCDMA), CDMA-2000, and the like.  
         [0027]    WLAN protocols may include, but are not limited, the Institute for Electronics and Electrical Engineers (IEEE) 802.11 specification, the IEEE 802.3.16 specification, the IEEE 802.15 specification, etc., although the scope of the present invention is not limited by the particular communication protocol(s) employed. In addition, wireless communication device  50  may transmit packets to another communication device, a server, a base station, wireless access point (WAP), a switching station, etc. After attempting to transmit the packet, transmitter  25  may then inform packet selector  10  of the outcome of the transmission (indicated in FIG. 1 with an arrow  27 ). For example, transmitter  25  may provide a success or failure signal. Alternatively or additionally, transmitter  25  may provide other information associated with the attempted or most recent transmission. For example, transmitter  25  may inform packet selector  10  of such information as the signal to noise ration of the channel(s) being used, the quality or number of the communication channels, the  
         [0028]    Turning to FIG. 2, a method in accordance with a particular embodiment of the present invention is provided. The description of this particular embodiment begins with an assumption that queues  11  already contain packets to be transmitted since the scope of the present invention is not limited by the source of the packets or how the packets are organized in queues  11 . To begin, box  200 , packet selector  10  may receive information regarding prior and/or the current transmission by transmitter  25 . For example, transmitter  25 , processor  20 , and/or memory  35  may provide information such has the success or failure of the transmission of packets, including the results of attempted transmissions of packet(s) in queues  11 .  
         [0029]    Alternatively, or in addition, packet selector  10  may be provided with information such as a quality indicator of the channel or channels used in prior transmissions, although the scope of the present invention is not limited in this respect. For example, packet selector  10  may be provided with a signal to noise ratio of the channel, interference information of the channel, quality of service information of the channel, cost information of the channel, etc.  
         [0030]    In yet other embodiments, packet selector  10  may be informed of the success rate of transmitting packets to particular receivers (e.g. other nodes, servers, etc.) or information to indicate if a particular receiver(s) is going to be connected or disconnect from the network in the future. For example, packet selector  10  may be provided with information that indicates that a particular receiver is either moving away from wireless communication device  50  or may be disconnected from the network for other reasons, and thus, may not be available in the future to receive packets.  
         [0031]    Packet selector may also be informed of information regarding the packets that are currently being stored for transmission by transmitter  25  including information regarding the packet or packets that transmitter  25  is currently attempting to transmit. It should be understood that the scope of the present invention is not limited so as to require any or all such information be available to packet selector  10 . In addition, packet selector  10  may be provided with other types of data that may be used by packet selector  10  to help speculate and identify which packet or packets in queues  11  may be transmitted in an upcoming transmission by transmitter  25 .  
         [0032]    Packet selector  10  may then speculate as to which packet or packets should be transmitted next, box  201 . Although the scope of the present invention is not limited in this respect, packet selector  10  may speculate as to which packet should be transmitted next based, at least in part, on assumptions associated with the success or failure of the current or most recent transmission by transmitter  25 . For example, packet selector  10  may identify one packet to transmit next if the transmission of the current packet is successful and identify a second packet to transmit next if the current packet is not successfully transmitted. Alternatively, packet selector may indicate that another attempt should be made to transmit the current packet if the current attempt fails. It should be noted that in this particular embodiment, packet selector may be able to speculate which packet or packets are to be transmitted in an upcoming transmission cycle prior to receiving any indication as to the success of the current or most recent transmission.  
         [0033]    In alternative embodiments, packet selector  10  may determine which packet or packets to transmit next using information associated with prior transmissions. For example, packet selector  10  may use any of the information described above (e.g. channel characteristics, historical success rates, etc.) to identify what packet should be transmitted next. Although the scope of the present invention is not limited in this respect, speculating may involve a predictive or a statistical model to determine not only what are the likely outcomes of the current or most recent transmissions, but also identify or determine what packet should then be selected for transmission for those outcome(s). It should also be understood that packet selector  10  may speculate as to more than two possible outcomes and may identify three or more packets for transmission for different possible outcomes.  
         [0034]    After speculating what possible outcomes might arise and after identifying the packet(s) to be transmitted for those outcomes, packet selector  10  may determine or generate conditional information that may be used by transmitter  25 , box  203 . Simply stated, the conditional information may represent If-than statements that specify what course of actions is to be taken (i.e. what packet is to be transmitted) if a certain condition or event occurs.  
         [0035]    For example, although the scope of the present invention is not limited in this respect, if the current attempt to transmit packet A is successful, then try to transmit packet B, else retransmit packet A. Alternatively, packet selector  10  may provide more complicated conditional information such as if the current attempt to transmit packet A is successful and a particular channel characteristics exists, then try to transmit packet B. If the channel characteristic does not exists, then try to transmit packet C, otherwise retransmit packet A.  
         [0036]    Packet selector  10  may provide information to transmitter  25  so that transmitter may then be able to determine which packet to transmit next as soon as it learns the results of the current transmission, box  204 . Thus, in this particular embodiment, although not necessarily all, packet selector  10  may have provided transmitter  25  with at least two packets of data for transmission along with conditional information to determine which of the at least two packets is transmitted.  
         [0037]    The conditional information may take the form of any combination of logic signals, enable signals, or software instructions than may, in turn, be used by transmitter  25  to determine which packet is to be transmitted next. For example, packet selector  10  may provide transmitter  25  with a look up table, or its equivalent, that includes a list of possible outcomes, criteria to determine if the outcome occurred, and then what course of action is to be taken (e.g. what packet to transmit next).  
         [0038]    Alternatively, packet selector  10  may provide transmitter  25  with just one additional packet (namely packet B) so that transmitter  25  comprises at least two packets, the current packet it is transmitting and packet B. In such an embodiment, transmitter  25  may then have a simpler choice to make based on a success or fail indicator of a prior or the most recent transmission. For example, transmitter  25  may retransmit the current packet if the current transmission attempt fails, or may transmit packet B if the current transmission is successful. It should be noted that in this particular embodiment, packet selector  10  may speculate and identify which packet(s) may be transmitted next prior to receiving any information about the success of the current transmission.  
         [0039]    Thus, transmitter  25  may be provided with the next packet to transmit without having to wait for packet selector  10  to first identify the next packet to transmit based on the success on the last transmission. In this particular embodiment, packet selector  10  may be able to provide the next packet(s) to be transmitted and/or conditional information prior to completion of a current transmission which may improve the overall throughput or transmission data rate of wireless communication device  50 .  
         [0040]    Returning to the method shown in FIG. 2, upon completion of the current transmission, transmitter  25  may the compare the conditional information to the actual outcome of the most recent transmission in an attempt to determine which packet is to be transmitted next, box  205 . For example, transmitter  25  may use the success or failure indicator from the last transmission to determine which packet is to be transmitted next. An advantage of this particular embodiment is that transmitter  25  already has the packets to be transmitted for the most likely outcomes, and thus, may proceed to begin transmitting the appropriate packet without having to wait for packet selector  10  to identify the appropriate packet.  
         [0041]    Transmitter  25  may then begin to transmit the appropriate packet based on the conditional information, box  206 . In addition, transmitter may also inform packet selector  10  of the outcome of the prior or most recent transmissions so that it may begin speculating as to the next packet or packets to be transmitted while transmitter  25  is transmitting the current packet (indicated with an arrow  207 ). It should be understood that the scope of the present invention is not limited in this respect as transmitter  25  may provide the results of the prior transmission prior to or after the transmission of the current packet. The method shown in FIG. 2 may continue until wireless communication device  50  has transmitted all the packets in queues  11 , although the scope of the present invention is not limited in this respect.  
         [0042]    It should also be understood that the scope of the present invention is not limited to the particular temporal relationships described above. For example, terms like “next” or “immediate” are not meant to limit the scope of the invention to require that the packet(s) provided by packet selector  10  are to be transmitted immediately upon receipt. In alternative embodiments, transmitter  25  may have one or more queues to store several packets and/or the conditional information associated with the packets. Thus, alternatively, packet selector may use information from the most recent transmission or a prior transmission, or both, to speculate as to what packet(s) is to be transmitted. In addition to or alternatively, packet selector  10  may provide transmitter  25  with packet that are to be transmitted in the next transmission or any upcoming transmission cycle.  
         [0043]    It should also be understood that the scope of the present invention is not limited to the transmission of packets between a node and a server in a wireless local area network. The same techniques may be used to transmit packets between mobile devices in the same network. Alternatively, embodiments of the present invention may also be employed to transmit packets between a base station and a cellular transceiver in a cellular network.  
         [0044]    While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.