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

Commit 6ab70916 authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho
Browse files

wl12xx: check the actual vif operstate in wl1271_dev_notify



The current wl1271_dev_notify implementation sets the
new operstate to all associated stations (while only
a specific vif was changed).

Until we'll have a method to get the actual vif from
the given dev, check the current operstate of each vif.

Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent b890f4c3
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -450,7 +450,16 @@ static int wl1271_dev_notify(struct notifier_block *me, unsigned long what,
	if (wl->state == WL1271_STATE_OFF)
	if (wl->state == WL1271_STATE_OFF)
		goto out;
		goto out;


	if (dev->operstate != IF_OPER_UP)
		goto out;
	/*
	 * The correct behavior should be just getting the appropriate wlvif
	 * from the given dev, but currently we don't have a mac80211
	 * interface for it.
	 */
	wl12xx_for_each_wlvif_sta(wl, wlvif) {
	wl12xx_for_each_wlvif_sta(wl, wlvif) {
		struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);

		if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
		if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
			continue;
			continue;


@@ -458,7 +467,8 @@ static int wl1271_dev_notify(struct notifier_block *me, unsigned long what,
		if (ret < 0)
		if (ret < 0)
			goto out;
			goto out;


		wl1271_check_operstate(wl, wlvif, dev->operstate);
		wl1271_check_operstate(wl, wlvif,
				       ieee80211_get_operstate(vif));


		wl1271_ps_elp_sleep(wl);
		wl1271_ps_elp_sleep(wl);
	}
	}