kernel-ark/drivers/net/wireless
Benoit Papillault 8127fbdc41 ath5k: Fix TX/RX padding for all frames
Currently, the padding position is based on
ieee80211_get_hdrlen_from_skb(). This is not correct since the HW does
padding on RX (and expect the same padding to be present on TX) at the
following position :

- management : 24 + 6 if 4-addr format
- control    : 24 + 6 if 4-addr format
- data       : 24 + 6 if 4-addr format + 2 if QoS
- invalid    : 24 + 6 if 4-addr format

whereas ieee80211_get_hdrlen_from_skb() is :

- management : 24
- control    : 16 except for ACK/CTS where it is 10
- data       : 24 + 6 if 4-addr format + 2 if QoS + 2 if QoS & order
- invalid    : 24

So, correct frames are not affected : management frames do not use
4-addr format, control frames have no body and invalid frames are ...
not valid by definition. However, in order to use monitor interface for
debugging purpose, one must be able to send/receive any frames, be it
correct or not. Such frames are affected by incorrect padding.

Moreover, since padding is added on TX, we need to remove it before
calling ieee80211_tx_status. This affect TX packets received by monitor
interfaces.

It has been tested between an ath5k based card (AR5212) and an ar9170usb
based card (netgear WNDA3100) using a frame generator and a monitor
interface for each card.

v2: Added ath5k_add_padding / ath5k_remove_padding

Signed-off-by: Benoit Papillault <benoit.papillault@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-03-10 17:44:06 -05:00
..
ath ath5k: Fix TX/RX padding for all frames 2010-03-10 17:44:06 -05:00
b43 b43: N-PHY: switch to chanspec ops 2010-03-09 15:06:57 -05:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
hostap Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
ipw2x00
iwlwifi iwl3945: check ucode load error code 2010-03-09 16:13:25 -08:00
iwmc3200wifi iwmc3200wifi: typo fix and code cleanup 2010-03-10 17:09:39 -05:00
libertas wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
libertas_tf
orinoco wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
p54 p54: Enable HW_REPORTS_TX_ACK_STATUS 2010-03-09 15:02:56 -05:00
prism54
rt2x00 rt2x00: Export rt2x00soc_probe from rt2x00soc 2010-03-03 15:40:14 -05:00
rtl818x Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-02-26 16:54:45 -05:00
wl12xx wl1271: Remove tx-power level workaround 2010-03-09 15:03:06 -05:00
zd1211rw zd1211rw: fix potential array underflow 2010-03-02 14:28:49 -05:00
adm8211.c
adm8211.h
airo_cs.c
airo.c airo: return from set_wep_key() when key length is zero 2010-03-02 14:28:48 -05:00
airo.h
at76c50x-usb.c
at76c50x-usb.h
atmel_cs.c
atmel_pci.c
atmel.c
atmel.h
Kconfig
mac80211_hwsim.c mac80211_hwsim: convert to new station add/remove callbacks 2010-02-19 15:52:52 -05:00
Makefile
mwl8k.c mwl8k: convert to new station add/remove callbacks 2010-02-22 11:21:43 -05:00
ray_cs.c wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
ray_cs.h
rayctl.h
rndis_wlan.c wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
wl3501_cs.c
wl3501.h
zd1201.c wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
zd1201.h