WO2015039342A1 - Systems and methods for providing a desired bandwidth in a wireless network - Google Patents

Systems and methods for providing a desired bandwidth in a wireless network Download PDF

Info

Publication number
WO2015039342A1
WO2015039342A1 PCT/CN2013/083976 CN2013083976W WO2015039342A1 WO 2015039342 A1 WO2015039342 A1 WO 2015039342A1 CN 2013083976 W CN2013083976 W CN 2013083976W WO 2015039342 A1 WO2015039342 A1 WO 2015039342A1
Authority
WO
WIPO (PCT)
Prior art keywords
buffers
skb
queue
pool
associated station
Prior art date
Application number
PCT/CN2013/083976
Other languages
French (fr)
Inventor
Lihong Sun
Chih-Wei Chen
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Priority to PCT/CN2013/083976 priority Critical patent/WO2015039342A1/en
Publication of WO2015039342A1 publication Critical patent/WO2015039342A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]

Definitions

  • Wireless communications networks are widely deployed to provide various communication services such as voice, video, packet data, messaging, broadcast, and the like. These wireless networks may be multiple-access networks capable of supporting multiple users by sharing the available network resources.
  • a wireless communication network may include a number of network devices such as access points (APs) that can support communication for a number of wireless devices.
  • a wireless device may communicate with a network device bi-directionally.
  • a wireless device e.g., a station or STA
  • the downlink (or forward link) refers to the communication link from the AP to the STA
  • the uplink (or reverse link) refers to the communication link from the STA to the AP.
  • WLANs or Wi-Fi networks become more widespread, the number of stations that associate to a particular AP tend to increase.
  • An AP with a large number of associated stations tends to provide poor Wi-Fi performance, especially when there are stations handling a heavy load and those stations occupy almost all of the bandwidth available to the AP. Therefore, there is a need to balance the traffic and bandwidth to the associated stations during periods of congestion.
  • the described features generally relate to one or more improved methods, devices, and/or systems for wireless communications.
  • One aspect of providing a desired bandwidth to each of the stations associated with an AP on a WLAN or Wi-Fi network during periods of congestion may include using a realtime monitor mechanism to detect congested traffic and, when a WLAN driver in the AP enters a congested state and there are no free descriptors or buffers available to transmit data, packets may be discarded from congested traffic to ensure packets from low traffic can be transmitted.
  • Another aspect may include reserving or allocating a number of descriptors or buffers for each station such that when one station runs into congested traffic and the WLAN driver in the AP does not have any available common descriptors, other stations can use reserved descriptors or buffers to transmit data.
  • Yet another aspect may include, when a particular station ingress traffic is lower than the minimum setting and the WLAN driver in the AP does not have any available descriptors or buffers, creating a data queue for each of the stations to push packets to the data queue and ensure packets from low traffic will not be discarded by the WLAN driver.
  • a method for wireless communications includes allocating a pool of transmit (TX) buffers for each associated station.
  • the method also includes identifying a number of TX buffers for transmission of a data frame to an associated station.
  • the method further includes selecting a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers.
  • the method may include allocating a public pool of TX buffer, and selecting the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
  • the method includes adapting a total number of TX buffers in the public pool of TX buffers at a time other than run time. In some embodiments, the method includes releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station. [0007] In some embodiments, the method includes queuing the data frame in the set of TX buffers into a corresponding traffic identifier (TID) buffer queue.
  • TID traffic identifier
  • the method may further include pushing the data frame from the TID buffer queue to a hardware queue, where the data frame is retrieved from the hardware queue for transmission to the associated station.
  • the data frame may include a unicast data frame.
  • a method for wireless communications may include allocating a socket buffer (SKB) first-in-first-out (FIFO) queue for each associated station. The method also includes determining whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions. The method further includes transmitting an SKB when the SKB FIFO queue is determined to be empty.
  • SKB socket buffer
  • FIFO first-in-first-out
  • Transmitting the SKB when the SKB FIFO queue is determined to be empty may include calling a function to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
  • the method may further include placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, calling a function to queue the SKB for transmission in the sequence order, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
  • the SKB may correspond to a unicast data frame.
  • An apparatus for wireless communications includes means for allocating a pool of TX) buffers for each associated station.
  • the apparatus also includes means for identifying a number of TX buffers for transmission of a data frame to an associated station.
  • the apparatus further includes means for selecting a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers.
  • the apparatus may include means for allocating a public pool of TX buffers, and means for selecting the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
  • the apparatus includes means for adapting a total number of TX buffers in the public pool of TX buffers at a time other than run time.
  • the apparatus includes means for releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and means for recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
  • the apparatus includes means for queuing the data frame in the set of TX buffers into a corresponding TID buffer queue.
  • the apparatus may further include means for pushing the data frame from the TID buffer queue to a hardware queue, where the data frame is retrieved from the hardware queue for transmission to the associated station.
  • the data frame may include a unicast data frame.
  • An apparatus for wireless communications includes means for allocating an SKB FIFO queue for each associated station.
  • the apparatus also includes means for determining whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions.
  • the apparatus may further include means for transmitting an SKB when the SKB FIFO queue is determined to be empty.
  • the means for transmitting the SKB when the SKB FIFO queue is determined to be empty may include means for calling a function to queue the SKB for transmission, means for identifying a return value of the called function, and means for determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
  • the apparatus may further include means for placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, means for calling a function to queue the SKB for transmission in the sequence order, means for identifying a return value of the called function, and means for determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
  • the SKB may correspond to a unicast data frame.
  • An apparatus for wireless communications includes a processor, memory in electronic communication with the processor, and instructions stored in the memory.
  • the instructions are executable by the processor to allocate a pool of TX buffers for each associated station.
  • the instructions are also executable by the processor to identify a number of TX buffers for transmission of a data frame to an associated station.
  • the instructions are further executable by the processor to select a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers.
  • the instructions may be executable by the processor to allocate a public pool of TX buffers, and to select the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
  • the instructions are executable by the processor to adapt a total number of TX buffers in the public pool of TX buffers at a time other than run time.
  • the instructions are executable by the processor to release the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and to recycle the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
  • the instructions are executable by the processor to queue the data frame in the set of TX buffers into a corresponding TID buffer queue.
  • the instruction may be executable by the processor to push the data frame from the TID buffer queue to a hardware queue, where the data frame is retrieved from the hardware queue for transmission to the associated station.
  • the data frame may include a unicast data frame.
  • An apparatus for wireless communications includes a processor, memory in electronic communication with the processor, and instructions stored in the memory.
  • the instructions are executable by the processor to allocate an SKB FIFO queue for each associated station.
  • the instructions are also executable by the processor to determine whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions.
  • the instructions are further executable by the processor to transmit an SKB when the SKB FIFO queue is determined to be empty.
  • the instructions executable by the processor to transmit the SKB when the SKB FIFO queue is determined to be empty are executable by the processor to call a function to queue the SKB for transmission, to identify a return value of the called function, and to determine whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
  • the instructions are executable by the processor to place the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, to call a function to queue the SKB for transmission in the sequence order, to identify a return value of the called function, and to determine whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
  • the SKB may correspond to a unicast data frame.
  • FIG. 1 shows a diagram that illustrates an example of a wireless local area network (WLAN) according to various embodiments
  • FIG. 2 shows a diagram that illustrates an example of an AP with a large number of associated stations according to various embodiments
  • FIG. 3 shows a diagram that illustrates an example of a WLAN driver according to various embodiments
  • FIG. 4 shows a diagram that illustrates an example of using a FIFO queue for each associated station according to various embodiments
  • FIG. 5A shows a diagram that illustrates an example of reserved and common pools TX buffers according to various embodiments
  • FIG. 5B shows a diagram that illustrates an example of reserved TX buffers for each associated station according to various embodiments
  • FIG. 6 shows a diagram that illustrates another example of using a FIFO queue and reserved TX descriptors for each associated station according to various embodiments
  • FIGS.7 and 7B show diagrams that illustrate examples of devices (e.g., APs) for use in wireless communications according to various embodiments;
  • FIG. 8 shows a block diagram that illustrates an example of station architecture according to various embodiments;
  • FIG. 9 shows a block diagram that illustrates an example of an AP architecture according to various embodiments.
  • FIGS. 10-13 are flowcharts of examples of methods for providing a minimum bandwidth guarantee for each associated station on a WLAN (e.g., at an AP) according to various embodiments.
  • WLANs are networks based on carrier sense multiple access with collision avoidance (CSMA/CA) to access the medium and no coordinator manages the transmission opportunity.
  • CSMA/CA carrier sense multiple access with collision avoidance
  • stations When the medium is idle, stations have the right to transmit data and they may compete to access the sharing medium. For each of the stations the transmission of data is random and, consequently, the more stations that try to access the shared medium, the higher the collision rate tends to be. Therefore, the larger the number of stations that are associated with an AP (e.g., an AP may associate with 32 stations at the same time), the poorer overall performance of the AP becomes.
  • CSMA/CA carrier sense multiple access with collision avoidance
  • stations with heavy traffic may occupy almost all of the bandwidth available to the AP such that stations with low traffic maybe not have the opportunity to transmit frames, which can cause packet loss and/or a transmission control protocol (TCP) connection to drop. Therefore, it may be desirable to balance the bandwidth available at the AP and to assure that there is a minimum transmission bandwidth for each associated station.
  • TCP transmission control protocol
  • Congestion between two or more stations trying to access the medium typically results in the loss of packets.
  • an AP may take high ingress traffic for one station, but the WLAN port may not be able to provide enough bandwidth to the station because of a slow egress link.
  • each frame On the transmit path of the AP's WLAN driver, each frame may require a descriptor to queue the data buffer on hardware.
  • the congested traffic may consume the free descriptors from the common pool and may cause the WLAN driver enter into a congested state, with no free descriptors to transmit data. In this instance, it may not matter whether the packet comes from congested traffic or low traffic since it would be dropped at the ingress of the WLAN driver.
  • the WLAN driver may be configured to perform or enable one or more of the following three features.
  • First establish a real-time monitor mechanism to detect the congested traffic when the WLAN driver enters a congested state and there are no free descriptors to transmit data. At this point, the WLAN driver may discard packets from congested traffic to ensure packets from low traffic can be transmitted.
  • Second, a number of descriptors may be reserved for each station such that when one station runs into congested traffic and the WLAN driver has no free common descriptor, then other stations may still get reserved buffers to transmit data.
  • a data queue may be created for each station such that if the station's ingress traffic is lower than the minimum bandwidth setting and the WLAN driver has no free descriptors, then packets will not be dropped but instead will be pushed to the data queue to ensure that packets from low traffic will not be discarded in the WLAN driver.
  • References made herein to a descriptor may typically refer to a logical construct or the like that corresponds, represents, or identifies one or more buffers. Therefore, the terms descriptor and buffer may be used interchangeably throughout the disclosure.
  • a WLAN or Wi-Fi network may refer to a network that is based on the protocols described in the various IEEE 802.11 standards (e.g., IEEE 802.11a/g, 802.11 ⁇ , 802.1 lac, 802.11ah, etc.), for example.
  • IEEE 802.11a/g, 802.11 ⁇ , 802.1 lac, 802.11ah, etc. may also be used in any wireless network (e.g., a cellular network).
  • the same or similar techniques may be used for various wireless communications systems such as cellular wireless systems, Peer-to-Peer wireless communications, ad hoc networks, satellite communications systems, and other systems.
  • the terms "system” and "network” are often used interchangeably.
  • wireless communications systems may employ a variety of radio communication technologies such as Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal FDMA (OFDMA), Single-Carrier FDMA (SC-FDMA), and/or other radio technologies.
  • CDMA Code Division Multiple Access
  • TDMA Time Division Multiple Access
  • FDMA Frequency Division Multiple Access
  • OFDMA Orthogonal FDMA
  • SC-FDMA Single-Carrier FDMA
  • wireless communications are conducted according to a standardized implementation of one or more radio communication technologies called a Radio Access Technology (RAT).
  • RAT Radio Access Technology
  • a wireless communications system or network that implements a Radio Access Technology may be called a Radio Access Network (RAN).
  • RAN Radio Access Network
  • Examples of Radio Access Technologies employing CDMA techniques include CDMA2000, Universal Terrestrial Radio Access (UTRA), etc.
  • CDMA2000 covers IS-2000, IS-95, and IS-856 standards.
  • IS-2000 Releases 0 and A are commonly referred to as CDMA2000 IX, IX, etc.
  • IS-856 (TIA-856) is commonly referred to as CDMA2000 lxEV- DO, High Rate Packet Data (HRPD), etc.
  • UTRA includes Wideband CDMA (WCDMA) and other variants of CDMA.
  • Examples of TDMA systems include various implementations of Global System for Mobile Communications (GSM).
  • GSM Global System for Mobile Communications
  • Radio Access Technologies employing OFDM and/or OFDMA include Ultra Mobile Broadband (UMB), Evolved UTRA (E-UTRA), Wi-Fi, IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDM, etc.
  • UMB Ultra Mobile Broadband
  • E-UTRA Evolved UTRA
  • Wi-Fi Wi-Fi
  • IEEE 802.16 WiMAX
  • IEEE 802.20 Flash-OFDM
  • UTRA and E-UTRA are part of Universal Mobile Telecommunication System (UMTS).
  • 3GPP Long Term Evolution (LTE) and LTE- Advanced (LTE-A) are new releases of UMTS that use E-UTRA.
  • UTRA, E-UTRA, UMTS, LTE, LTE-A, and GSM are described in documents from an organization named "3rd Generation Partnership Project" (3GPP).
  • CDMA2000 and UMB are described in documents from an organization named "3rd Generation Partnership Project 2" (3GPP2).
  • the techniques described herein may be used for the
  • FIG. 1 shows a diagram 100 that includes an example of a WLAN or Wi-Fi network.
  • An AP 105 i.e., network device
  • the client devices 115 may be distributed or deployed within a coverage area 120 of the WLAN.
  • Each of the stations 115 may associate and communicate (using communication links 125) with one of the APs 105.
  • Each AP 105 has a coverage area 120 such that stations 115 within that area can typically communicate with the AP 105.
  • a station 115 can be covered by more than one AP 105 and can therefore associate with different APs at different times depending on which one provides a more suitable connection.
  • a set of stations 115 that communicate with each other may be referred to as a basic service set (BSS).
  • An extended service set (ESS) is a set of connected BSSs and a distribution system (DS) (not shown) is used to connect access points in an extended service set.
  • BSS basic service set
  • ESS extended service set
  • DS distribution system
  • a WLAN driver in the AP 105 may be configured include various features described below in connection with FIGS. 2-13.
  • FIG. 2 shows a diagram 200 that illustrates a WLAN having multiple stations 115-a associated with an AP 105-a through communication links 125-a.
  • the stations 115-a may be examples of the stations 115 of FIG. 1.
  • the AP 105-a may be an example of the APs 105 of FIG. 1.
  • the AP 105-a has up to N associated stations.
  • an AP may be able to handle up to 32 associated stations, although a higher number of associated stations may be possible in other embodiments.
  • Each station (e.g., STA 1, STA 2, STA 3, and STA 4) has a corresponding bandwidth (e.g., BW 1, BW 2, BW 3, and BW 4) for communicating with the AP 105-a.
  • a driver in the AP 105-a e.g., a WLAN driver
  • FIG. 3 shows a diagram 300 that illustrates a WLAN driver 310 for use with an AP (e.g., AP 105) to provide a minimum bandwidth guarantee for associated stations.
  • the WLAN driver 310 may operate in one or more components of an AP (e.g., processor 910 and/or memory 920 of FIG. 9).
  • the WLAN driver 310 may include a media access control (MAC) software that distinguishes between layers.
  • MAC media access control
  • the WLAN driver 310 may include an upper MAC (UMAC) 320 and a lower MAC (LMAC) 350.
  • UMAC upper MAC
  • LMAC lower MAC
  • the UMAC 320 and the LMAC 350 may run or execute in the same processor or in different processors (e.g., the UMAC 320 may run on a host processor and the LMAC 350 may run on a wireless chip set, or in another example, the UMAC 320 and the LMAC 350 are two separate software modules that run on the same host processor).
  • the various aspects described herein for a WLAN driver to implement features that allow for a minimum bandwidth guarantee for associated stations may involve operations associated with one or both of the UMAC 320 and the LMAC 350.
  • FIG. 4 shows a diagram 400 that illustrates an example of using a FIFO queue for each associated station according to various embodiments.
  • FIG. 4 shows a socket buffer (SKB 1) 410, a UMAC 320-a, and an LMAC 350-a.
  • the UMAC 320-a and the LMAC 350-a may be respective examples of the UMAC 320 and the LMAC 350 of FIG. 3.
  • the UMAC 320-a is shown with first-in-first-out (FIFO) queues 420, ..., 423 for stations STA 1, STA N. Also shown in the UMAC 320-a are an SKB2 430 and an SKB3 440.
  • FIFO first-in-first-out
  • the UMAC 320-a may exchange information with the LMAC 350-a through function or virtual interfaces 450 and 460.
  • the UMAC 320-a may provide a callback function when the LMAC 350-a transmit is complete and may call the callback function to scheduled the FIFO queue.
  • the LMAC 350-a may provide an application programming interface (API) to call the function dev_queue_xmit to transmit data, and if the LMAC 350-a does not provide the appropriate resources the function return may indicate a failed call.
  • API application programming interface
  • an SKB FIFO queue (or simply a FIFO queue) is set up in the UMAC 320-a for each associated station.
  • the maximum queue depth may be defined by MAX_QUEUE_DEPTH.
  • a first step may be to check the corresponding station's FIFO queue (e.g., for SKB1 410 the corresponding queue is FIFO queue for STAl 420).
  • the SKB may be transmitted according with a normal or typical process.
  • Function dev_queue_xmit may be called and the return value of dev_queue_xmit may be checked. When the return value is not OK, then some conditions may need to be checked to determine whether to discard the frame or insert to the FIFO queue.
  • dev_queue_xmit may be loop called to transmit the SKB from the FIFO queue in the appropriate order.
  • the return value of dev_queue_xmit may be checked and if not OK, the loop and call function may be broken to determine whether to discard the frame or insert to the head of the FIFO queue then return.
  • the corresponding station's FIFO queue may be scheduled. If a public transmit buffer, the longest FIFO queue may be scheduled.
  • loop calling the function dev_xmit_queue to transmit the SKB from the FIFO queue in the appropriate order is performed.
  • the return value of dev_xmit_queue may be checked and if the value is not OK, then break the loop and call function may be broken to determine whether to discard the frame or insert it to the head of the FIFO, then return.
  • One approach to determine whether to discard the frame or push it to the FIFO queue is to first check the ingress throughput.
  • the frame may be discarded. Otherwise, in the example, to guarantee a minimum bandwidth, the frame can be pushed to the FIFO queue to ensure each frame can be transmitted (instead of being discarded inappropriately).
  • the station's mode may be checked. If the station is compatible with IEEE 802.11b, there may be no need to guarantee the minimum bandwidth, and therefore the frame may be allow to drop. The station's current data rate and PER may also be checked to calculate a current throughput. When the calculated throughput is lower than a threshold, the frame may again be discarded. Otherwise, the frame may be pushed to respective the (SKB) FIFO queue.
  • the FIFO Queue for STA 1 420 may not be empty.
  • the SKB1 410 from the upper layer may be pushed to the tail of FIFO queue for STA 1 420.
  • the UMAC 320-a may call function dev_queue_xmit, transmit SKB3 440 to the LMAC 350-a. If that fails, the current throughput may be checked and if found to be lower than the minimum bandwidth, SKB3 440 may be pushed to the FIFO queue for STA 3 422.
  • the header for SKB2 430 may be popped from the FIFO queue for STA 2 421. Then, function dev_queue_xmit may be called and, if it fails, then SKB2 430 may be inserted to the header of the FIFO queue for STA 2 421.
  • Multicast data frame and management frame may not be considered. Instead, unicast data is typically considered for the feature illustrated in the example of FIG. 4.
  • FIG. 5A shows a diagram 500 that illustrates an example of reserved and common pools TX buffers according to various embodiments.
  • FIG. 5A shows an SKB 510 and an LMAC 350-b.
  • the LMAC 350-b may be an example of the LMACs 350 and 350-a of FIG. 3 and/or 4.
  • the LMAC 350-b may include a reserved transmission (TX) buffer pool 520, a public TX buffer pool 530, a software queue 540, and a hardware queue 550.
  • the software queue 540 may include traffic identifier (TID) buffer queues 541, 544 for stations STA 1, STA N.
  • TID traffic identifier
  • the hardware queue 550 may include a hardware background (HW BK) queue 551, a HW best effort (BE) queue 552, a HW video (VI) queue 553, and a HW voice (VO) queue 554.
  • HW BK hardware background
  • BE HW best effort
  • VI HW video
  • VO HW voice queue 554.
  • transmission buffers or descriptors are implemented using two separate pools, the reserved TX buffer pool 520 and the public TX buffer pool 530.
  • the number of the reserved TX buffers (ATH_RESERVED_TX_BUF) is based on the maximum number of stations (MAX_STA_NUMBER) and the number of buffers reserved for each station (RESERVED_TXBUF_PERSTA).
  • the number of the public TX buffer is ATH_PUBLIC_TX_BUF.
  • the first step may include getting the needed buffer(s) from the reserved TX buffer pool 520. If the number of the assigned TX buffer for the appointed station is more than or equal to the RESERVED_TXBUF_PERSTA, then any additional buffer(s) needed may have to be obtained from the public TX buffer pool 530.
  • the public TX buffers may be recycled or released to public TX buffer pool 530 and the reserved TX buffers may again be made available to the respective station through the reserved TX buffer pool 520.
  • the TX buffers may be obtained from the public TX buffer pool 530.
  • the TX buffer when the TX buffer is recycled or released and if the TX buffer is from a reserved pool of buffers (e.g., reserved TX buffer pool 520), scheduling of the TX buffer's corresponding station's FIFO is triggered. Otherwise, in the embodiment, if the TX buffer is from a public pool of buffers (e.g., public TX buffer pool 530), scheduling the longest FIFO queue is triggered. [0050] Based on the description provided above, a particular example of some of the operations associated with FIG. 5 may now be described. When SKB 510 is to be transmitted, the TX buffers may first be obtained from the reserved TX buffer pool 520.
  • a reserved pool of buffers e.g., reserved TX buffer pool 520
  • the SKB 510 may be queued to the respective TID buffer queue (e.g., TID buffer queue for STA 2 542) in the software queue 540. Then, the SKB may be pushed to the HW BK queue 551 in the hardware queue 550. When transmission of SKB 510 is complete (e.g., out of the hardware queue), then the TX buffers used to transmit the SKB 510 may be released or recycled.
  • TID buffer queue e.g., TID buffer queue for STA 2 542
  • the SKB may be pushed to the HW BK queue 551 in the hardware queue 550.
  • the TX buffer is recycled back to the reserved TX buffer pool and the corresponding station's FIFO queue is scheduled. Otherwise, in the example, if a public buffer, the TX buffer is recycled or released back to the public TX buffer pool and the longest FIFO queue is scheduled.
  • FIG. 5B shows a diagram 500-a that illustrates an example of a reserved TX buffer pool 520-a that provides reserved buffers for each associated station.
  • the reserved TX buffer pool 520-a that may be an example of the reserved TX buffer pool 520 of FIG. 5A.
  • the reserved TX buffer pool 520-a may include reserved buffers 560, 563 for stations STA 1, STA N.
  • the reserved buffers 560, 563 may have the same number or amount of buffers available to each respective station. There may be other instances, however, where the number or amount of buffers available to different stations in the reserved buffers are different.
  • FIG. 6 shows a diagram 600 that illustrates another example of using a FIFO queue and reserved TX descriptors for each associated station.
  • FIG. 6 shows an SKB 610 and a WLAN driver 310-a that includes a UMAC 320-b and an LMAC 350-b.
  • the WLAN driver 310-a may be an example of the WLAN driver 310 of FIG. 3.
  • the UMAC 320-b and the LMAC 350-c may be examples of the UMACs 320 and 320-a and the LMACs 350, 350-a, and 350-b described above.
  • the UMAC 320-b includes a FIFO queue 620 having DATA FIFO queues 621, ..., 623 for stations STA 1, STA N, and an SKB 630.
  • the DATA FIFO queues 621, 623 may be the same or similar to the FIFO queues 420, 423 of FIG. 4.
  • the LMAC 350-c includes a buffer pool 640 having a reserved TX descriptors (Desc) pool 641 and a common TX descriptors pool 642.
  • the reserved TX descriptors pool 641 may be the same or similar to the reserved TX buffer pools 520 and 520-a of FIG. 5 A and/or 5B.
  • the common TX descriptors pool 642 may be the same or similar to the public TX buffer pool 530 of FIG. 5A.
  • the LMAC 350-c may also include a software TX descriptors queue 650 and a hardware queue 660.
  • the software TX descriptors queue 650 may be the same or similar to the software queue 540 of FIG. 5A
  • the hardware queue 660 may be the same or similar to the hardware queue 550 of FIG. 5A.
  • all the stations associated with an AP may share the common TX descriptor pool 641 in the LMAC 350-c.
  • Each station can get as many descriptors (e.g., buffers) from the common pool as available.
  • a reserved descriptor pool may be created that reserves a number of descriptors for the station.
  • the reserved TX descriptors pool 641 illustrates a collection of the reserved descriptors for all of the associated stations.
  • the number of reserved descriptors is determined by multiplying the maximum number of stations (MAX_STA_NUMBER) by the number of descriptors reserved for each station (RESERVED_TXDESC_PERSTA).
  • Each station can get up to RESERVED_TXDESC_PERSTA descriptors from the reserved TX descriptor pool 641.
  • a first step may be to get descriptor(s) from the reserved TX descriptors pool 641.
  • the station requires a number or amount of descriptors from the reserved pool that is more than RESERVED_TXDESC_PERSTA, then the additional descriptors may be obtained from the common TX descriptors pool 642.
  • the descriptor(s) may be obtained from common TX descriptors pool 642 and not from the reserved TX descriptors pool 641.
  • FIG. 6 also shows the use of a data FIFO queue in connection with providing a minimum bandwidth guarantee for associated stations in a WLAN.
  • the use of data FIFO queues described in FIG. 6 is similar to the use of FIFO queues described in FIG. 4.
  • a data FIFO queue is created or allocated (e.g., data FIFO queues 621, 623).
  • the maximum queue depth for each of the data FIFO queues may be MAX_QUEUE_DEPTH, which may be adaptable.
  • reserved descriptor schedule the corresponding station's data FIFO queue if the descriptor is a reserved descriptor (i.e., a descriptor from a reserved pool) or schedule the longest data FIFO queue if the descriptor is a common descriptor (i.e., a descriptor from a common pool).
  • PHY physical layer
  • this rate is guaranteed for the respective station, that station may end up using a significant amount of the AP's bandwidth, affecting the AP's performance with respect to the other associated stations.
  • a station when a station is abnormal, it may not be appropriate to guarantee a minimum bandwidth for that station. For example, a station with a low transmit rate or a high PER may not be operating or acting in a normal manner. Such a station may be considered to be in a non-typical or abnormal state and a minimum bandwidth may not be guaranteed for such a station.
  • FIG. 7 A shows a diagram 600 having a device 105-b for use in wireless communications that support a minimum bandwidth guarantee for associated stations in a WLAN.
  • the device 105-b may be an example of one or more aspects of one of the APs 105 and 105-a described with reference to FIG. 1 and/or 2.
  • the device 105-b, or portions of it, may also be a processor.
  • the device 105-b may include a receiver 710, a WLAN driver bandwidth manager 720, and/or a transmitter 730. Each of these components may be in communication with each other.
  • the receiver 710 may be or include an RF receiver.
  • the RF receiver may include separate receivers for the different bands.
  • the RF receiver may include a receiver (i.e., part of a radio or modem) operable to receive transmissions in one or more Wi-Fi bands (e.g., 2.4 GHz, 5 GHz).
  • the receiver 710 may be used to receive various types of data and/or control signals (i.e., transmissions) over one or more communication links of a wireless communications system, such as one or more communication links of the WLAN or Wi-Fi networks described with reference to FIG. 1 and/or 2.
  • the transmitter 730 may be or include an RF transmitter.
  • the RF transmitter may include separate transmitters for the different bands.
  • the RF transmitter may include a transmitter (i.e., part of a radio or modem) operable to transmit in one or more Wi-Fi bands (e.g., 2.4 GHz, 5 GHz).
  • the transmitter 730 may be used to transmit various types of data and/or control signals (i.e., transmissions) over one or more communication links of the WLAN or Wi-Fi networks described with reference to FIG. 1 and/or 2.
  • the WLAN driver bandwidth manger 720 is configured to allocate a pool of TX buffers (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641) for each associated station, to identify a number of TX buffers for transmission of a data frame to an associated station, and/or to select a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers.
  • a pool of TX buffers e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641
  • the WLAN driver bandwidth manger 720 is configured to allocate a public pool of TX buffers (e.g., public TX buffer pool 530, common TX descriptors pool 642) and to select set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
  • the WLAN driver bandwidth manger 720 is configured to adapt (e.g., increase, decrease) a number of TX buffers in the public pool of TX buffers.
  • the adaptation may occur at times other than during run time. While the total number of TX buffers in the public pool of TX buffers may remain constant during run time, the number of free TX buffers in the public pool of TX buffers may change during run time.
  • the WLAN driver bandwidth manger 720 is configured to release the TX buffers in the set selected from the public pool of TX buffers after transmission of the data frame to the associated station.
  • the WLAN driver bandwidth manger 720 may be configured to queue the data frame in the set of TX buffers into a corresponding TID buffer queue (e.g., TID buffer queues for STAs 541, 544, software queue 540, software TX descriptors queue 650).
  • the WLAN driver bandwidth manger 720 may be configured to push the data frame from the TID buffer queue to a hardware queue (e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554, hardware queue 550, hardware queue 660), where the data frame is retrieved from the hardware queue for transmission to the associated station.
  • a hardware queue e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554, hardware queue 550, hardware queue 660
  • the WLAN driver bandwidth manger 720 may be configured to map all TID buffers queues to four hardware queues (e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554).
  • the data frame may be pushed to one of the four hardware queues based on, for example, quality-of-service (QoS) information.
  • the data frame may include a unicast data frame.
  • the WLAN driver bandwidth manger 720 is configured to allocate an SKB FIFO queue (e.g., FIFO queues for STAs 420, ..., 423, DATA FIFO queues for STAs 621, 623) for each associated station.
  • the WLAN driver bandwidth manger 720 may be configured to determine whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmission, and/or transmit an SKB (e.g., through transmitters 730) when the SKB FIFO queue is determined to be empty.
  • the WLAN driver bandwidth manger 720 is configured to transmit the SKB when the SKB FIFO queue is determined to be empty by calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
  • a function e.g., dev_queue_xmit( )
  • the WLAN driver bandwidth manger 720 is configured to place the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, to call a function (e.g., ., dev_queue_xmit( )) to queue the SKB for transmission in the sequence order, to identify a return value of the called function, and/or to determine whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
  • the SKB corresponds to a unicast data frame.
  • the WLAN driver bandwidth manager 720 may be configured to implement one or more of the features regarding a minimum bandwidth guarantee for associated stations in a WLAN described above with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6.
  • FIG. 7B shows a diagram 700-a having a device 105-c for use in wireless communications that support a minimum bandwidth guarantee for associated stations in a WLAN.
  • the device 105-c may be an example of the device 105-b of FIG. 7A.
  • the device 105-c, or portions of it, may also be a processor.
  • the device 105-c may include the receiver 710, a WLAN driver bandwidth manager 720-a, and/or the transmitter 730. Each of these components may be in communication with each other.
  • the receiver 710 and the transmitter 730 are described above with respect to FIG. 7A.
  • the WLAN driver bandwidth manager 720-a may be an example of the WLAN driver bandwidth manager 720 of FIG. 7A, and may include a congestion monitor 740, a TX descriptors manager 750, and a data FIFO queue manager 770.
  • the TX descriptors manager 750 may include an allocation, identification, and selection module 760
  • the data FIFO queue manager 780 may include an allocation and determination module 780. Each of these components may be in communication with each other.
  • the congestion monitor 740 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to a real-time monitoring mechanism to detect and/or manage traffic congestion.
  • the congestion monitor 740 may be configured to get accurate and real-time information of ingress/egress traffic at the WLAN port for each station.
  • the congestion monitor 740 may be used to implement a system timer on a WLAN driver (e.g., WLAN driver 310), during a timeout period and accumulate each station's total bytes and total packets received by WLAN driver. This information may be used as the ingress traffic information.
  • the congestion monitor 740 may accumulate each station's total bytes and total packets that are wirelessly transmitted.
  • the congestion monitor 740 may be configured to calculate each station's ingress throughput, egress throughput, packet loss, and/or packet loss ratio according to the total bytes/packets and timeout duration. If one station's ingress throughput is higher than egress throughput, the station is in a congested state because the reserved buffers or descriptors allocated for that station are being used and no free common buffer or descriptor is available to be used. Once the WLAN driver receives a packet, if the station's traffic is higher than a minimum bandwidth setting, the station is on congested state as determined by the congestion monitor 740, and the WLAN driver has no free descriptors, then the packet may be discarder.
  • the TX descriptors manager 750 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to the use of reserved and/or common pools of buffers or descriptors (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641, public TX buffer pool 530, common TX descriptors pool 642).
  • the allocation, identification, and selection module 760 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to allocating, identifying, and selecting buffers or descriptors.
  • the data FIFO queue manager 750 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to the use of FIFO queues in (e.g., FIFO queues for STAs 420, ..., 423, DATA FIFO queues for STAs 621, ..., 623).
  • the allocation and determination module 780 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to allocating FIFO queues to each associate station and determining whether the FIFO queues are empty for upper layer data frame transmissions.
  • the components of the devices 105-b and 105-c may, individually or collectively, be implemented with one or more application-specific integrated circuits (ASICs) adapted to perform some or all of the applicable functions in hardware.
  • ASICs application-specific integrated circuits
  • the functions may be performed by one or more other processing units (or cores), on one or more integrated circuits.
  • other types of integrated circuits may be used (e.g., Structured/Platform ASICs, Field Programmable Gate Arrays (FPGAs), and other Semi- Custom ICs), which may be programmed in any manner known in the art.
  • the functions of each unit may also be implemented, in whole or in part, with instructions embodied in a memory, formatted to be executed by one or more general or application-specific processors.
  • FIG. 8 shows a diagram 800 that illustrates a wireless terminal or station 115-b configured for communicating with an AP that supports minimum bandwidth guarantees for associated stations.
  • the station 115-b may have various other configurations and may be included or be part of a personal computer (e.g., laptop computer, netbook computer, tablet computer, etc.), a cellular telephone, a PDA, a digital video recorder (DVR), an internet appliance, a gaming console, an e-readers, etc.
  • the station 115-b may have an internal power supply (not shown), such as a small battery, to facilitate mobile operation.
  • the station 115-b may be an example of the stations 115 and 115-a of FIG. 1 and/or 2.
  • the station 115-b may include a processor 810, a memory 820, transceiver 840, and antennas 850. Each of these components may be in communication with each other, directly or indirectly, over one or more buses 815.
  • the memory 820 may include random access memory (RAM) and read-only memory (ROM).
  • the memory 820 may store computer-readable, computer-executable software (SW) code 825 containing instructions that are configured to, when executed, cause the processor 810 to perform various functions described herein for handling communications with an AP.
  • SW software
  • the software code 825 may not be directly executable by the processor 810 but be configured to cause the computer (e.g., when compiled and executed) to perform functions described herein.
  • the processor 810 may include an intelligent hardware device, e.g., a central processing unit (CPU), a microcontroller, an ASIC, etc.
  • the processor 810 may process information received through the transceiver 840.
  • the processor 810 may process information to be sent to the transceiver 840 for transmission through the antennas 850.
  • the transceiver 840 may be configured to communicate bi-directionally with access points (e.g., access points 105).
  • the transceiver 840 may be implemented as one or more transmitters and one or more separate receivers.
  • the transceiver 840 may support communications with a WLAN or Wi-Fi network.
  • the transceiver 840 may include a modem configured to modulate the packets and provide the modulated packets to the antennas 850 for transmission, and to demodulate packets received from the antennas 850.
  • the station 115-e may further include a communications manager 830.
  • the communications manager 830 may manage communications with various network devices (e.g., access points).
  • the communications manager 830 may be a component of the station 115-b in communication with some or all of the other components of the station 115-b over the one or more buses 815.
  • functionality of the communications manager 830 may be implemented as a component of the transceiver 840, as a computer program product, and/or as one or more controller elements of the processor 810.
  • FIG. 9 shows a diagram 900 that illustrates an AP 105-d.
  • the AP 105-d may be an example of the APs 105, 105-a, 105-b, and 105-c of FIG. 1, 2, 7A, and/or 7B.
  • the AP 105-d may be configured to implement at least some of the features and functions described above with respect to FIGS. 1-7B.
  • the AP 105-d may include a processor 910, a memory 920, transceiver 930, antennas 940, and a WLAN driver bandwidth manager 720-b.
  • the WLAN driver bandwidth manager 720-b may be an example of the WLAN driver bandwidth manager 720 and 720-a of FIG. 7 A and/or 7B.
  • the AP 105-d may also include one or both of a network device communications module 960 and a network communications module 970. Each of these components may be in communication with each other, directly or indirectly, over one or more buses 915.
  • the memory 920 may include RAM and ROM.
  • the memory 920 may also store computer-readable, computer-executable software (SW) code 925 containing instructions that are configured to, when executed, cause the processor 910 to perform various functions described herein for a minimum bandwidth guarantee for associated stations.
  • SW software
  • the software code 925 may not be directly executable by the processor 910 but be configured to cause the computer, e.g., when compiled and executed, to perform functions described herein.
  • the processor 910 may include an intelligent hardware device, e.g., a CPU, a microcontroller, an ASIC, etc.
  • the processor 910 may process information received through the transceiver 930, the network device communications module 960, and/or the network communications module 970.
  • the processor 910 may also process information to be sent to the transceiver 930 for transmission through the antennas 940, to the network device communications module 960, and/or to the network communications module 970.
  • the processor 910 may handle, alone or in connection with another the WLAN driver bandwidth manager 720-b, various aspects for a minimum bandwidth guarantee for associated stations.
  • the WLAN driver(s) of the AP 105-d may be executed or may operate in connection with the processor 910, for example, [0083]
  • the transceiver 930 may include a modem configured to modulate the packets and provide the modulated packets to the antennas 940 for transmission, and to demodulate packets received from the antennas 940.
  • the transceiver 930 may be implemented as one or more transmitters and one or more separate receivers.
  • the transceiver 930 may be configured to communicate bi-directionally, via the antennas 940, with one or more associated stations.
  • the AP 105-d may include multiple antennas 940.
  • the AP 105-d may communicate with a network 980 through the network communications module 970.
  • the network 980 may be part of a WLAN or Wi-Fi network.
  • the AP 105-d may communicate with other network devices, such as the network devices 105-e and 105-f, using the network device communications module 960, the transceivers 930, and/or the network communications module 970. [0084] According to the architecture of FIG.
  • the AP 105-d may further include a communications manager 950.
  • the communications manager 950 may manage communications with stations (e.g., stations 115) and/or other network devices.
  • the communications manager 950 may be in communication with some or all of the other components of the AP 105-d via the bus or buses 915.
  • functionality of the communications manager 950 may be implemented as a component of the transceiver 930, as a computer program product, and/or as one or more controller elements of the processor 910 and/or of the WLAN driver bandwidth manager 720-b.
  • the WLAN driver bandwidth manager 720-b may be configured to perform various aspects related to a minimum bandwidth guarantee for associated stations. Moreover, some or all of the functionality of the WLAN driver bandwidth manager 720-b may be performed by the processor 910 and/or in connection with the processor 910.
  • FIG. 10 is a flow chart illustrating an example of a method 1000 for wireless communications.
  • the method 1000 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9.
  • one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
  • a pool of TX buffers (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641) is allocated for each associated station.
  • a number of TX buffers is identified for transmission of a data frame to an associated station.
  • a set of TX buffers is selected from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers.
  • a public pool of TX buffers e.g., public TX buffer pool 530, common TX descriptors pool 642
  • the set of TX buffers may be selected from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
  • a total number of TX buffers in the public pool of TX buffers may be adapted (e.g., increased, decreased) at a time other than run time.
  • the method includes releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
  • the method may include queuing the data frame in the set of TX buffers into a corresponding TID buffer queue (e.g., TID buffer queues for STAs 541, 544, software queue 540, software TX descriptors queue 650).
  • the method may include pushing the data frame from the TID buffer queue to a hardware queue (e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554, hardware queue 550, hardware queue 660), where the data frame is retrieved from the hardware .queue for transmission to the associated station.
  • the data frame may include a unicast data frame.
  • FIG. 11 is a flow chart illustrating an example of a method 1100 for wireless communications. For clarity, the method 1100 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9.
  • one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
  • a pool of TX buffers e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641 is allocated for each associated station.
  • a public or common pool of TX buffers (e.g., public TX buffer pool 530, common TX descriptors pool 642) is also allocated.
  • a number of TX buffers is identified for transmission of a data frame to an associated station.
  • FIG. 12 is a flow chart illustrating an example of a method 1200 for wireless communications. For clarity, the method 1200 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9. In one embodiment, one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
  • an SKB FIFO queue (e.g., FIFO queues for STAs 420, 423, DATA FIFO queues for STAs 621, ..., 623) may be allocated for each associated station.
  • an SKB is transmitted (e.g., transmitters 730) when the SKB FIFO queue is determined to be empty.
  • transmitting the SKB when the SKB FIFO queue is determined to be empty includes calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
  • a function e.g., dev_queue_xmit( )
  • the method includes placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission in the sequence order, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
  • the SKB corresponds to a unicast data frame.
  • FIG. 13 is a flow chart illustrating an example of a method 1300 for wireless communications.
  • the method 1300 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9.
  • one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
  • an SKB FIFO queue (e.g., FIFO queues for STAs 420, 423, DATA FIFO queues for STAs 621, ..., 623) may be allocated for each associated station.
  • a determination is made as to whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions.
  • an SKB is transmitted (e.g., transmitters 730) when the SKB FIFO queue is determined to be empty, where the transmission includes calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
  • a function e.g., dev_queue_xmit( )
  • the methods 1000, 1100, 1200, and 1300 may provide for wireless communications. It should be noted that each of the methods 1000, 1100, 1200, and 1300 is just one implementation and that the operations of the methods 1000, 1100, 1200, and 1300 may be rearranged or otherwise modified such that other implementations are possible. In some instances, the operations of two or more of the methods 1000, 1100, 1200, and 1300 may be combined to produce other implementations.
  • Information and signals may be represented using any of a variety of different technologies and techniques.
  • data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
  • a general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
  • a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
  • the functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Other examples and implementations are within the scope and spirit of the disclosure and appended claims. For example, due to the nature of software, functions described above can be implemented using software executed by a processor, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations.
  • Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another.
  • a storage medium may be any available medium that can be accessed by a general purpose or special purpose computer.
  • computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special- purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium.
  • Disk and disc include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

