void cw1200_unregister_common(struct ieee80211_hw *dev) { struct cw1200_common *priv = dev->priv; int i; ieee80211_unregister_hw(dev); del_timer_sync(&priv->mcast_timeout); cw1200_debug_release(priv); #ifdef CONFIG_CW1200_LEDS cw1200_unregister_leds(priv); #endif /* CONFIG_CW1200_LEDS */ mutex_destroy(&priv->conf_mutex); wsm_buf_deinit(&priv->wsm_cmd_buf); destroy_workqueue(priv->workqueue); priv->workqueue = NULL; if (priv->skb_cache) { dev_kfree_skb(priv->skb_cache); priv->skb_cache = NULL; } for (i = 0; i < 4; ++i) cw1200_queue_deinit(&priv->tx_queue[i]); cw1200_queue_stats_deinit(&priv->tx_queue_stats); cw1200_pm_deinit(&priv->pm_state); }
static void cw1200_unregister_common(struct ieee80211_hw *dev) { struct cw1200_common *priv = dev->priv; int i; ieee80211_unregister_hw(dev); del_timer_sync(&priv->mcast_timeout); cw1200_unregister_bh(priv); cw1200_debug_release(priv); mutex_destroy(&priv->conf_mutex); wsm_buf_deinit(&priv->wsm_cmd_buf); destroy_workqueue(priv->workqueue); priv->workqueue = NULL; if (priv->sdd) { release_firmware(priv->sdd); priv->sdd = NULL; } for (i = 0; i < 4; ++i) cw1200_queue_deinit(&priv->tx_queue[i]); cw1200_queue_stats_deinit(&priv->tx_queue_stats); #ifdef CONFIG_PM cw1200_pm_deinit(&priv->pm_state); #endif }