Commit 2ed81710 authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

iwlwifi: always restrict scan dwell in P2P

Whenever the PAN (P2P) context is active, it
has timers in the uCode that prevent sleep,
so scanning can't be out of channel for more
than the beacon interval programmed into the
device.

Before this patch, a full scan including any
passive channels when P2P was active would
stall forever because it wouldn't find time
to execute the passive requests (for default
beacon intervals of 100 TU.)
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent dcc3ec04
...@@ -414,10 +414,25 @@ static u16 iwl_limit_dwell(struct iwl_priv *priv, u16 dwell_time) ...@@ -414,10 +414,25 @@ static u16 iwl_limit_dwell(struct iwl_priv *priv, u16 dwell_time)
for_each_context(priv, ctx) { for_each_context(priv, ctx) {
u16 value; u16 value;
if (!iwl_is_associated_ctx(ctx)) switch (ctx->staging.dev_type) {
continue; case RXON_DEV_TYPE_P2P:
if (ctx->staging.dev_type == RXON_DEV_TYPE_P2P) /* no timing constraints */
continue; continue;
case RXON_DEV_TYPE_ESS:
default:
/* timing constraints if associated */
if (!iwl_is_associated_ctx(ctx))
continue;
break;
case RXON_DEV_TYPE_CP:
case RXON_DEV_TYPE_2STA:
/*
* These seem to always have timers for TBTT
* active in uCode even when not associated yet.
*/
break;
}
value = ctx->beacon_int; value = ctx->beacon_int;
if (!value) if (!value)
value = IWL_PASSIVE_DWELL_BASE; value = IWL_PASSIVE_DWELL_BASE;
......
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