diff options
author | Sujith <Sujith.Manoharan@atheros.com> | 2010-05-06 05:15:47 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-05-07 14:55:52 -0400 |
commit | 9c6dda4e2dfea970a7105e3805f0195bc3079f2f (patch) | |
tree | 3b255fefdca205e5f38032236faeb1d7e433a2a8 /drivers/net/wireless/ath/ath9k/htc_drv_init.c | |
parent | 0aaffa9b9699894aab3266195a529baf9f96ac29 (diff) |
ath9k_htc: Fix beaconing in IBSS mode
The current way of managing beaconing in ad-hoc
mode has a subtle race - the beacon obtained from mac80211
is freed in the SWBA handler rather than the TX
completion routine. But transmission of beacons goes
through the normal SKB queue maintained in hif_usb,
leading to a situation where __skb_dequeue() in the TX
completion handler goes kaput.
Fix this by simply getting a beacon from mac80211 for
every SWBA and free it in its completion routine.
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/htc_drv_init.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_init.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c index 701f2ef5a440..17111fc1d2cc 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c | |||
@@ -144,7 +144,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv) | |||
144 | goto err; | 144 | goto err; |
145 | 145 | ||
146 | /* Beacon */ | 146 | /* Beacon */ |
147 | ret = ath9k_htc_connect_svc(priv, WMI_BEACON_SVC, NULL, | 147 | ret = ath9k_htc_connect_svc(priv, WMI_BEACON_SVC, ath9k_htc_beaconep, |
148 | &priv->beacon_ep); | 148 | &priv->beacon_ep); |
149 | if (ret) | 149 | if (ret) |
150 | goto err; | 150 | goto err; |