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

Commit 74ec8395 authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho
Browse files

wl12xx: move ps_poll_failures and psm_entry_retry into wlvif



move ps_poll_failures and psm_entry_retries into the per-interface
data, rather than being global.

Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 6ec45dc2
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -351,8 +351,6 @@ static ssize_t driver_state_read(struct file *file, char __user *user_buf,
	DRIVER_STATE_PRINT_INT(state);
	DRIVER_STATE_PRINT_INT(channel);
	DRIVER_STATE_PRINT_INT(band);
	DRIVER_STATE_PRINT_INT(psm_entry_retry);
	DRIVER_STATE_PRINT_INT(ps_poll_failures);
	DRIVER_STATE_PRINT_INT(power_level);
	DRIVER_STATE_PRINT_INT(rssi_thold);
	DRIVER_STATE_PRINT_INT(last_rssi_event);
+7 −7
Original line number Diff line number Diff line
@@ -78,8 +78,8 @@ static void wl1271_event_pspoll_delivery_fail(struct wl1271 *wl,
	int delay = wl->conf.conn.ps_poll_recovery_period;
	int ret;

	wl->ps_poll_failures++;
	if (wl->ps_poll_failures == 1)
	wlvif->ps_poll_failures++;
	if (wlvif->ps_poll_failures == 1)
		wl1271_info("AP with dysfunctional ps-poll, "
			    "trying to work around it.");

@@ -118,23 +118,23 @@ static int wl1271_event_ps_report(struct wl1271 *wl,

		if (!test_bit(WL1271_FLAG_PSM, &wl->flags)) {
			/* remain in active mode */
			wl->psm_entry_retry = 0;
			wlvif->psm_entry_retry = 0;
			break;
		}

		if (wl->psm_entry_retry < total_retries) {
			wl->psm_entry_retry++;
		if (wlvif->psm_entry_retry < total_retries) {
			wlvif->psm_entry_retry++;
			ret = wl1271_ps_set_mode(wl, wlvif,
						 STATION_POWER_SAVE_MODE,
						 wlvif->basic_rate, true);
		} else {
			wl1271_info("No ack to nullfunc from AP.");
			wl->psm_entry_retry = 0;
			wlvif->psm_entry_retry = 0;
			*beacon_loss = true;
		}
		break;
	case EVENT_ENTER_POWER_SAVE_SUCCESS:
		wl->psm_entry_retry = 0;
		wlvif->psm_entry_retry = 0;

		/* enable beacon filtering */
		ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
+1 −3
Original line number Diff line number Diff line
@@ -2141,7 +2141,6 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl,
	wl->band = IEEE80211_BAND_2GHZ;

	wl->rx_counter = 0;
	wl->psm_entry_retry = 0;
	wl->power_level = WL1271_DEFAULT_POWER_LEVEL;
	wl->tx_blocks_available = 0;
	wl->tx_allocated_blocks = 0;
@@ -3540,7 +3539,7 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
			wlvif->aid = bss_conf->aid;
			set_assoc = true;

			wl->ps_poll_failures = 0;
			wlvif->ps_poll_failures = 0;

			/*
			 * use basic rates from AP, and determine lowest rate
@@ -4894,7 +4893,6 @@ struct ieee80211_hw *wl1271_alloc_hw(void)

	wl->channel = WL1271_DEFAULT_CHANNEL;
	wl->rx_counter = 0;
	wl->psm_entry_retry = 0;
	wl->power_level = WL1271_DEFAULT_POWER_LEVEL;
	wl->band = IEEE80211_BAND_2GHZ;
	wl->vif = NULL;
+6 −6
Original line number Diff line number Diff line
@@ -511,12 +511,6 @@ struct wl1271 {
	struct completion *elp_compl;
	struct delayed_work elp_work;

	/* counter for ps-poll delivery failures */
	int ps_poll_failures;

	/* retry counter for PSM entries */
	u8 psm_entry_retry;

	/* in dBm */
	int power_level;

@@ -652,6 +646,12 @@ struct wl12xx_vif {

	struct completion *ps_compl;
	struct delayed_work pspoll_work;

	/* counter for ps-poll delivery failures */
	int ps_poll_failures;

	/* retry counter for PSM entries */
	u8 psm_entry_retry;
};

static inline struct wl12xx_vif *wl12xx_vif_to_data(struct ieee80211_vif *vif)