|
@@ -529,10 +529,22 @@ int iwl_send_rxon_timing(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
|
|
|
ctx->timing.atim_window = 0;
|
|
|
|
|
|
if (ctx->ctxid == IWL_RXON_CTX_PAN &&
|
|
|
- (!ctx->vif || ctx->vif->type != NL80211_IFTYPE_STATION)) {
|
|
|
+ (!ctx->vif || ctx->vif->type != NL80211_IFTYPE_STATION) &&
|
|
|
+ iwl_is_associated(priv, IWL_RXON_CTX_BSS) &&
|
|
|
+ priv->contexts[IWL_RXON_CTX_BSS].vif &&
|
|
|
+ priv->contexts[IWL_RXON_CTX_BSS].vif->bss_conf.beacon_int) {
|
|
|
ctx->timing.beacon_interval =
|
|
|
priv->contexts[IWL_RXON_CTX_BSS].timing.beacon_interval;
|
|
|
beacon_int = le16_to_cpu(ctx->timing.beacon_interval);
|
|
|
+ } else if (ctx->ctxid == IWL_RXON_CTX_BSS &&
|
|
|
+ iwl_is_associated(priv, IWL_RXON_CTX_PAN) &&
|
|
|
+ priv->contexts[IWL_RXON_CTX_PAN].vif &&
|
|
|
+ priv->contexts[IWL_RXON_CTX_PAN].vif->bss_conf.beacon_int &&
|
|
|
+ (!iwl_is_associated_ctx(ctx) || !ctx->vif ||
|
|
|
+ !ctx->vif->bss_conf.beacon_int)) {
|
|
|
+ ctx->timing.beacon_interval =
|
|
|
+ priv->contexts[IWL_RXON_CTX_PAN].timing.beacon_interval;
|
|
|
+ beacon_int = le16_to_cpu(ctx->timing.beacon_interval);
|
|
|
} else {
|
|
|
beacon_int = iwl_adjust_beacon_interval(beacon_int,
|
|
|
priv->hw_params.max_beacon_itrvl * TIME_UNIT);
|