|
@@ -1068,6 +1068,13 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
|
|
|
/* recalculate basic rates */
|
|
|
iwl_calc_basic_rates(priv, ctx);
|
|
|
|
|
|
+ /*
|
|
|
+ * force CTS-to-self frames protection if RTS-CTS is not preferred
|
|
|
+ * one aggregation protection method
|
|
|
+ */
|
|
|
+ if (!priv->hw_params.use_rts_for_aggregation)
|
|
|
+ ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
|
|
|
+
|
|
|
if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) ||
|
|
|
!(ctx->staging.flags & RXON_FLG_BAND_24G_MSK))
|
|
|
ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK;
|
|
@@ -1473,6 +1480,11 @@ void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
|
|
|
else
|
|
|
ctx->staging.flags &= ~RXON_FLG_TGG_PROTECT_MSK;
|
|
|
|
|
|
+ if (bss_conf->use_cts_prot)
|
|
|
+ ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
|
|
|
+ else
|
|
|
+ ctx->staging.flags &= ~RXON_FLG_SELF_CTS_EN;
|
|
|
+
|
|
|
memcpy(ctx->staging.bssid_addr, bss_conf->bssid, ETH_ALEN);
|
|
|
|
|
|
if (vif->type == NL80211_IFTYPE_AP ||
|