Methods, devices, and apparatuses are described for wireless communications to provide a minimum bandwidth to each of the stations on a wireless local area network (WLAN). In one aspect, a pool of transmit (TX) buffers may be allocated to each associated station. Then, a number of TX buffers for transmission of a data frame to an associated station is identified and a set of TX buffers is selected from the pool of TX buffers corresponding to the associated station. A public pool of TX buffers may also be allocated and the set of TX buffers is selected from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of buffers in the pool of buffers corresponding to the associated station. In another aspect, a socket buffer (SKB) first-in-first-out (FIFO) queue may be allocated for each associated station. Then, a determination is made as to whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions and an SKB may be transmitted when the SKB FIFO queue is determined to be empty.

Description

SYSTEMS AND METHODS FOR PROVIDING A DESIRED BANDWIDTH IN A
WIRELESS NETWORK
BACKGROUND
[0001] Wireless communications networks are widely deployed to provide various communication services such as voice, video, packet data, messaging, broadcast, and the like. These wireless networks may be multiple-access networks capable of supporting multiple users by sharing the available network resources.
[0002] A wireless communication network may include a number of network devices such as access points (APs) that can support communication for a number of wireless devices. A wireless device may communicate with a network device bi-directionally. For example, in a wireless local area network (WLAN), a wireless device (e.g., a station or STA) may communicate with an AP via downlink and uplink. The downlink (or forward link) refers to the communication link from the AP to the STA, and the uplink (or reverse link) refers to the communication link from the STA to the AP. [0003] As WLANs or Wi-Fi networks become more widespread, the number of stations that associate to a particular AP tend to increase. An AP with a large number of associated stations tends to provide poor Wi-Fi performance, especially when there are stations handling a heavy load and those stations occupy almost all of the bandwidth available to the AP. Therefore, there is a need to balance the traffic and bandwidth to the associated stations during periods of congestion.
SUMMARY
[0004] The described features generally relate to one or more improved methods, devices, and/or systems for wireless communications.
[0005] One aspect of providing a desired bandwidth to each of the stations associated with an AP on a WLAN or Wi-Fi network during periods of congestion may include using a realtime monitor mechanism to detect congested traffic and, when a WLAN driver in the AP enters a congested state and there are no free descriptors or buffers available to transmit data, packets may be discarded from congested traffic to ensure packets from low traffic can be transmitted. Another aspect may include reserving or allocating a number of descriptors or buffers for each station such that when one station runs into congested traffic and the WLAN driver in the AP does not have any available common descriptors, other stations can use reserved descriptors or buffers to transmit data. Yet another aspect may include, when a particular station ingress traffic is lower than the minimum setting and the WLAN driver in the AP does not have any available descriptors or buffers, creating a data queue for each of the stations to push packets to the data queue and ensure packets from low traffic will not be discarded by the WLAN driver.
[0006] A method for wireless communications includes allocating a pool of transmit (TX) buffers for each associated station. The method also includes identifying a number of TX buffers for transmission of a data frame to an associated station. The method further includes selecting a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers. The method may include allocating a public pool of TX buffer, and selecting the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station. In some embodiments, the method includes adapting a total number of TX buffers in the public pool of TX buffers at a time other than run time. In some embodiments, the method includes releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station. [0007] In some embodiments, the method includes queuing the data frame in the set of TX buffers into a corresponding traffic identifier (TID) buffer queue. The method may further include pushing the data frame from the TID buffer queue to a hardware queue, where the data frame is retrieved from the hardware queue for transmission to the associated station. The data frame may include a unicast data frame. [0008] A method for wireless communications may include allocating a socket buffer (SKB) first-in-first-out (FIFO) queue for each associated station. The method also includes determining whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions. The method further includes transmitting an SKB when the SKB FIFO queue is determined to be empty. Transmitting the SKB when the SKB FIFO queue is determined to be empty may include calling a function to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed. The method may further include placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, calling a function to queue the SKB for transmission in the sequence order, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed. The SKB may correspond to a unicast data frame.
[0009] An apparatus for wireless communications includes means for allocating a pool of TX) buffers for each associated station. The apparatus also includes means for identifying a number of TX buffers for transmission of a data frame to an associated station. The apparatus further includes means for selecting a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers. The apparatus may include means for allocating a public pool of TX buffers, and means for selecting the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station. In some embodiments, the apparatus includes means for adapting a total number of TX buffers in the public pool of TX buffers at a time other than run time. In some embodiments, the apparatus includes means for releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and means for recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station. [0010] In some embodiments, the apparatus includes means for queuing the data frame in the set of TX buffers into a corresponding TID buffer queue. The apparatus may further include means for pushing the data frame from the TID buffer queue to a hardware queue, where the data frame is retrieved from the hardware queue for transmission to the associated station. The data frame may include a unicast data frame.
[0011] An apparatus for wireless communications includes means for allocating an SKB FIFO queue for each associated station. The apparatus also includes means for determining whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions. The apparatus may further include means for transmitting an SKB when the SKB FIFO queue is determined to be empty. The means for transmitting the SKB when the SKB FIFO queue is determined to be empty may include means for calling a function to queue the SKB for transmission, means for identifying a return value of the called function, and means for determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed. The apparatus may further include means for placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, means for calling a function to queue the SKB for transmission in the sequence order, means for identifying a return value of the called function, and means for determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed. The SKB may correspond to a unicast data frame.
[0012] An apparatus for wireless communications includes a processor, memory in electronic communication with the processor, and instructions stored in the memory. The instructions are executable by the processor to allocate a pool of TX buffers for each associated station. The instructions are also executable by the processor to identify a number of TX buffers for transmission of a data frame to an associated station. The instructions are further executable by the processor to select a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers. The instructions may be executable by the processor to allocate a public pool of TX buffers, and to select the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station. In some embodiments, the instructions are executable by the processor to adapt a total number of TX buffers in the public pool of TX buffers at a time other than run time. In some embodiments, the instructions are executable by the processor to release the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and to recycle the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
[0013] In some embodiments, the instructions are executable by the processor to queue the data frame in the set of TX buffers into a corresponding TID buffer queue. The instruction may be executable by the processor to push the data frame from the TID buffer queue to a hardware queue, where the data frame is retrieved from the hardware queue for transmission to the associated station. The data frame may include a unicast data frame.
[0014] An apparatus for wireless communications includes a processor, memory in electronic communication with the processor, and instructions stored in the memory. The instructions are executable by the processor to allocate an SKB FIFO queue for each associated station. The instructions are also executable by the processor to determine whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions. The instructions are further executable by the processor to transmit an SKB when the SKB FIFO queue is determined to be empty. The instructions executable by the processor to transmit the SKB when the SKB FIFO queue is determined to be empty are executable by the processor to call a function to queue the SKB for transmission, to identify a return value of the called function, and to determine whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed. The instructions are executable by the processor to place the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, to call a function to queue the SKB for transmission in the sequence order, to identify a return value of the called function, and to determine whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed. The SKB may correspond to a unicast data frame.
[0015] The foregoing has outlined rather broadly the features and technical advantages of examples according to the disclosure in order that the detailed description that follows may be better understood. Additional features and advantages will be described hereinafter. The conception and specific examples disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Such equivalent constructions do not depart from the spirit and scope of the appended claims. Features which are believed to be characteristic of the concepts disclosed herein, both as to their organization and method of operation, together with associated advantages will be better understood from the following description when considered in connection with the accompanying figures. Each of the figures is provided for the purpose of illustration and description only, and not as a definition of the limits of the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] A further understanding of the nature and advantages of the present disclosure may be realized by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
[0017] FIG. 1 shows a diagram that illustrates an example of a wireless local area network (WLAN) according to various embodiments;
[0018] FIG. 2 shows a diagram that illustrates an example of an AP with a large number of associated stations according to various embodiments;
[0019] FIG. 3 shows a diagram that illustrates an example of a WLAN driver according to various embodiments;
[0020] FIG. 4 shows a diagram that illustrates an example of using a FIFO queue for each associated station according to various embodiments; [0021] FIG. 5A shows a diagram that illustrates an example of reserved and common pools TX buffers according to various embodiments;
[0022] FIG. 5B shows a diagram that illustrates an example of reserved TX buffers for each associated station according to various embodiments; [0023] FIG. 6 shows a diagram that illustrates another example of using a FIFO queue and reserved TX descriptors for each associated station according to various embodiments;
[0024] FIGS.7 and 7B show diagrams that illustrate examples of devices (e.g., APs) for use in wireless communications according to various embodiments; [0025] FIG. 8 shows a block diagram that illustrates an example of station architecture according to various embodiments;
[0026] FIG. 9 shows a block diagram that illustrates an example of an AP architecture according to various embodiments; and
[0027] FIGS. 10-13 are flowcharts of examples of methods for providing a minimum bandwidth guarantee for each associated station on a WLAN (e.g., at an AP) according to various embodiments.
DETAILED DESCRIPTION
[0028] Described embodiments are directed to methods, devices, and apparatuses for wireless communications that provide a desired bandwidth to stations associated with an AP in a WLAN. WLANs are networks based on carrier sense multiple access with collision avoidance (CSMA/CA) to access the medium and no coordinator manages the transmission opportunity. When the medium is idle, stations have the right to transmit data and they may compete to access the sharing medium. For each of the stations the transmission of data is random and, consequently, the more stations that try to access the shared medium, the higher the collision rate tends to be. Therefore, the larger the number of stations that are associated with an AP (e.g., an AP may associate with 32 stations at the same time), the poorer overall performance of the AP becomes. For example, stations with heavy traffic may occupy almost all of the bandwidth available to the AP such that stations with low traffic maybe not have the opportunity to transmit frames, which can cause packet loss and/or a transmission control protocol (TCP) connection to drop. Therefore, it may be desirable to balance the bandwidth available at the AP and to assure that there is a minimum transmission bandwidth for each associated station.
[0029] Congestion between two or more stations trying to access the medium typically results in the loss of packets. For example, an AP may take high ingress traffic for one station, but the WLAN port may not be able to provide enough bandwidth to the station because of a slow egress link. On the transmit path of the AP's WLAN driver, each frame may require a descriptor to queue the data buffer on hardware. However, because the stations generally share a common descriptors pool, the congested traffic may consume the free descriptors from the common pool and may cause the WLAN driver enter into a congested state, with no free descriptors to transmit data. In this instance, it may not matter whether the packet comes from congested traffic or low traffic since it would be dropped at the ingress of the WLAN driver.
[0030] To avoid or reduce (e.g., minimize) the effects of congestion and to realize a desired (e.g., minimum) bandwidth guarantee feature for each of the stations in the WLAN driver in the AP, the WLAN driver may be configured to perform or enable one or more of the following three features. First, establish a real-time monitor mechanism to detect the congested traffic when the WLAN driver enters a congested state and there are no free descriptors to transmit data. At this point, the WLAN driver may discard packets from congested traffic to ensure packets from low traffic can be transmitted. Second, a number of descriptors may be reserved for each station such that when one station runs into congested traffic and the WLAN driver has no free common descriptor, then other stations may still get reserved buffers to transmit data. Third, a data queue may be created for each station such that if the station's ingress traffic is lower than the minimum bandwidth setting and the WLAN driver has no free descriptors, then packets will not be dropped but instead will be pushed to the data queue to ensure that packets from low traffic will not be discarded in the WLAN driver. References made herein to a descriptor may typically refer to a logical construct or the like that corresponds, represents, or identifies one or more buffers. Therefore, the terms descriptor and buffer may be used interchangeably throughout the disclosure. [0031] The various techniques described herein for wireless communications using a multidimensional algorithm for roaming are described with respect to WLAN or Wi-Fi networks. A WLAN or Wi-Fi network may refer to a network that is based on the protocols described in the various IEEE 802.11 standards (e.g., IEEE 802.11a/g, 802.11η, 802.1 lac, 802.11ah, etc.), for example. However, the same or similar techniques may also be used in any wireless network (e.g., a cellular network). For example, the same or similar techniques may be used for various wireless communications systems such as cellular wireless systems, Peer-to-Peer wireless communications, ad hoc networks, satellite communications systems, and other systems. The terms "system" and "network" are often used interchangeably. These wireless communications systems may employ a variety of radio communication technologies such as Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal FDMA (OFDMA), Single-Carrier FDMA (SC-FDMA), and/or other radio technologies. Generally, wireless communications are conducted according to a standardized implementation of one or more radio communication technologies called a Radio Access Technology (RAT). A wireless communications system or network that implements a Radio Access Technology may be called a Radio Access Network (RAN).
[0032] Examples of Radio Access Technologies employing CDMA techniques include CDMA2000, Universal Terrestrial Radio Access (UTRA), etc. CDMA2000 covers IS-2000, IS-95, and IS-856 standards. IS-2000 Releases 0 and A are commonly referred to as CDMA2000 IX, IX, etc. IS-856 (TIA-856) is commonly referred to as CDMA2000 lxEV- DO, High Rate Packet Data (HRPD), etc. UTRA includes Wideband CDMA (WCDMA) and other variants of CDMA. Examples of TDMA systems include various implementations of Global System for Mobile Communications (GSM). Examples of Radio Access Technologies employing OFDM and/or OFDMA include Ultra Mobile Broadband (UMB), Evolved UTRA (E-UTRA), Wi-Fi, IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDM, etc. UTRA and E-UTRA are part of Universal Mobile Telecommunication System (UMTS). 3GPP Long Term Evolution (LTE) and LTE- Advanced (LTE-A) are new releases of UMTS that use E-UTRA. UTRA, E-UTRA, UMTS, LTE, LTE-A, and GSM are described in documents from an organization named "3rd Generation Partnership Project" (3GPP). CDMA2000 and UMB are described in documents from an organization named "3rd Generation Partnership Project 2" (3GPP2). The techniques described herein may be used for the systems and radio technologies mentioned above as well as other systems and radio technologies.
[0033] Thus, the following description provides examples, and is not limiting of the scope, applicability, or configuration set forth in the claims. Changes may be made in the function and arrangement of elements discussed without departing from the spirit and scope of the disclosure. Various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, the methods described may be performed in an order different from that described, and various steps may be added, omitted, or combined. Also, features described with respect to certain embodiments may be combined in other embodiments. [0034] FIG. 1 shows a diagram 100 that includes an example of a WLAN or Wi-Fi network. An AP 105 (i.e., network device) may generate a wireless local area network, such as an IEEE 802.11 network, with client devices 115. The client devices 115, also referred to as wireless stations, stations, or STAs, may be distributed or deployed within a coverage area 120 of the WLAN. Each of the stations 115 may associate and communicate (using communication links 125) with one of the APs 105. Each AP 105 has a coverage area 120 such that stations 115 within that area can typically communicate with the AP 105. As shown in FIG. 1, a station 115 can be covered by more than one AP 105 and can therefore associate with different APs at different times depending on which one provides a more suitable connection. A set of stations 115 that communicate with each other may be referred to as a basic service set (BSS). An extended service set (ESS) is a set of connected BSSs and a distribution system (DS) (not shown) is used to connect access points in an extended service set.
[0035] When an AP 105 has a large number of associated stations 115, the performance of the AP 105 may degrade. That is, because the bandwidth of the AP 105 is limited, those stations with higher bandwidth requirements may not allow other stations to be allocated a sufficient amount of bandwidth for operation. This type of congestion can result in loss of packets or loss of connection. To reduce the effects of congestion and to realize a minimum bandwidth guarantee feature for each of the stations associated to the AP 105, a WLAN driver in the AP 105 may be configured include various features described below in connection with FIGS. 2-13.
[0036] FIG. 2 shows a diagram 200 that illustrates a WLAN having multiple stations 115-a associated with an AP 105-a through communication links 125-a. The stations 115-a may be examples of the stations 115 of FIG. 1. Similarly, the AP 105-a may be an example of the APs 105 of FIG. 1. [0037] When number of stations 115-a associated with the AP 105-a is large traffic congestion is likely to occur, which results in poor performance of the AP 105-a. In the example of FIG. 2, the AP 105-a has up to N associated stations. In some embodiments, an AP may be able to handle up to 32 associated stations, although a higher number of associated stations may be possible in other embodiments. Each station (e.g., STA 1, STA 2, STA 3, and STA 4) has a corresponding bandwidth (e.g., BW 1, BW 2, BW 3, and BW 4) for communicating with the AP 105-a. When some of the stations use a large portion of the bandwidth available at the AP 105-a, other stations may not be provided with a minimum or sufficient bandwidth to guarantee that packets or connections will not be dropped. To address this situation, a driver in the AP 105-a (e.g., a WLAN driver) may be configured to provide one or more features that enable a minimum bandwidth to each of the associated stations such that no station is starved of bandwidth because of other stations with high traffic. Additional details of the operation of the WLAN driver are provide below in connection with FIGS. 3-13.
[0038] FIG. 3 shows a diagram 300 that illustrates a WLAN driver 310 for use with an AP (e.g., AP 105) to provide a minimum bandwidth guarantee for associated stations. The WLAN driver 310 may operate in one or more components of an AP (e.g., processor 910 and/or memory 920 of FIG. 9). The WLAN driver 310 may include a media access control (MAC) software that distinguishes between layers. For example, the WLAN driver 310 may include an upper MAC (UMAC) 320 and a lower MAC (LMAC) 350. The UMAC 320 and the LMAC 350 may run or execute in the same processor or in different processors (e.g., the UMAC 320 may run on a host processor and the LMAC 350 may run on a wireless chip set, or in another example, the UMAC 320 and the LMAC 350 are two separate software modules that run on the same host processor). The various aspects described herein for a WLAN driver to implement features that allow for a minimum bandwidth guarantee for associated stations may involve operations associated with one or both of the UMAC 320 and the LMAC 350.
[0039] FIG. 4 shows a diagram 400 that illustrates an example of using a FIFO queue for each associated station according to various embodiments. FIG. 4 shows a socket buffer (SKB 1) 410, a UMAC 320-a, and an LMAC 350-a. The UMAC 320-a and the LMAC 350-a may be respective examples of the UMAC 320 and the LMAC 350 of FIG. 3. [0040] The UMAC 320-a is shown with first-in-first-out (FIFO) queues 420, ..., 423 for stations STA 1, STA N. Also shown in the UMAC 320-a are an SKB2 430 and an SKB3 440. The UMAC 320-a may exchange information with the LMAC 350-a through function or virtual interfaces 450 and 460. For the function or virtual interface 450, the UMAC 320-a may provide a callback function when the LMAC 350-a transmit is complete and may call the callback function to scheduled the FIFO queue. For the function or virtual interface 460, the LMAC 350-a may provide an application programming interface (API) to call the function dev_queue_xmit to transmit data, and if the LMAC 350-a does not provide the appropriate resources the function return may indicate a failed call.
[0041] In the example of FIG. 4, an SKB FIFO queue (or simply a FIFO queue) is set up in the UMAC 320-a for each associated station. The maximum queue depth may be defined by MAX_QUEUE_DEPTH. When the upper layer transmits unicast data frames, a first step may be to check the corresponding station's FIFO queue (e.g., for SKB1 410 the corresponding queue is FIFO queue for STAl 420). When the queue is empty, the SKB may be transmitted according with a normal or typical process. Function dev_queue_xmit may be called and the return value of dev_queue_xmit may be checked. When the return value is not OK, then some conditions may need to be checked to determine whether to discard the frame or insert to the FIFO queue.
[0042] When the corresponding FIFO queue is not empty, to be able to keep the sequence order, the new SKB is queued to the tail of the FIFO queue, and then the function dev_queue_xmit may be loop called to transmit the SKB from the FIFO queue in the appropriate order. The return value of dev_queue_xmit may be checked and if not OK, the loop and call function may be broken to determine whether to discard the frame or insert to the head of the FIFO queue then return.
[0043] When the transmission is complete and the transmit buffer freed (if the buffer is a reserved transmit buffer), then the corresponding station's FIFO queue may be scheduled. If a public transmit buffer, the longest FIFO queue may be scheduled. When scheduling the FIFO queue, loop calling the function dev_xmit_queue to transmit the SKB from the FIFO queue in the appropriate order is performed. The return value of dev_xmit_queue may be checked and if the value is not OK, then break the loop and call function may be broken to determine whether to discard the frame or insert it to the head of the FIFO, then return. [0044] One approach to determine whether to discard the frame or push it to the FIFO queue is to first check the ingress throughput. In one example, if the ingress throughput is higher than a minimum bandwidth setting, then the frame may be discarded. Otherwise, in the example, to guarantee a minimum bandwidth, the frame can be pushed to the FIFO queue to ensure each frame can be transmitted (instead of being discarded inappropriately). In another example, the station's mode may be checked. If the station is compatible with IEEE 802.11b, there may be no need to guarantee the minimum bandwidth, and therefore the frame may be allow to drop. The station's current data rate and PER may also be checked to calculate a current throughput. When the calculated throughput is lower than a threshold, the frame may again be discarded. Otherwise, the frame may be pushed to respective the (SKB) FIFO queue. [0045] Based on the description provided above, particular examples of some of the operations associated with FIG. 4 may now be described. In some cases, the FIFO Queue for STA 1 420 may not be empty. In such cases, the SKB1 410 from the upper layer may be pushed to the tail of FIFO queue for STA 1 420. In addition, the UMAC 320-a may call function dev_queue_xmit, transmit SKB3 440 to the LMAC 350-a. If that fails, the current throughput may be checked and if found to be lower than the minimum bandwidth, SKB3 440 may be pushed to the FIFO queue for STA 3 422. Moreover, when the transmission is complete (e.g., signal 450), the header for SKB2 430 may be popped from the FIFO queue for STA 2 421. Then, function dev_queue_xmit may be called and, if it fails, then SKB2 430 may be inserted to the header of the FIFO queue for STA 2 421. [0046] Multicast data frame and management frame may not be considered. Instead, unicast data is typically considered for the feature illustrated in the example of FIG. 4.
[0047] FIG. 5A shows a diagram 500 that illustrates an example of reserved and common pools TX buffers according to various embodiments. FIG. 5A shows an SKB 510 and an LMAC 350-b. The LMAC 350-b may be an example of the LMACs 350 and 350-a of FIG. 3 and/or 4. The LMAC 350-b may include a reserved transmission (TX) buffer pool 520, a public TX buffer pool 530, a software queue 540, and a hardware queue 550. The software queue 540 may include traffic identifier (TID) buffer queues 541, 544 for stations STA 1, STA N. The hardware queue 550 may include a hardware background (HW BK) queue 551, a HW best effort (BE) queue 552, a HW video (VI) queue 553, and a HW voice (VO) queue 554. [0048] In the example of FIG. 5A, transmission buffers or descriptors are implemented using two separate pools, the reserved TX buffer pool 520 and the public TX buffer pool 530. The number of the reserved TX buffers (ATH_RESERVED_TX_BUF) is based on the maximum number of stations (MAX_STA_NUMBER) and the number of buffers reserved for each station (RESERVED_TXBUF_PERSTA). The number of the public TX buffer is ATH_PUBLIC_TX_BUF.
[0049] When transmitting a unicast data frame, the first step may include getting the needed buffer(s) from the reserved TX buffer pool 520. If the number of the assigned TX buffer for the appointed station is more than or equal to the RESERVED_TXBUF_PERSTA, then any additional buffer(s) needed may have to be obtained from the public TX buffer pool 530. When the transmission is complete, the public TX buffers may be recycled or released to public TX buffer pool 530 and the reserved TX buffers may again be made available to the respective station through the reserved TX buffer pool 520. When transmitting a multicast data frame, the TX buffers may be obtained from the public TX buffer pool 530. In one embodiment, when the TX buffer is recycled or released and if the TX buffer is from a reserved pool of buffers (e.g., reserved TX buffer pool 520), scheduling of the TX buffer's corresponding station's FIFO is triggered. Otherwise, in the embodiment, if the TX buffer is from a public pool of buffers (e.g., public TX buffer pool 530), scheduling the longest FIFO queue is triggered. [0050] Based on the description provided above, a particular example of some of the operations associated with FIG. 5 may now be described. When SKB 510 is to be transmitted, the TX buffers may first be obtained from the reserved TX buffer pool 520. If the number or amount of TX buffers needed is less than RESERVED_TXBUF_PERSTA there is no need to access buffers from the public TX buffer pool 520. Otherwise, any additional TX buffers may be obtained from the public TX buffer pool 530. The SKB 510 may be queued to the respective TID buffer queue (e.g., TID buffer queue for STA 2 542) in the software queue 540. Then, the SKB may be pushed to the HW BK queue 551 in the hardware queue 550. When transmission of SKB 510 is complete (e.g., out of the hardware queue), then the TX buffers used to transmit the SKB 510 may be released or recycled. For example, if a reserved buffer, the TX buffer is recycled back to the reserved TX buffer pool and the corresponding station's FIFO queue is scheduled. Otherwise, in the example, if a public buffer, the TX buffer is recycled or released back to the public TX buffer pool and the longest FIFO queue is scheduled.
[0051] FIG. 5B shows a diagram 500-a that illustrates an example of a reserved TX buffer pool 520-a that provides reserved buffers for each associated station. The reserved TX buffer pool 520-a that may be an example of the reserved TX buffer pool 520 of FIG. 5A. The reserved TX buffer pool 520-a may include reserved buffers 560, 563 for stations STA 1, STA N. In some instances, the reserved buffers 560, 563 may have the same number or amount of buffers available to each respective station. There may be other instances, however, where the number or amount of buffers available to different stations in the reserved buffers are different.
[0052] FIG. 6 shows a diagram 600 that illustrates another example of using a FIFO queue and reserved TX descriptors for each associated station. FIG. 6 shows an SKB 610 and a WLAN driver 310-a that includes a UMAC 320-b and an LMAC 350-b. The WLAN driver 310-a may be an example of the WLAN driver 310 of FIG. 3. Similarly, the UMAC 320-b and the LMAC 350-c may be examples of the UMACs 320 and 320-a and the LMACs 350, 350-a, and 350-b described above.
[0053] The UMAC 320-b includes a FIFO queue 620 having DATA FIFO queues 621, ..., 623 for stations STA 1, STA N, and an SKB 630. The DATA FIFO queues 621, 623 may be the same or similar to the FIFO queues 420, 423 of FIG. 4. The LMAC 350-c includes a buffer pool 640 having a reserved TX descriptors (Desc) pool 641 and a common TX descriptors pool 642. In some instances, the reserved TX descriptors pool 641 may be the same or similar to the reserved TX buffer pools 520 and 520-a of FIG. 5 A and/or 5B. The common TX descriptors pool 642 may be the same or similar to the public TX buffer pool 530 of FIG. 5A. The LMAC 350-c may also include a software TX descriptors queue 650 and a hardware queue 660. The software TX descriptors queue 650 may be the same or similar to the software queue 540 of FIG. 5A, and the hardware queue 660 may be the same or similar to the hardware queue 550 of FIG. 5A.
[0054] In the example of FIG. 6, all the stations associated with an AP (e.g., AP 105) may share the common TX descriptor pool 641 in the LMAC 350-c. Each station can get as many descriptors (e.g., buffers) from the common pool as available. For each station, a reserved descriptor pool may be created that reserves a number of descriptors for the station. The reserved TX descriptors pool 641 illustrates a collection of the reserved descriptors for all of the associated stations. The number of reserved descriptors is determined by multiplying the maximum number of stations (MAX_STA_NUMBER) by the number of descriptors reserved for each station (RESERVED_TXDESC_PERSTA). Each station can get up to RESERVED_TXDESC_PERSTA descriptors from the reserved TX descriptor pool 641.
[0055] When using the WLAN driver 310-a to transmit a unicast frame, a first step may be to get descriptor(s) from the reserved TX descriptors pool 641. When the station requires a number or amount of descriptors from the reserved pool that is more than RESERVED_TXDESC_PERSTA, then the additional descriptors may be obtained from the common TX descriptors pool 642. When using the WLAN driver 310-a to transmit multicast frames, the descriptor(s) may be obtained from common TX descriptors pool 642 and not from the reserved TX descriptors pool 641. Once transmission of the frame is complete, descriptors from the reserved pool are made available back to the reserved pool, and descriptors from the common pool are recycled back to the common pool. [0056] FIG. 6 also shows the use of a data FIFO queue in connection with providing a minimum bandwidth guarantee for associated stations in a WLAN. The use of data FIFO queues described in FIG. 6 is similar to the use of FIFO queues described in FIG. 4. For each associated station, a data FIFO queue is created or allocated (e.g., data FIFO queues 621, 623). The maximum queue depth for each of the data FIFO queues may be MAX_QUEUE_DEPTH, which may be adaptable.
[0057] In operation, when the ingress throughput of one of the associated stations is lower than the minimum bandwidth setting and the WLAN driver 310-a has no free descriptors available, to ensure the minimum bandwidth for that station the packet may be queued to the data FIFO queue instead of being dropped. To keep the transmission sequence order, when the station's data FIFO queue is not empty, the new received data may be queued to the tail of the data FIFO queue in the appropriate order. After a packet transmission is complete and the respective descriptors are recycled, then if reserved descriptor, schedule the corresponding station's data FIFO queue if the descriptor is a reserved descriptor (i.e., a descriptor from a reserved pool) or schedule the longest data FIFO queue if the descriptor is a common descriptor (i.e., a descriptor from a common pool). [0058] There may be some instances in which guaranteeing or assuring a minimum bandwidth for some stations may not enable or allow other stations to work properly. For example, for IEEE 802.11b mode station, the maximum physical layer (PHY) rate is 11 megabits-per- second (Mbps). If this rate is guaranteed for the respective station, that station may end up using a significant amount of the AP's bandwidth, affecting the AP's performance with respect to the other associated stations. Also, when a station is abnormal, it may not be appropriate to guarantee a minimum bandwidth for that station. For example, a station with a low transmit rate or a high PER may not be operating or acting in a normal manner. Such a station may be considered to be in a non-typical or abnormal state and a minimum bandwidth may not be guaranteed for such a station.
[0059] FIG. 7 A shows a diagram 600 having a device 105-b for use in wireless communications that support a minimum bandwidth guarantee for associated stations in a WLAN. In some embodiments, the device 105-b may be an example of one or more aspects of one of the APs 105 and 105-a described with reference to FIG. 1 and/or 2. The device 105-b, or portions of it, may also be a processor. The device 105-b may include a receiver 710, a WLAN driver bandwidth manager 720, and/or a transmitter 730. Each of these components may be in communication with each other.
[0060] In some embodiments, the receiver 710 may be or include an RF receiver. The RF receiver may include separate receivers for the different bands. For example, the RF receiver may include a receiver (i.e., part of a radio or modem) operable to receive transmissions in one or more Wi-Fi bands (e.g., 2.4 GHz, 5 GHz). The receiver 710 may be used to receive various types of data and/or control signals (i.e., transmissions) over one or more communication links of a wireless communications system, such as one or more communication links of the WLAN or Wi-Fi networks described with reference to FIG. 1 and/or 2.
[0061] In some embodiments, the transmitter 730 may be or include an RF transmitter. The RF transmitter may include separate transmitters for the different bands. For example, the RF transmitter may include a transmitter (i.e., part of a radio or modem) operable to transmit in one or more Wi-Fi bands (e.g., 2.4 GHz, 5 GHz). The transmitter 730 may be used to transmit various types of data and/or control signals (i.e., transmissions) over one or more communication links of the WLAN or Wi-Fi networks described with reference to FIG. 1 and/or 2.
[0062] In some embodiments, the WLAN driver bandwidth manger 720 is configured to allocate a pool of TX buffers (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641) for each associated station, to identify a number of TX buffers for transmission of a data frame to an associated station, and/or to select a set of TX buffers from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers.
[0063] In some embodiments, the WLAN driver bandwidth manger 720 is configured to allocate a public pool of TX buffers (e.g., public TX buffer pool 530, common TX descriptors pool 642) and to select set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station. In some embodiments, the WLAN driver bandwidth manger 720 is configured to adapt (e.g., increase, decrease) a number of TX buffers in the public pool of TX buffers. In some embodiments, if adaptation of the number of TX buffers in the public pool of TX buffers is supported, the adaptation may occur at times other than during run time. While the total number of TX buffers in the public pool of TX buffers may remain constant during run time, the number of free TX buffers in the public pool of TX buffers may change during run time.
[0064] In some embodiments, the WLAN driver bandwidth manger 720 is configured to release the TX buffers in the set selected from the public pool of TX buffers after transmission of the data frame to the associated station. The WLAN driver bandwidth manger 720 may be configured to queue the data frame in the set of TX buffers into a corresponding TID buffer queue (e.g., TID buffer queues for STAs 541, 544, software queue 540, software TX descriptors queue 650). The WLAN driver bandwidth manger 720 may be configured to push the data frame from the TID buffer queue to a hardware queue (e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554, hardware queue 550, hardware queue 660), where the data frame is retrieved from the hardware queue for transmission to the associated station. For example, the WLAN driver bandwidth manger 720 may be configured to map all TID buffers queues to four hardware queues (e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554). The data frame may be pushed to one of the four hardware queues based on, for example, quality-of-service (QoS) information. The data frame may include a unicast data frame.
[0065] In some embodiments, the WLAN driver bandwidth manger 720 is configured to allocate an SKB FIFO queue (e.g., FIFO queues for STAs 420, ..., 423, DATA FIFO queues for STAs 621, 623) for each associated station. The WLAN driver bandwidth manger 720 may be configured to determine whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmission, and/or transmit an SKB (e.g., through transmitters 730) when the SKB FIFO queue is determined to be empty. [0066] In some embodiments, the WLAN driver bandwidth manger 720 is configured to transmit the SKB when the SKB FIFO queue is determined to be empty by calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed. [0067] In some embodiments, the WLAN driver bandwidth manger 720 is configured to place the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, to call a function (e.g., ., dev_queue_xmit( )) to queue the SKB for transmission in the sequence order, to identify a return value of the called function, and/or to determine whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed. In some embodiments, the SKB corresponds to a unicast data frame.
[0068] The WLAN driver bandwidth manager 720 may be configured to implement one or more of the features regarding a minimum bandwidth guarantee for associated stations in a WLAN described above with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6. [0069] FIG. 7B shows a diagram 700-a having a device 105-c for use in wireless communications that support a minimum bandwidth guarantee for associated stations in a WLAN. In some embodiments, the device 105-c may be an example of the device 105-b of FIG. 7A. The device 105-c, or portions of it, may also be a processor. The device 105-c may include the receiver 710, a WLAN driver bandwidth manager 720-a, and/or the transmitter 730. Each of these components may be in communication with each other. [0070] The receiver 710 and the transmitter 730 are described above with respect to FIG. 7A. The WLAN driver bandwidth manager 720-a may be an example of the WLAN driver bandwidth manager 720 of FIG. 7A, and may include a congestion monitor 740, a TX descriptors manager 750, and a data FIFO queue manager 770. The TX descriptors manager 750 may include an allocation, identification, and selection module 760, and the data FIFO queue manager 780 may include an allocation and determination module 780. Each of these components may be in communication with each other.
[0071] The congestion monitor 740 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to a real-time monitoring mechanism to detect and/or manage traffic congestion. The congestion monitor 740 may be configured to get accurate and real-time information of ingress/egress traffic at the WLAN port for each station. The congestion monitor 740 may be used to implement a system timer on a WLAN driver (e.g., WLAN driver 310), during a timeout period and accumulate each station's total bytes and total packets received by WLAN driver. This information may be used as the ingress traffic information. During the timeout period, the congestion monitor 740 may accumulate each station's total bytes and total packets that are wirelessly transmitted. This information may be used as the egress traffic information. The congestion monitor 740 may be configured to calculate each station's ingress throughput, egress throughput, packet loss, and/or packet loss ratio according to the total bytes/packets and timeout duration. If one station's ingress throughput is higher than egress throughput, the station is in a congested state because the reserved buffers or descriptors allocated for that station are being used and no free common buffer or descriptor is available to be used. Once the WLAN driver receives a packet, if the station's traffic is higher than a minimum bandwidth setting, the station is on congested state as determined by the congestion monitor 740, and the WLAN driver has no free descriptors, then the packet may be discarder.
[0072] The TX descriptors manager 750 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to the use of reserved and/or common pools of buffers or descriptors (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641, public TX buffer pool 530, common TX descriptors pool 642). The allocation, identification, and selection module 760 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to allocating, identifying, and selecting buffers or descriptors.
[0073] The data FIFO queue manager 750 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to the use of FIFO queues in (e.g., FIFO queues for STAs 420, ..., 423, DATA FIFO queues for STAs 621, ..., 623). The allocation and determination module 780 may be configured to handle aspects described at least with respect to FIG. 1, 2, 3, 4, 5A, 5B, and/or 6 related to allocating FIFO queues to each associate station and determining whether the FIFO queues are empty for upper layer data frame transmissions. [0074] The components of the devices 105-b and 105-c may, individually or collectively, be implemented with one or more application- specific integrated circuits (ASICs) adapted to perform some or all of the applicable functions in hardware. Alternatively, the functions may be performed by one or more other processing units (or cores), on one or more integrated circuits. In other embodiments, other types of integrated circuits may be used (e.g., Structured/Platform ASICs, Field Programmable Gate Arrays (FPGAs), and other Semi- Custom ICs), which may be programmed in any manner known in the art. The functions of each unit may also be implemented, in whole or in part, with instructions embodied in a memory, formatted to be executed by one or more general or application-specific processors.
[0075] FIG. 8 shows a diagram 800 that illustrates a wireless terminal or station 115-b configured for communicating with an AP that supports minimum bandwidth guarantees for associated stations. The station 115-b may have various other configurations and may be included or be part of a personal computer (e.g., laptop computer, netbook computer, tablet computer, etc.), a cellular telephone, a PDA, a digital video recorder (DVR), an internet appliance, a gaming console, an e-readers, etc. The station 115-b may have an internal power supply (not shown), such as a small battery, to facilitate mobile operation. The station 115-b may be an example of the stations 115 and 115-a of FIG. 1 and/or 2. The station 115-b may include a processor 810, a memory 820, transceiver 840, and antennas 850. Each of these components may be in communication with each other, directly or indirectly, over one or more buses 815. The memory 820 may include random access memory (RAM) and read-only memory (ROM). The memory 820 may store computer-readable, computer-executable software (SW) code 825 containing instructions that are configured to, when executed, cause the processor 810 to perform various functions described herein for handling communications with an AP. Alternatively, the software code 825 may not be directly executable by the processor 810 but be configured to cause the computer (e.g., when compiled and executed) to perform functions described herein.
[0077] The processor 810 may include an intelligent hardware device, e.g., a central processing unit (CPU), a microcontroller, an ASIC, etc. The processor 810 may process information received through the transceiver 840. The processor 810 may process information to be sent to the transceiver 840 for transmission through the antennas 850. [0078] The transceiver 840 may be configured to communicate bi-directionally with access points (e.g., access points 105). The transceiver 840 may be implemented as one or more transmitters and one or more separate receivers. The transceiver 840 may support communications with a WLAN or Wi-Fi network. The transceiver 840 may include a modem configured to modulate the packets and provide the modulated packets to the antennas 850 for transmission, and to demodulate packets received from the antennas 850.
[0079] According to the architecture of FIG. 8, the station 115-e may further include a communications manager 830. The communications manager 830 may manage communications with various network devices (e.g., access points). The communications manager 830 may be a component of the station 115-b in communication with some or all of the other components of the station 115-b over the one or more buses 815. Alternatively, functionality of the communications manager 830 may be implemented as a component of the transceiver 840, as a computer program product, and/or as one or more controller elements of the processor 810.
[0080] FIG. 9 shows a diagram 900 that illustrates an AP 105-d. In some embodiments, the AP 105-d may be an example of the APs 105, 105-a, 105-b, and 105-c of FIG. 1, 2, 7A, and/or 7B. The AP 105-d may be configured to implement at least some of the features and functions described above with respect to FIGS. 1-7B. The AP 105-d may include a processor 910, a memory 920, transceiver 930, antennas 940, and a WLAN driver bandwidth manager 720-b. The WLAN driver bandwidth manager 720-b may be an example of the WLAN driver bandwidth manager 720 and 720-a of FIG. 7 A and/or 7B. The AP 105-d may also include one or both of a network device communications module 960 and a network communications module 970. Each of these components may be in communication with each other, directly or indirectly, over one or more buses 915.
[0081] The memory 920 may include RAM and ROM. The memory 920 may also store computer-readable, computer-executable software (SW) code 925 containing instructions that are configured to, when executed, cause the processor 910 to perform various functions described herein for a minimum bandwidth guarantee for associated stations. Alternatively, the software code 925 may not be directly executable by the processor 910 but be configured to cause the computer, e.g., when compiled and executed, to perform functions described herein. [0082] The processor 910 may include an intelligent hardware device, e.g., a CPU, a microcontroller, an ASIC, etc. The processor 910 may process information received through the transceiver 930, the network device communications module 960, and/or the network communications module 970. The processor 910 may also process information to be sent to the transceiver 930 for transmission through the antennas 940, to the network device communications module 960, and/or to the network communications module 970. The processor 910 may handle, alone or in connection with another the WLAN driver bandwidth manager 720-b, various aspects for a minimum bandwidth guarantee for associated stations. The WLAN driver(s) of the AP 105-d may be executed or may operate in connection with the processor 910, for example, [0083] The transceiver 930 may include a modem configured to modulate the packets and provide the modulated packets to the antennas 940 for transmission, and to demodulate packets received from the antennas 940. The transceiver 930 may be implemented as one or more transmitters and one or more separate receivers. The transceiver 930 may be configured to communicate bi-directionally, via the antennas 940, with one or more associated stations. The AP 105-d may include multiple antennas 940. The AP 105-d may communicate with a network 980 through the network communications module 970. In some instances, the network 980 may be part of a WLAN or Wi-Fi network. The AP 105-d may communicate with other network devices, such as the network devices 105-e and 105-f, using the network device communications module 960, the transceivers 930, and/or the network communications module 970. [0084] According to the architecture of FIG. 9, the AP 105-d may further include a communications manager 950. The communications manage 950 may manage communications with stations (e.g., stations 115) and/or other network devices. The communications manager 950 may be in communication with some or all of the other components of the AP 105-d via the bus or buses 915. Alternatively, functionality of the communications manager 950 may be implemented as a component of the transceiver 930, as a computer program product, and/or as one or more controller elements of the processor 910 and/or of the WLAN driver bandwidth manager 720-b.
[0085] The WLAN driver bandwidth manager 720-b may be configured to perform various aspects related to a minimum bandwidth guarantee for associated stations. Moreover, some or all of the functionality of the WLAN driver bandwidth manager 720-b may be performed by the processor 910 and/or in connection with the processor 910.
[0086] FIG. 10 is a flow chart illustrating an example of a method 1000 for wireless communications. For clarity, the method 1000 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9. In one embodiment, one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
[0087] At block 1005, a pool of TX buffers (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641) is allocated for each associated station. [0088] At block 1010, a number of TX buffers is identified for transmission of a data frame to an associated station.
[0089] At block 1015, a set of TX buffers is selected from the pool of TX buffers corresponding to the associated station, where the number of TX buffers in the set is the same as the identified number of TX buffers. [0090] In some embodiments of the method 1000, a public pool of TX buffers (e.g., public TX buffer pool 530, common TX descriptors pool 642) is allocated. The set of TX buffers may be selected from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station. In some embodiments, a total number of TX buffers in the public pool of TX buffers may be adapted (e.g., increased, decreased) at a time other than run time.
[0091] In some embodiments of the method 1000, the method includes releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station, and recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station. The method may include queuing the data frame in the set of TX buffers into a corresponding TID buffer queue (e.g., TID buffer queues for STAs 541, 544, software queue 540, software TX descriptors queue 650). The method may include pushing the data frame from the TID buffer queue to a hardware queue (e.g., HW BK queue 551, HW BE queue 552, HW VI queue 553, HW VO queue 554, hardware queue 550, hardware queue 660), where the data frame is retrieved from the hardware .queue for transmission to the associated station. The data frame may include a unicast data frame. [0092] FIG. 11 is a flow chart illustrating an example of a method 1100 for wireless communications. For clarity, the method 1100 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9. In one embodiment, one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below. [0093] At block 1105, a pool of TX buffers (e.g., reserved TX buffer pool 520, 520-a, reserved TX descriptors pool 641) is allocated for each associated station.
[0094] At block 1110, a public or common pool of TX buffers (e.g., public TX buffer pool 530, common TX descriptors pool 642) is also allocated.
[0095] At block 1115, a number of TX buffers is identified for transmission of a data frame to an associated station.
[0096] At block 1120, a set of TX buffers is selected from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station. [0097] FIG. 12 is a flow chart illustrating an example of a method 1200 for wireless communications. For clarity, the method 1200 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9. In one embodiment, one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
[0098] At block 1205, an SKB FIFO queue (e.g., FIFO queues for STAs 420, 423, DATA FIFO queues for STAs 621, ..., 623) may be allocated for each associated station.
[0099] At block 1210, a determination is made as to whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions. [0100] At block 1215, an SKB is transmitted (e.g., transmitters 730) when the SKB FIFO queue is determined to be empty.
[0101] In some embodiments of the method 1200, transmitting the SKB when the SKB FIFO queue is determined to be empty includes calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
[0102] In some embodiments of the method 1200, the method includes placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty, calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission in the sequence order, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed. In some embodiments, the SKB corresponds to a unicast data frame.
[0103] FIG. 13 is a flow chart illustrating an example of a method 1300 for wireless communications. For clarity, the method 1300 is described below with reference to one of the APs, devices, and modules shown in FIG. 1, 2, 3, 4, 5A, 5B, 6, 7A, 7B, and/or 9. In one embodiment, one of the APs may execute one or more sets of codes to control the functional elements of the AP to perform the functions described below.
[0104] At block 1305, an SKB FIFO queue (e.g., FIFO queues for STAs 420, 423, DATA FIFO queues for STAs 621, ..., 623) may be allocated for each associated station. [0105] At block 1310, a determination is made as to whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions.
[0106] At block 1315, an SKB is transmitted (e.g., transmitters 730) when the SKB FIFO queue is determined to be empty, where the transmission includes calling a function (e.g., dev_queue_xmit( )) to queue the SKB for transmission, identifying a return value of the called function, and determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
[0107] Thus, the methods 1000, 1100, 1200, and 1300 may provide for wireless communications. It should be noted that each of the methods 1000, 1100, 1200, and 1300 is just one implementation and that the operations of the methods 1000, 1100, 1200, and 1300 may be rearranged or otherwise modified such that other implementations are possible. In some instances, the operations of two or more of the methods 1000, 1100, 1200, and 1300 may be combined to produce other implementations.
[0108] The detailed description set forth above in connection with the appended drawings describes exemplary embodiments and does not represent the only embodiments that may be implemented or that are within the scope of the claims. The term "exemplary" used throughout this description means "serving as an example, instance, or illustration," and not "preferred" or "advantageous over other embodiments." The detailed description includes specific details for the purpose of providing an understanding of the described techniques. These techniques, however, may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form in order to avoid obscuring the concepts of the described embodiments.
[0109] Information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0110] The various illustrative blocks and modules described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP), an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
[0111] The functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Other examples and implementations are within the scope and spirit of the disclosure and appended claims. For example, due to the nature of software, functions described above can be implemented using software executed by a processor, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations. Also, as used herein, including in the claims, "or" as used in a list of items prefaced by "at least one of indicates a disjunctive list such that, for example, a list of "at least one of A, B, or C" means A or B or C or AB or AC or BC or ABC (i.e., A and B and C). [0112] Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage medium may be any available medium that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special- purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media.
[0113] The previous description of the disclosure is provided to enable a person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Throughout this disclosure the term "example" or "exemplary" indicates an example or instance and does not imply or require any preference for the noted example. Thus, the disclosure is not to be limited to the examples and designs described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein. [0114] What is claimed is:

Claims

1. A method for wireless communications, comprising:
allocating a pool of transmit (TX) buffers for each associated station;
identifying a number of TX buffers for transmission of a data frame to an associated station; and
selecting a set of TX buffers from the pool of TX buffers corresponding to the associated station, the number of TX buffers in the set being the same as the identified number of TX buffers.
2. The method of claim 1 , further comprising:
allocating a public pool of TX buffers; and
selecting the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
3. The method of claim 2, further comprising adapting a total number of TX buffers in the public pool of TX buffers at a time other than run time.
4. The method of claim 2, further comprising:
releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station; and
recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
5. The method of claim 1, further comprising queuing the data frame in the set of TX buffers into a corresponding traffic identifier (TID) buffer queue.
6. The method of claim 5, further comprising pushing the data frame from the TID buffer queue to a hardware queue, the data frame being retrieved from the hardware queue for transmission to the associated station.
7. The method of claim 1, wherein the data frame comprises a unicast data frame.
8. A method for wireless communications, comprising:
allocating a socket buffer (SKB) first-in-first-out (FIFO) queue for each associated station;
determining whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions; and
transmitting an SKB when the SKB FIFO queue is determined to be empty.
9. The method of claim 8, wherein transmitting the SKB when the SKB FIFO queue is determined to be empty comprises:
calling a function to queue the SKB for transmission;
identifying a return value of the called function; and
determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
10. The method of claim 8, further comprising:
placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty;
calling a function to queue the SKB for transmission in the sequence order; identifying a return value of the called function; and
determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
11. The method of claim 8, wherein the SKB corresponds to a unicast data frame.
12. An apparatus for wireless communications, comprising: means for allocating a pool of transmit (TX) buffers for each associated station; means for identifying a number of TX buffers for transmission of a data frame to an associated station; and means for selecting a set of TX buffers from the pool of TX buffers corresponding to the associated station, the number of TX buffers in the set being the same as the identified number of TX buffers.
13. The apparatus of claim 12, further comprising:
means for allocating a public pool of TX buffers; and
means for selecting the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
14. The apparatus of claim 13, further comprising means for adapting a total number of TX buffers in the public pool of TX buffers at a time other than run time.
15. The apparatus of claim 13 , further comprising:
means for releasing the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station; and
means for recycling the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
16. The apparatus of claim 13, further comprising means for queuing the data frame in the set of TX buffers into a corresponding traffic identifier (TID) buffer queue.
17. The apparatus of claim 13, further comprising means for pushing the data frame from the TID buffer queue to a hardware queue, the data frame being retrieved from the hardware queue for transmission to the associated station.
18. The apparatus of claim 12, wherein the data frame comprises a unicast data frame.
19. An apparatus for wireless communications, comprising: means for allocating a socket buffer (SKB) first-in-first-out (FIFO) queue for each associated station; means for determining whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions; and
means for transmitting an SKB when the SKB FIFO queue is determined to be empty.
20. The apparatus of claim 19, wherein the means for transmitting the SKB when the SKB FIFO queue is determined to be empty comprises:
means for calling a function to queue the SKB for transmission; means for identifying a return value of the called function; and means for determining whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
21. The apparatus of claim 19, further comprising:
means for placing the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty;
means for calling a function to queue the SKB for transmission in the sequence order;
means for identifying a return value of the called function; and means for determining whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
22. The apparatus of claim 19, wherein the SKB corresponds to a unicast data frame.
23. An apparatus for wireless communications, comprising: a processor;
memory in electronic communication with the processor; and
instructions stored in the memory, the instructions being executable by the processor to:
allocate a pool of transmit (TX) buffers for each associated station; identify a number of TX buffers for transmission of a data frame to an associated station; and select a set of TX buffers from the pool of TX buffers corresponding to the associated station, the number of TX buffers in the set being the same as the identified number of TX buffers.
24. The apparatus of claim 23, wherein the instructions are executable by the processor to:
allocate a public pool of TX buffers; and
select the set of TX buffers from the pool of TX buffers corresponding to the associated station and from the public pool of TX buffers when the identified number of TX buffers is greater than a number of TX buffers in the pool of TX buffers corresponding to the associated station.
25. The apparatus of claim 24, wherein the instructions are executable by the processor to adapt a total number of TX buffers in the public pool of TX buffers at a time other than run time.
26. The apparatus of claim 24, wherein the instructions are executable by the processor to:
release the TX buffers in the set selected from the public pool of TX buffers back to the public pool of TX buffers after transmission of the data frame to the associated station; and
recycle the TX buffers in the set selected from the pool of TX buffers corresponding to the associated station back to the pool of TX buffers corresponding to the associated station after transmission of the data frame to the associated station.
27. The apparatus of claim 24, wherein the instructions are executable by the processor to queue the data frame in the set of TX buffers into a corresponding traffic identifier (TID) buffer queue.
28. The apparatus of claim 27, wherein the instructions are executable by the processor to push the data frame from the TID buffer queue to a hardware queue, the data frame being retrieved from the hardware queue for transmission to the associated station.
29. The apparatus of claim 23, wherein the data frame comprises a unicast data frame.
30. An apparatus for wireless communications, comprising: a processor;
memory in electronic communication with the processor; and
instructions stored in the memory, the instructions being executable by the processor to:
allocate a socket buffer (SKB) first-in-first-out (FIFO) queue for each associated station;
determine whether the SKB FIFO queue for an associated station is empty for upper layer data frame transmissions; and
transmit an SKB when the SKB FIFO queue is determined to be empty.
31. The apparatus of claim 30, wherein the instructions executable by the processor to transmit the SKB when the SKB FIFO queue is determined to be empty are executable by the processor to:
call a function to queue the SKB for transmission;
identify a return value of the called function; and
determine whether to discard the SKB or insert the SKB into the SKB FIFO queue when the return value indicates that the called function failed.
32. The apparatus of claim 30, wherein the instructions are executable by the processor to:
place the SKB at the tail of the SKB FIFO queue to maintain a sequence order when the SKB FIFO queue is determined not to be empty;
call a function to queue the SKB for transmission in the sequence order;
identify a return value of the called function; and
determine whether to discard the SKB or insert the SKB at the head of the SKB FIFO queue when the return value indicates that the called function failed.
33. The apparatus of claim 30, wherein the SKB corresponds to a unicast data frame.
PCT/CN2013/083976 2013-09-23 2013-09-23 Systems and methods for providing a desired bandwidth in a wireless network WO2015039342A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/083976 WO2015039342A1 (en) 2013-09-23 2013-09-23 Systems and methods for providing a desired bandwidth in a wireless network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/083976 WO2015039342A1 (en) 2013-09-23 2013-09-23 Systems and methods for providing a desired bandwidth in a wireless network

Publications (1)

Publication Number Publication Date
WO2015039342A1 true WO2015039342A1 (en) 2015-03-26

Family

ID=52688129

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/083976 WO2015039342A1 (en) 2013-09-23 2013-09-23 Systems and methods for providing a desired bandwidth in a wireless network

Country Status (1)

Country Link
WO (1) WO2015039342A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019033413A1 (en) * 2017-08-18 2019-02-21 Nokia Solutions And Networks Oy Methods and apparatuses for coexistence of two modes of vehicle-to-vehicle communications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055406A1 (en) * 2003-09-05 2005-03-10 Sandeep Singhai Communication buffer manager and method therefor
US20060164989A1 (en) * 2005-01-24 2006-07-27 Alcatel Communication traffic management systems and methods

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055406A1 (en) * 2003-09-05 2005-03-10 Sandeep Singhai Communication buffer manager and method therefor
US20060164989A1 (en) * 2005-01-24 2006-07-27 Alcatel Communication traffic management systems and methods

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019033413A1 (en) * 2017-08-18 2019-02-21 Nokia Solutions And Networks Oy Methods and apparatuses for coexistence of two modes of vehicle-to-vehicle communications
US11540270B2 (en) 2017-08-18 2022-12-27 Nokia Technologies Oy Methods and apparatuses for coexistence of two modes of vehicle-to-vehicle communications

