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

staging: wfx: firmware never return PS status for stations



At the beginning, firmware could send suspend_resume indication to
notify that a station wake up or sleep down. However, mac80211 already
handles power save status of stations and this behavior has been removed
from the firmware. So now, when suspend_resume indication is received,
it is always to notify that a DTIM is about to be sent.

So, it is possible to simply wfx_suspend_resume().

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


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6537adc3
Loading
Loading
Loading
Loading
+17 −26
Original line number Diff line number Diff line
@@ -985,20 +985,16 @@ int wfx_ampdu_action(struct ieee80211_hw *hw,
	return -ENOTSUPP;
}

static void wfx_dtim_notify(struct wfx_vif *wvif)
{
	spin_lock_bh(&wvif->ps_state_lock);
	wvif->sta_asleep_mask = 0;
	wfx_bh_request_tx(wvif->wdev);
	spin_unlock_bh(&wvif->ps_state_lock);
}

void wfx_suspend_resume(struct wfx_vif *wvif,
			const struct hif_ind_suspend_resume_tx *arg)
{
	if (arg->suspend_resume_flags.bc_mc_only) {
	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)
		wvif->mcast_tx = false;
@@ -1012,11 +1008,6 @@ void wfx_suspend_resume(struct wfx_vif *wvif,
	spin_unlock_bh(&wvif->ps_state_lock);
	if (cancel_tmo)
		del_timer_sync(&wvif->mcast_timeout);
	} else if (arg->suspend_resume_flags.resume) {
		wfx_dtim_notify(wvif);
	} else {
		dev_warn(wvif->wdev->dev, "unsupported suspend/resume notification\n");
	}
}

int wfx_add_chanctx(struct ieee80211_hw *hw,