diff options
author | Ulrich Kunitz <kune@deine-taler.de> | 2006-12-10 11:13:12 -0800 |
---|---|---|
committer | John W. Linville <linville@linville-t43.mobile> | 2006-12-19 16:09:59 -0500 |
commit | 4d1feabcbf41f875447a392015acd0796f57baf6 (patch) | |
tree | b47ceb21cfed93f410e6329040784d43864dab33 /drivers/net/wireless/zd1211rw/zd_mac.h | |
parent | e25db641c0e6dd49c5db24dbe154048d4a466727 (diff) | |
download | kernel_samsung_smdk4412-4d1feabcbf41f875447a392015acd0796f57baf6.zip kernel_samsung_smdk4412-4d1feabcbf41f875447a392015acd0796f57baf6.tar.gz kernel_samsung_smdk4412-4d1feabcbf41f875447a392015acd0796f57baf6.tar.bz2 |
[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.h | 5 |
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 f0cf05d..faf4c78 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.h +++ b/drivers/net/wireless/zd1211rw/zd_mac.h @@ -138,6 +138,9 @@ struct zd_mac { struct delayed_work set_rts_cts_work; struct delayed_work set_basic_rates_work; + struct tasklet_struct rx_tasklet; + struct sk_buff_head rx_queue; + unsigned int stats_count; u8 qual_buffer[ZD_MAC_STATS_BUFFER_SIZE]; u8 rssi_buffer[ZD_MAC_STATS_BUFFER_SIZE]; @@ -193,7 +196,7 @@ int zd_mac_stop(struct net_device *netdev); int zd_mac_set_mac_address(struct net_device *dev, void *p); void zd_mac_set_multicast_list(struct net_device *netdev); -int zd_mac_rx(struct zd_mac *mac, const u8 *buffer, unsigned int length); +int zd_mac_rx_irq(struct zd_mac *mac, const u8 *buffer, unsigned int length); int zd_mac_set_regdomain(struct zd_mac *zd_mac, u8 regdomain); u8 zd_mac_get_regdomain(struct zd_mac *zd_mac); |