diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2009-01-23 12:40:22 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-01-29 16:01:30 -0500 |
commit | 2f47690ed42a85820783dee7f16ae47edadf8fad (patch) | |
tree | b16e286a5e306bd178cbaff061274d255d5cb562 /drivers/net/wireless/rtl818x/rtl8187.h | |
parent | 2a57cf3e83f89150f2ac9b6f01caf3fcdbb36486 (diff) |
rtl8187: Fix driver to return TX retry info for RTL8187L
Current code for the RTL8187 is not returning valid retry information, thus the
rate-setting mechanism is not functioning. As a further complication, this info
is only obtained by reading a register, which cannot be read while in interrupt
context.
This patch implements the TX status return to mac80211 through the use of a
work queue.
One additional problem is that the driver currently enables the rate fallback
mechanism of the device, which conflicts with the mac80211 rate-setting
algorithm. This version of the patch disables rate fallback.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
Tested-by: MartÃn Ernesto Barreyro <barreyromartin@gmail.com>
Acked-by: Hin-Tak Leung <htl10@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtl818x/rtl8187.h')
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8187.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8187.h b/drivers/net/wireless/rtl818x/rtl8187.h index 3b1e1c2aad26..9718f61809cf 100644 --- a/drivers/net/wireless/rtl818x/rtl8187.h +++ b/drivers/net/wireless/rtl818x/rtl8187.h | |||
@@ -100,6 +100,8 @@ struct rtl8187_priv { | |||
100 | struct usb_device *udev; | 100 | struct usb_device *udev; |
101 | u32 rx_conf; | 101 | u32 rx_conf; |
102 | struct usb_anchor anchored; | 102 | struct usb_anchor anchored; |
103 | struct delayed_work work; | ||
104 | struct ieee80211_hw *dev; | ||
103 | u16 txpwr_base; | 105 | u16 txpwr_base; |
104 | u8 asic_rev; | 106 | u8 asic_rev; |
105 | u8 is_rtl8187b; | 107 | u8 is_rtl8187b; |
@@ -117,7 +119,7 @@ struct rtl8187_priv { | |||
117 | struct { | 119 | struct { |
118 | __le64 buf; | 120 | __le64 buf; |
119 | struct sk_buff_head queue; | 121 | struct sk_buff_head queue; |
120 | } b_tx_status; | 122 | } b_tx_status; /* This queue is used by both -b and non-b devices */ |
121 | }; | 123 | }; |
122 | 124 | ||
123 | void rtl8187_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data); | 125 | void rtl8187_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data); |