Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab565790 authored by Lennert Buytenhek's avatar Lennert Buytenhek Committed by John W. Linville
Browse files

mwl8k: remove mwl8k_queue_work()

parent e6935ea1
Loading
Loading
Loading
Loading
+0 −64
Original line number Diff line number Diff line
@@ -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;