wl1251: use workqueue provided by mac80211
authorKalle Valo <kalle.valo@nokia.com>
Fri, 7 Aug 2009 10:35:04 +0000 (13:35 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Aug 2009 13:13:41 +0000 (09:13 -0400)
wl1251 should use workqueue created by mac80211 to not block the events
workqueue too long.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1251_main.c
drivers/net/wireless/wl12xx/wl1251_sdio.c
drivers/net/wireless/wl12xx/wl1251_spi.c

index 568b640aaa5293dc927ca3790bc2ad8c549bd5d7..c5f2d9dbd1a897c566e1dc94cbabab9fc56c54b9 100644 (file)
@@ -375,7 +375,7 @@ static int wl1251_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
         * before that, the tx_work will not be initialized!
         */
 
-       schedule_work(&wl->tx_work);
+       ieee80211_queue_work(wl->hw, &wl->tx_work);
 
        /*
         * The workqueue is slow to process the tx_queue and we need stop
index f7e451fed8b5f22823d7f5f5d13df23bbac1074a..20668e244c679fa4a161d7fb5ff92f08f6fbdbbe 100644 (file)
@@ -55,7 +55,7 @@ static void wl1251_sdio_interrupt(struct sdio_func *func)
        wl1251_debug(DEBUG_IRQ, "IRQ");
 
        /* FIXME should be synchronous for sdio */
-       schedule_work(&wl->irq_work);
+       ieee80211_queue_work(wl->hw, &wl->irq_work);
 }
 
 static const struct sdio_device_id wl1251_devices[] = {
index 7d1031b7a0887a035430be5c9b575f3f6c971df8..e088334536aa56690991d638206a47c2dec731bd 100644 (file)
@@ -39,7 +39,7 @@ static irqreturn_t wl1251_irq(int irq, void *cookie)
 
        wl = cookie;
 
-       schedule_work(&wl->irq_work);
+       ieee80211_queue_work(wl->hw, &wl->irq_work);
 
        return IRQ_HANDLED;
 }