diff options
-rw-r--r-- | drivers/net/wireless/mwl8k.c | 26 |
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 | ||
2543 | struct mwl8k_stop_worker { | ||
2544 | struct mwl8k_work_struct header; | ||
2545 | }; | ||
2546 | |||
2547 | static 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 | |||
2555 | static void mwl8k_stop(struct ieee80211_hw *hw) | 2543 | static 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); |