Commit 95c38dd4 authored by Johannes Berg's avatar Johannes Berg Committed by Wey-Yi Guy

iwlwifi: clamp scanning dwell time to all contexts

The dwell time should at least fit into all
context's beacon intervals.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
parent 8bd413e6
...@@ -286,19 +286,28 @@ u16 iwl_get_passive_dwell_time(struct iwl_priv *priv, ...@@ -286,19 +286,28 @@ u16 iwl_get_passive_dwell_time(struct iwl_priv *priv,
enum ieee80211_band band, enum ieee80211_band band,
struct ieee80211_vif *vif) struct ieee80211_vif *vif)
{ {
struct iwl_rxon_context *ctx;
u16 passive = (band == IEEE80211_BAND_2GHZ) ? u16 passive = (band == IEEE80211_BAND_2GHZ) ?
IWL_PASSIVE_DWELL_BASE + IWL_PASSIVE_DWELL_TIME_24 : IWL_PASSIVE_DWELL_BASE + IWL_PASSIVE_DWELL_TIME_24 :
IWL_PASSIVE_DWELL_BASE + IWL_PASSIVE_DWELL_TIME_52; IWL_PASSIVE_DWELL_BASE + IWL_PASSIVE_DWELL_TIME_52;
if (iwl_is_any_associated(priv)) { if (iwl_is_any_associated(priv)) {
/* TODO: should use minimum of all contexts */ /*
/* If we're associated, we clamp the maximum passive * If we're associated, we clamp the maximum passive
* dwell time to be 98% of the beacon interval (minus * dwell time to be 98% of the smallest beacon interval
* 2 * channel tune time) */ * (minus 2 * channel tune time)
passive = vif ? vif->bss_conf.beacon_int : 0; */
if ((passive > IWL_PASSIVE_DWELL_BASE) || !passive) for_each_context(priv, ctx) {
passive = IWL_PASSIVE_DWELL_BASE; u16 value;
passive = (passive * 98) / 100 - IWL_CHANNEL_TUNE_TIME * 2;
if (!iwl_is_associated_ctx(ctx))
continue;
value = ctx->vif ? ctx->vif->bss_conf.beacon_int : 0;
if ((value > IWL_PASSIVE_DWELL_BASE) || !value)
value = IWL_PASSIVE_DWELL_BASE;
value = (value * 98) / 100 - IWL_CHANNEL_TUNE_TIME * 2;
passive = min(value, passive);
}
} }
return passive; return passive;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment