linux/drivers/net/wireless
Emmanuel Grumbach eb9a372a73 iwlwifi: don't count the tfds in HW queue any more
Since packets sent to an RA / TID in AGG are sent from a
separate HW Tx queue, we may get into a race:
the regular queue isn't empty while we already begin to
send packets from the AGG queue. This would result in sending
packets out of order.

In order to cope with this, mac80211 waits until the driver
reports that the legacy queue is drained before it can send
packets to the AGG queue. During that time, mac80211 buffers
packets for the driver. These packets will be sent in order
after the driver reports it is ready.

The way this was implemented in the driver is as follows:
We held a counter that monitors the number of packets for
an RA / TID in the HW queues. When this counter reached 0,
we knew that the HW queues were drained and we reported to
mac80211 that were ready to proceed.

This patch changes the implementation described above. We
now remember what is the wifi sequence number of the first
packet that will be sent in the AGG queue (lets' call it
ssn). When we reclaim the packet before ssn, we know that
the queue is drained, and we are ready to proceed.

This will allow us to move this logic in the upper layer and
eventually remove the tid_data from the shared area.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2011-12-16 07:22:33 -08:00
..
ath ath9k: Support RSN Mesh 2011-12-16 09:30:43 -05:00
b43 b43: N-PHY: check for bustype before touching BCMA CC PLLs 2011-12-15 14:47:45 -05:00
b43legacy Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
brcm80211 brcm80211: smac: precendence bug in wlc_phy_attach() 2011-12-15 14:46:38 -05:00
hostap hostap_cs: add ID for Canon K30225 2011-11-28 14:44:00 -05:00
ipw2x00 wireless: use strlcpy routine in .get_drvinfo 2011-11-17 15:44:50 -05:00
iwlegacy iwlegacy: Use kcalloc instead of kzalloc to allocate array 2011-12-06 16:05:24 -05:00
iwlwifi iwlwifi: don't count the tfds in HW queue any more 2011-12-16 07:22:33 -08:00
iwmc3200wifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-11-22 14:05:46 -05:00
libertas Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2011-12-02 15:44:03 -05:00
libertas_tf drivers/net: change moduleparam.h to module.h as required. 2011-10-31 19:31:08 -04:00
mwifiex mwifiex: remove cfg_workqueue 2011-12-14 14:50:11 -05:00
orinoco Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-11-22 14:05:46 -05:00
p54 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2011-12-02 15:44:03 -05:00
prism54 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2011-12-02 15:44:03 -05:00
rt2x00 rt2x00: Make use of ieee80211_free_txskb in tx path 2011-12-14 14:50:11 -05:00
rtl818x drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
rtlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2011-12-14 14:35:41 -05:00
wl12xx wl12xx: alloc buffer in driver_state_read to prevent compilation warning 2011-12-15 16:11:29 +02:00
wl1251 wireless: Remove redundant spi driver bus initialization 2011-11-28 14:43:58 -05:00
zd1211rw drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
Kconfig net: wireless: add brcm80211 drivers 2011-10-11 15:55:30 -04:00
Makefile iwlegacy: rename remaining IWLs to ILs 2011-11-15 11:25:42 +01:00
adm8211.c drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
adm8211.h
airo.c
airo.h
airo_cs.c
at76c50x-usb.c wireless: at76c50x: follow rename pack_hex_byte to hex_byte_pack 2011-10-31 17:30:57 -07:00
at76c50x-usb.h
atmel.c
atmel.h
atmel_cs.c
atmel_pci.c
mac80211_hwsim.c mac80211_hwsim: fix wmediumd_pid 2011-12-16 09:30:42 -05:00
mac80211_hwsim.h
mwl8k.c mac80211: pass vif param to conf_tx() callback 2011-10-03 15:22:41 -04:00
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: remove unused macro 2011-11-21 16:22:09 -05:00
wl3501.h
wl3501_cs.c wl3501_cs: min_t() cast truncates high bits 2011-09-27 14:36:04 -04:00
zd1201.c
zd1201.h