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: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
This commit is contained in:
parent
6ec45dc282
commit
74ec839557
4 changed files with 14 additions and 18 deletions
|
@ -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(state);
|
||||||
DRIVER_STATE_PRINT_INT(channel);
|
DRIVER_STATE_PRINT_INT(channel);
|
||||||
DRIVER_STATE_PRINT_INT(band);
|
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(power_level);
|
||||||
DRIVER_STATE_PRINT_INT(rssi_thold);
|
DRIVER_STATE_PRINT_INT(rssi_thold);
|
||||||
DRIVER_STATE_PRINT_INT(last_rssi_event);
|
DRIVER_STATE_PRINT_INT(last_rssi_event);
|
||||||
|
|
|
@ -78,8 +78,8 @@ static void wl1271_event_pspoll_delivery_fail(struct wl1271 *wl,
|
||||||
int delay = wl->conf.conn.ps_poll_recovery_period;
|
int delay = wl->conf.conn.ps_poll_recovery_period;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
wl->ps_poll_failures++;
|
wlvif->ps_poll_failures++;
|
||||||
if (wl->ps_poll_failures == 1)
|
if (wlvif->ps_poll_failures == 1)
|
||||||
wl1271_info("AP with dysfunctional ps-poll, "
|
wl1271_info("AP with dysfunctional ps-poll, "
|
||||||
"trying to work around it.");
|
"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)) {
|
if (!test_bit(WL1271_FLAG_PSM, &wl->flags)) {
|
||||||
/* remain in active mode */
|
/* remain in active mode */
|
||||||
wl->psm_entry_retry = 0;
|
wlvif->psm_entry_retry = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wl->psm_entry_retry < total_retries) {
|
if (wlvif->psm_entry_retry < total_retries) {
|
||||||
wl->psm_entry_retry++;
|
wlvif->psm_entry_retry++;
|
||||||
ret = wl1271_ps_set_mode(wl, wlvif,
|
ret = wl1271_ps_set_mode(wl, wlvif,
|
||||||
STATION_POWER_SAVE_MODE,
|
STATION_POWER_SAVE_MODE,
|
||||||
wlvif->basic_rate, true);
|
wlvif->basic_rate, true);
|
||||||
} else {
|
} else {
|
||||||
wl1271_info("No ack to nullfunc from AP.");
|
wl1271_info("No ack to nullfunc from AP.");
|
||||||
wl->psm_entry_retry = 0;
|
wlvif->psm_entry_retry = 0;
|
||||||
*beacon_loss = true;
|
*beacon_loss = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EVENT_ENTER_POWER_SAVE_SUCCESS:
|
case EVENT_ENTER_POWER_SAVE_SUCCESS:
|
||||||
wl->psm_entry_retry = 0;
|
wlvif->psm_entry_retry = 0;
|
||||||
|
|
||||||
/* enable beacon filtering */
|
/* enable beacon filtering */
|
||||||
ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
|
ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
|
||||||
|
|
|
@ -2141,7 +2141,6 @@ deinit:
|
||||||
wl->band = IEEE80211_BAND_2GHZ;
|
wl->band = IEEE80211_BAND_2GHZ;
|
||||||
|
|
||||||
wl->rx_counter = 0;
|
wl->rx_counter = 0;
|
||||||
wl->psm_entry_retry = 0;
|
|
||||||
wl->power_level = WL1271_DEFAULT_POWER_LEVEL;
|
wl->power_level = WL1271_DEFAULT_POWER_LEVEL;
|
||||||
wl->tx_blocks_available = 0;
|
wl->tx_blocks_available = 0;
|
||||||
wl->tx_allocated_blocks = 0;
|
wl->tx_allocated_blocks = 0;
|
||||||
|
@ -3540,7 +3539,7 @@ sta_not_found:
|
||||||
wlvif->aid = bss_conf->aid;
|
wlvif->aid = bss_conf->aid;
|
||||||
set_assoc = true;
|
set_assoc = true;
|
||||||
|
|
||||||
wl->ps_poll_failures = 0;
|
wlvif->ps_poll_failures = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* use basic rates from AP, and determine lowest rate
|
* 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->channel = WL1271_DEFAULT_CHANNEL;
|
||||||
wl->rx_counter = 0;
|
wl->rx_counter = 0;
|
||||||
wl->psm_entry_retry = 0;
|
|
||||||
wl->power_level = WL1271_DEFAULT_POWER_LEVEL;
|
wl->power_level = WL1271_DEFAULT_POWER_LEVEL;
|
||||||
wl->band = IEEE80211_BAND_2GHZ;
|
wl->band = IEEE80211_BAND_2GHZ;
|
||||||
wl->vif = NULL;
|
wl->vif = NULL;
|
||||||
|
|
|
@ -511,12 +511,6 @@ struct wl1271 {
|
||||||
struct completion *elp_compl;
|
struct completion *elp_compl;
|
||||||
struct delayed_work elp_work;
|
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 */
|
/* in dBm */
|
||||||
int power_level;
|
int power_level;
|
||||||
|
|
||||||
|
@ -652,6 +646,12 @@ struct wl12xx_vif {
|
||||||
|
|
||||||
struct completion *ps_compl;
|
struct completion *ps_compl;
|
||||||
struct delayed_work pspoll_work;
|
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)
|
static inline struct wl12xx_vif *wl12xx_vif_to_data(struct ieee80211_vif *vif)
|
||||||
|
|
Loading…
Add table
Reference in a new issue