aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/mwl8k.c26
1 files changed, 1 insertions, 25 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 7b7007da873f..b88b1e001f07 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -2540,39 +2540,15 @@ static int mwl8k_start(struct ieee80211_hw *hw)
2540 return rc; 2540 return rc;
2541} 2541}
2542 2542
2543struct mwl8k_stop_worker {
2544 struct mwl8k_work_struct header;
2545};
2546
2547static int mwl8k_stop_wt(struct work_struct *wt)
2548{
2549 struct mwl8k_stop_worker *worker = (struct mwl8k_stop_worker *)wt;
2550 struct ieee80211_hw *hw = worker->header.hw;
2551
2552 return mwl8k_cmd_802_11_radio_disable(hw);
2553}
2554
2555static void mwl8k_stop(struct ieee80211_hw *hw) 2543static void mwl8k_stop(struct ieee80211_hw *hw)
2556{ 2544{
2557 int rc;
2558 struct mwl8k_stop_worker *worker;
2559 struct mwl8k_priv *priv = hw->priv; 2545 struct mwl8k_priv *priv = hw->priv;
2560 int i; 2546 int i;
2561 2547
2562 if (priv->vif != NULL) 2548 mwl8k_cmd_802_11_radio_disable(hw);
2563 return;
2564 2549
2565 ieee80211_stop_queues(hw); 2550 ieee80211_stop_queues(hw);
2566 2551
2567 worker = kzalloc(sizeof(*worker), GFP_KERNEL);
2568 if (worker == NULL)
2569 return;
2570
2571 rc = mwl8k_queue_work(hw, &worker->header, mwl8k_stop_wt);
2572 kfree(worker);
2573 if (rc == -ETIMEDOUT)
2574 printk(KERN_ERR "%s() timed out\n", __func__);
2575
2576 /* Disable interrupts */ 2552 /* Disable interrupts */
2577 iowrite32(0, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK); 2553 iowrite32(0, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK);
2578 free_irq(priv->pdev->irq, hw); 2554 free_irq(priv->pdev->irq, hw);