diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 43e5dd19b664c691ae96c937ea45cf0071947937..a634b565018f263beba6f7649fb6da428be00954 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -2425,70 +2425,6 @@ static int mwl8k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
 	return rc;
 }
 
-struct mwl8k_work_struct {
-	/* Initialized by mwl8k_queue_work().  */
-	struct work_struct wt;
-
-	/* Required field passed in to mwl8k_queue_work().  */
-	struct ieee80211_hw *hw;
-
-	/* Required field passed in to mwl8k_queue_work().  */
-	int (*wfunc)(struct work_struct *w);
-
-	/* Initialized by mwl8k_queue_work().  */
-	struct completion *cmd_wait;
-
-	/* Result code.  */
-	int rc;
-};
-
-static void mwl8k_config_thread(struct work_struct *wt)
-{
-	struct mwl8k_work_struct *worker = (struct mwl8k_work_struct *)wt;
-	struct ieee80211_hw *hw = worker->hw;
-	int rc = 0;
-
-	rc = mwl8k_fw_lock(hw);
-	if (!rc) {
-		rc = worker->wfunc(wt);
-		mwl8k_fw_unlock(hw);
-	}
-
-	worker->rc = rc;
-	complete(worker->cmd_wait);
-}
-
-static int mwl8k_queue_work(struct ieee80211_hw *hw,
-				struct mwl8k_work_struct *worker,
-				int (*wfunc)(struct work_struct *w))
-{
-	struct mwl8k_priv *priv = hw->priv;
-	unsigned long timeout = 0;
-	int rc = 0;
-
-	DECLARE_COMPLETION_ONSTACK(cmd_wait);
-
-	worker->hw = hw;
-	worker->cmd_wait = &cmd_wait;
-	worker->rc = 1;
-	worker->wfunc = wfunc;
-
-	INIT_WORK(&worker->wt, mwl8k_config_thread);
-	queue_work(priv->config_wq, &worker->wt);
-
-	timeout = wait_for_completion_timeout(&cmd_wait,
-		msecs_to_jiffies(10000));
-
-	if (timeout)
-		rc = worker->rc;
-	else {
-		cancel_work_sync(&worker->wt);
-		rc = -ETIMEDOUT;
-	}
-
-	return rc;
-}
-
 static int mwl8k_start(struct ieee80211_hw *hw)
 {
 	struct mwl8k_priv *priv = hw->priv;