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

Commit a693534b authored by Arik Nemtsov's avatar Arik Nemtsov Committed by Luciano Coelho
Browse files

wl12xx: keep beacon-filtering enabled during STA operation



Enable beacon filtering on STA init, and don't disable it when entering
active mode. Otherwise dynamic-PS supports means we receive beacons from
the current AP during any Tx/Rx performed by the driver.

Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent d6fa37c9
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -137,11 +137,6 @@ static int wl1271_event_ps_report(struct wl1271 *wl,
	case EVENT_ENTER_POWER_SAVE_SUCCESS:
		wlvif->psm_entry_retry = 0;

		/* enable beacon filtering */
		ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
		if (ret < 0)
			break;

		/*
		 * BET has only a minor effect in 5GHz and masks
		 * channel switch IEs, so we only enable BET on 2.4GHz
+6 −6
Original line number Diff line number Diff line
@@ -254,17 +254,17 @@ static int wl12xx_init_phy_vif_config(struct wl1271 *wl,
	return 0;
}

static int wl1271_init_beacon_filter(struct wl1271 *wl,
static int wl1271_init_sta_beacon_filter(struct wl1271 *wl,
					 struct wl12xx_vif *wlvif)
{
	int ret;

	/* disable beacon filtering at this stage */
	ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
	ret = wl1271_acx_beacon_filter_table(wl, wlvif);
	if (ret < 0)
		return ret;

	ret = wl1271_acx_beacon_filter_table(wl, wlvif);
	/* enable beacon filtering */
	ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
	if (ret < 0)
		return ret;

@@ -529,7 +529,7 @@ static int wl12xx_init_sta_role(struct wl1271 *wl, struct wl12xx_vif *wlvif)
		return ret;

	/* Beacon filtering */
	ret = wl1271_init_beacon_filter(wl, wlvif);
	ret = wl1271_init_sta_beacon_filter(wl, wlvif);
	if (ret < 0)
		return ret;

+0 −5
Original line number Diff line number Diff line
@@ -185,11 +185,6 @@ int wl1271_ps_set_mode(struct wl1271 *wl, struct wl12xx_vif *wlvif,
				return ret;
		}

		/* disable beacon filtering */
		ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
		if (ret < 0)
			return ret;

		ret = wl1271_cmd_ps_mode(wl, wlvif, STATION_ACTIVE_MODE);
		if (ret < 0)
			return ret;