Similar Documents

Publication Publication Date Title
CN109586866B (en) Communication method, device and equipment
US10070307B2 (en) Method for reporting user equipment assistance information reporting, user equipment, and base station
EP2978179B1 (en) Method and apparatus for reporting buffer status
US20220217636A1 (en) Methods and systems for handling power saving signals to improve power saving performance of ue
JP6030772B2 (en) Method and apparatus for performing backoff for scheduling requests in a wireless communication system
CN106464463B (en) Method and device for adapting carrier aggregation configuration of user equipment
EP2737766B1 (en) Enhancement of in-device coexistence interference avoidance
EP3122147A1 (en) Wireless communication system, terminal device, wireless communication method, integrated circuit, and processing method
EP3122075B1 (en) Apparatus, method, and integrated circuit for dual connectivity
CN111565473A (en) Random access method and device
US9867198B2 (en) Data transmission method and apparatus based on networks of multiple communications standards
CN110100400B (en) Method, device, equipment and storage medium for determining channel detection mechanism
US9763263B2 (en) Scheduling method and base station
US11445503B2 (en) Data transmission method and device for multiple radio frequency systems, storage medium and terminal
KR102137608B1 (en) Improving fairness of uplink broadcasting time through basic service set steering
US20160302100A1 (en) Techniques for retransmissions during bursty traffic
US20170339598A1 (en) Control apparatus, communication apparatus, control method, and computer readable storage medium
US20140044055A1 (en) Method and Apparatus for Resource Relocation in a Wireless Communication Network
EP4132084A2 (en) Transmission padding efficiency improvement
WO2015039342A1 (en) Systems and methods for providing a desired bandwidth in a wireless network
CN116868633A (en) Communication method and device
WO2024055147A1 (en) Scheduling techniques for radio access technology coexistence
US20150173062A1 (en) Technique for Uplink Data Processing
CN117255416A (en) Data transmission method and terminal
CN117336873A (en) Method, apparatus and readable storage medium for sharing channel

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13893782

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13893782

Country of ref document: EP

Kind code of ref document: A1