Commit 22c03264 authored by Jérôme Pouiller's avatar Jérôme Pouiller Committed by Greg Kroah-Hartman
Browse files

staging: wfx: simplify wfx_suspend_resume_mc()



Indeed, it is not necessary to pass whole hif_ind_suspend_resume_tx to
wfx_suspend_resume_mc().

In add, the structure hif_ind_suspend_resume_tx come from hardware API.
It is not intended to be manipulated in upper layers of the driver.

Signed-off-by: default avatarJérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200115135338.14374-57-Jerome.Pouiller@silabs.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b5d4d98e
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -600,13 +600,8 @@ void wfx_tx_confirm_cb(struct wfx_vif *wvif, const struct hif_cnf_tx *arg)
			tx_info->flags |= IEEE80211_TX_STAT_ACK;
	} else if (arg->status == HIF_REQUEUE) {
		/* "REQUEUE" means "implicit suspend" */
		struct hif_ind_suspend_resume_tx suspend = {
			.suspend_resume_flags.resume = 0,
			.suspend_resume_flags.bc_mc_only = 1,
		};

		WARN(!arg->tx_result_flags.requeue, "incoherent status and result_flags");
		wfx_suspend_resume(wvif, &suspend);
		wfx_suspend_resume_mc(wvif, STA_NOTIFY_SLEEP);
		tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
	} else {
		if (wvif->bss_loss_state &&
+5 −1
Original line number Diff line number Diff line
@@ -230,7 +230,11 @@ static int hif_suspend_resume_indication(struct wfx_dev *wdev,
	const struct hif_ind_suspend_resume_tx *body = buf;

	WARN_ON(!wvif);
	wfx_suspend_resume(wvif, body);
	WARN(!body->suspend_resume_flags.bc_mc_only, "unsupported suspend/resume notification");
	if (body->suspend_resume_flags.resume)
		wfx_suspend_resume_mc(wvif, STA_NOTIFY_AWAKE);
	else
		wfx_suspend_resume_mc(wvif, STA_NOTIFY_SLEEP);

	return 0;
}
+2 −8
Original line number Diff line number Diff line
@@ -985,18 +985,12 @@ int wfx_ampdu_action(struct ieee80211_hw *hw,
	return -ENOTSUPP;
}

void wfx_suspend_resume(struct wfx_vif *wvif,
			const struct hif_ind_suspend_resume_tx *arg)
void wfx_suspend_resume_mc(struct wfx_vif *wvif, enum sta_notify_cmd notify_cmd)
{
	bool cancel_tmo = false;

	if (!arg->suspend_resume_flags.bc_mc_only) {
		dev_warn(wvif->wdev->dev, "unsupported suspend/resume notification\n");
		return;
	}

	spin_lock_bh(&wvif->ps_state_lock);
	if (!arg->suspend_resume_flags.resume)
	if (notify_cmd == STA_NOTIFY_SLEEP)
		wvif->mcast_tx = false;
	else
		wvif->mcast_tx = wvif->aid0_bit_set &&
+1 −2
Original line number Diff line number Diff line
@@ -82,8 +82,7 @@ void wfx_unassign_vif_chanctx(struct ieee80211_hw *hw,
			      struct ieee80211_chanctx_conf *conf);

// WSM Callbacks
void wfx_suspend_resume(struct wfx_vif *wvif,
			const struct hif_ind_suspend_resume_tx *arg);
void wfx_suspend_resume_mc(struct wfx_vif *wvif, enum sta_notify_cmd cmd);

// Other Helpers
void wfx_cqm_bssloss_sm(struct wfx_vif *wvif, int init, int good, int bad);