wl12xx: reconfigure rate policies on set_bitrate_mask
The rate policies are configured only after association, resulting in auth req being sent in wrong rates. Reconfigure rate policies on bitrate mask change. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
This commit is contained in:
committed by
Luciano Coelho
parent
679a673414
commit
d6fa37c9ff
@@ -4318,7 +4318,7 @@ static int wl12xx_set_bitrate_mask(struct ieee80211_hw *hw,
|
|||||||
{
|
{
|
||||||
struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
|
struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
|
||||||
struct wl1271 *wl = hw->priv;
|
struct wl1271 *wl = hw->priv;
|
||||||
int i;
|
int i, ret = 0;
|
||||||
|
|
||||||
wl1271_debug(DEBUG_MAC80211, "mac80211 set_bitrate_mask 0x%x 0x%x",
|
wl1271_debug(DEBUG_MAC80211, "mac80211 set_bitrate_mask 0x%x 0x%x",
|
||||||
mask->control[NL80211_BAND_2GHZ].legacy,
|
mask->control[NL80211_BAND_2GHZ].legacy,
|
||||||
@@ -4331,9 +4331,28 @@ static int wl12xx_set_bitrate_mask(struct ieee80211_hw *hw,
|
|||||||
wl1271_tx_enabled_rates_get(wl,
|
wl1271_tx_enabled_rates_get(wl,
|
||||||
mask->control[i].legacy,
|
mask->control[i].legacy,
|
||||||
i);
|
i);
|
||||||
|
|
||||||
|
if (unlikely(wl->state == WL1271_STATE_OFF))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (wlvif->bss_type == BSS_TYPE_STA_BSS &&
|
||||||
|
!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags)) {
|
||||||
|
|
||||||
|
ret = wl1271_ps_elp_wakeup(wl);
|
||||||
|
if (ret < 0)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
wl1271_set_band_rate(wl, wlvif);
|
||||||
|
wlvif->basic_rate =
|
||||||
|
wl1271_tx_min_rate_get(wl, wlvif->basic_rate_set);
|
||||||
|
ret = wl1271_acx_sta_rate_policies(wl, wlvif);
|
||||||
|
|
||||||
|
wl1271_ps_elp_sleep(wl);
|
||||||
|
}
|
||||||
|
out:
|
||||||
mutex_unlock(&wl->mutex);
|
mutex_unlock(&wl->mutex);
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
|
static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
|
||||||
|
Reference in New Issue
Block a user