aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/zd1211rw/zd_mac.h
diff options
context:
space:
mode:
authorUlrich Kunitz <kune@deine-taler.de>2006-12-10 14:13:12 -0500
committerJohn W. Linville <linville@linville-t43.mobile>2006-12-19 16:09:59 -0500
commit4d1feabcbf41f875447a392015acd0796f57baf6 (patch)
treeb47ceb21cfed93f410e6329040784d43864dab33 /drivers/net/wireless/zd1211rw/zd_mac.h
parente25db641c0e6dd49c5db24dbe154048d4a466727 (diff)
[PATCH] zd1211rw: Call ieee80211_rx in tasklet
The driver called ieee80211_rx in hardware interrupt context. This has been against the intention of the ieee80211_rx function. It caused a bug in the crypto routines used by WPA. This patch calls ieee80211_rx in a tasklet. Signed-off-by: Ulrich Kunitz <kune@deine-taler.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_mac.h')
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.h b/drivers/net/wireless/zd1211rw/zd_mac.h
index f0cf05dc7d3..faf4c7828d4 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.h
+++ b/drivers/net/wireless/zd1211rw/zd_mac.h
@@ -138,6 +138,9 @@ struct zd_mac {
138 struct delayed_work set_rts_cts_work; 138 struct delayed_work set_rts_cts_work;
139 struct delayed_work set_basic_rates_work; 139 struct delayed_work set_basic_rates_work;
140 140
141 struct tasklet_struct rx_tasklet;
142 struct sk_buff_head rx_queue;
143
141 unsigned int stats_count; 144 unsigned int stats_count;
142 u8 qual_buffer[ZD_MAC_STATS_BUFFER_SIZE]; 145 u8 qual_buffer[ZD_MAC_STATS_BUFFER_SIZE];
143 u8 rssi_buffer[ZD_MAC_STATS_BUFFER_SIZE]; 146 u8 rssi_buffer[ZD_MAC_STATS_BUFFER_SIZE];
@@ -193,7 +196,7 @@ int zd_mac_stop(struct net_device *netdev);
193int zd_mac_set_mac_address(struct net_device *dev, void *p); 196int zd_mac_set_mac_address(struct net_device *dev, void *p);
194void zd_mac_set_multicast_list(struct net_device *netdev); 197void zd_mac_set_multicast_list(struct net_device *netdev);
195 198
196int zd_mac_rx(struct zd_mac *mac, const u8 *buffer, unsigned int length); 199int zd_mac_rx_irq(struct zd_mac *mac, const u8 *buffer, unsigned int length);
197 200
198int zd_mac_set_regdomain(struct zd_mac *zd_mac, u8 regdomain); 201int zd_mac_set_regdomain(struct zd_mac *zd_mac, u8 regdomain);
199u8 zd_mac_get_regdomain(struct zd_mac *zd_mac); 202u8 zd_mac_get_regdomain(struct zd_mac *zd_mac);