Lines Matching refs:ctx
39 struct iwl_rxon_context *ctx) in iwl_connection_init_rx_config() argument
41 memset(&ctx->staging, 0, sizeof(ctx->staging)); in iwl_connection_init_rx_config()
43 if (!ctx->vif) { in iwl_connection_init_rx_config()
44 ctx->staging.dev_type = ctx->unused_devtype; in iwl_connection_init_rx_config()
46 switch (ctx->vif->type) { in iwl_connection_init_rx_config()
48 ctx->staging.dev_type = ctx->ap_devtype; in iwl_connection_init_rx_config()
52 ctx->staging.dev_type = ctx->station_devtype; in iwl_connection_init_rx_config()
53 ctx->staging.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK; in iwl_connection_init_rx_config()
57 ctx->staging.dev_type = ctx->ibss_devtype; in iwl_connection_init_rx_config()
58 ctx->staging.flags = RXON_FLG_SHORT_PREAMBLE_MSK; in iwl_connection_init_rx_config()
59 ctx->staging.filter_flags = RXON_FILTER_BCON_AWARE_MSK | in iwl_connection_init_rx_config()
64 ctx->staging.dev_type = RXON_DEV_TYPE_SNIFFER; in iwl_connection_init_rx_config()
69 ctx->vif->type); in iwl_connection_init_rx_config()
77 ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in iwl_connection_init_rx_config()
79 ctx->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in iwl_connection_init_rx_config()
82 ctx->staging.channel = in iwl_connection_init_rx_config()
86 iwl_set_flags_for_band(priv, ctx, priv->band, ctx->vif); in iwl_connection_init_rx_config()
89 ctx->staging.flags &= ~(RXON_FLG_CHANNEL_MODE_MIXED | in iwl_connection_init_rx_config()
91 if (ctx->vif) in iwl_connection_init_rx_config()
92 memcpy(ctx->staging.node_addr, ctx->vif->addr, ETH_ALEN); in iwl_connection_init_rx_config()
94 ctx->staging.ofdm_ht_single_stream_basic_rates = 0xff; in iwl_connection_init_rx_config()
95 ctx->staging.ofdm_ht_dual_stream_basic_rates = 0xff; in iwl_connection_init_rx_config()
96 ctx->staging.ofdm_ht_triple_stream_basic_rates = 0xff; in iwl_connection_init_rx_config()
100 struct iwl_rxon_context *ctx, in iwlagn_disable_bss() argument
107 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, in iwlagn_disable_bss()
120 struct iwl_rxon_context *ctx, in iwlagn_disable_pan() argument
137 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, in iwlagn_disable_pan()
157 struct iwl_rxon_context *ctx, in iwlagn_disconn_pan() argument
164 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, 0, in iwlagn_disconn_pan()
173 struct iwl_rxon_context *ctx) in iwlagn_update_qos() argument
177 if (!ctx->is_active) in iwlagn_update_qos()
180 ctx->qos_data.def_qos_parm.qos_flags = 0; in iwlagn_update_qos()
182 if (ctx->qos_data.qos_active) in iwlagn_update_qos()
183 ctx->qos_data.def_qos_parm.qos_flags |= in iwlagn_update_qos()
186 if (ctx->ht.enabled) in iwlagn_update_qos()
187 ctx->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK; in iwlagn_update_qos()
190 ctx->qos_data.qos_active, in iwlagn_update_qos()
191 ctx->qos_data.def_qos_parm.qos_flags); in iwlagn_update_qos()
193 ret = iwl_dvm_send_cmd_pdu(priv, ctx->qos_cmd, 0, in iwlagn_update_qos()
195 &ctx->qos_data.def_qos_parm); in iwlagn_update_qos()
213 struct iwl_rxon_context *ctx) in iwlagn_send_rxon_assoc() argument
217 const struct iwl_rxon_cmd *rxon1 = &ctx->staging; in iwlagn_send_rxon_assoc()
218 const struct iwl_rxon_cmd *rxon2 = &ctx->active; in iwlagn_send_rxon_assoc()
236 rxon_assoc.flags = ctx->staging.flags; in iwlagn_send_rxon_assoc()
237 rxon_assoc.filter_flags = ctx->staging.filter_flags; in iwlagn_send_rxon_assoc()
238 rxon_assoc.ofdm_basic_rates = ctx->staging.ofdm_basic_rates; in iwlagn_send_rxon_assoc()
239 rxon_assoc.cck_basic_rates = ctx->staging.cck_basic_rates; in iwlagn_send_rxon_assoc()
244 ctx->staging.ofdm_ht_single_stream_basic_rates; in iwlagn_send_rxon_assoc()
246 ctx->staging.ofdm_ht_dual_stream_basic_rates; in iwlagn_send_rxon_assoc()
247 rxon_assoc.rx_chain_select_flags = ctx->staging.rx_chain; in iwlagn_send_rxon_assoc()
249 ctx->staging.ofdm_ht_triple_stream_basic_rates; in iwlagn_send_rxon_assoc()
250 rxon_assoc.acquisition_data = ctx->staging.acquisition_data; in iwlagn_send_rxon_assoc()
252 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_assoc_cmd, in iwlagn_send_rxon_assoc()
293 struct iwl_rxon_context *ctx) in iwl_send_rxon_timing() argument
299 struct ieee80211_vif *vif = ctx->vif; in iwl_send_rxon_timing()
305 memset(&ctx->timing, 0, sizeof(struct iwl_rxon_time_cmd)); in iwl_send_rxon_timing()
307 ctx->timing.timestamp = cpu_to_le64(priv->timestamp); in iwl_send_rxon_timing()
308 ctx->timing.listen_interval = cpu_to_le16(conf->listen_interval); in iwl_send_rxon_timing()
316 ctx->timing.atim_window = 0; in iwl_send_rxon_timing()
318 if (ctx->ctxid == IWL_RXON_CTX_PAN && in iwl_send_rxon_timing()
319 (!ctx->vif || ctx->vif->type != NL80211_IFTYPE_STATION) && in iwl_send_rxon_timing()
323 ctx->timing.beacon_interval = in iwl_send_rxon_timing()
325 beacon_int = le16_to_cpu(ctx->timing.beacon_interval); in iwl_send_rxon_timing()
326 } else if (ctx->ctxid == IWL_RXON_CTX_BSS && in iwl_send_rxon_timing()
330 (!iwl_is_associated_ctx(ctx) || !ctx->vif || in iwl_send_rxon_timing()
331 !ctx->vif->bss_conf.beacon_int)) { in iwl_send_rxon_timing()
332 ctx->timing.beacon_interval = in iwl_send_rxon_timing()
334 beacon_int = le16_to_cpu(ctx->timing.beacon_interval); in iwl_send_rxon_timing()
338 ctx->timing.beacon_interval = cpu_to_le16(beacon_int); in iwl_send_rxon_timing()
341 ctx->beacon_int = beacon_int; in iwl_send_rxon_timing()
346 ctx->timing.beacon_init_val = cpu_to_le32(interval_tm - rem); in iwl_send_rxon_timing()
348 ctx->timing.dtim_period = vif ? (vif->bss_conf.dtim_period ?: 1) : 1; in iwl_send_rxon_timing()
352 le16_to_cpu(ctx->timing.beacon_interval), in iwl_send_rxon_timing()
353 le32_to_cpu(ctx->timing.beacon_init_val), in iwl_send_rxon_timing()
354 le16_to_cpu(ctx->timing.atim_window)); in iwl_send_rxon_timing()
356 return iwl_dvm_send_cmd_pdu(priv, ctx->rxon_timing_cmd, in iwl_send_rxon_timing()
357 0, sizeof(ctx->timing), &ctx->timing); in iwl_send_rxon_timing()
361 struct iwl_rxon_context *ctx) in iwlagn_rxon_disconn() argument
364 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_rxon_disconn()
366 if (ctx->ctxid == IWL_RXON_CTX_BSS) { in iwlagn_rxon_disconn()
367 ret = iwlagn_disable_bss(priv, ctx, &ctx->staging); in iwlagn_rxon_disconn()
369 ret = iwlagn_disable_pan(priv, ctx, &ctx->staging); in iwlagn_rxon_disconn()
372 if (ctx->vif) { in iwlagn_rxon_disconn()
373 ret = iwl_send_rxon_timing(priv, ctx); in iwlagn_rxon_disconn()
378 ret = iwlagn_disconn_pan(priv, ctx, &ctx->staging); in iwlagn_rxon_disconn()
388 iwl_clear_ucode_stations(priv, ctx); in iwlagn_rxon_disconn()
390 iwl_update_bcast_station(priv, ctx); in iwlagn_rxon_disconn()
391 iwl_restore_stations(priv, ctx); in iwlagn_rxon_disconn()
392 ret = iwl_restore_default_wep_keys(priv, ctx); in iwlagn_rxon_disconn()
398 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_rxon_disconn()
407 struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; in iwl_set_tx_power() local
441 memcmp(&ctx->active, &ctx->staging, sizeof(ctx->staging)); in iwl_set_tx_power()
461 struct iwl_rxon_context *ctx) in iwlagn_rxon_connect() argument
464 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_rxon_connect()
467 if (ctx->ctxid == IWL_RXON_CTX_BSS) { in iwlagn_rxon_connect()
468 ret = iwl_send_rxon_timing(priv, ctx); in iwlagn_rxon_connect()
475 iwlagn_update_qos(priv, ctx); in iwlagn_rxon_connect()
482 if (ctx->vif && (ctx->vif->type == NL80211_IFTYPE_AP)) { in iwlagn_rxon_connect()
483 ret = iwlagn_update_beacon(priv, ctx->vif); in iwlagn_rxon_connect()
499 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, 0, in iwlagn_rxon_connect()
500 sizeof(struct iwl_rxon_cmd), &ctx->staging); in iwlagn_rxon_connect()
505 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_rxon_connect()
508 if (ctx->vif && (ctx->vif->type == NL80211_IFTYPE_ADHOC)) in iwlagn_rxon_connect()
509 if (iwlagn_update_beacon(priv, ctx->vif)) in iwlagn_rxon_connect()
619 struct iwl_rxon_context *ctx) in _iwl_set_rxon_ht() argument
621 struct iwl_rxon_cmd *rxon = &ctx->staging; in _iwl_set_rxon_ht()
623 if (!ctx->ht.enabled) { in _iwl_set_rxon_ht()
634 rxon->flags |= cpu_to_le32(ctx->ht.protection << in _iwl_set_rxon_ht()
642 if (iwl_is_ht40_tx_allowed(priv, ctx, NULL)) { in _iwl_set_rxon_ht()
644 if (ctx->ht.protection == in _iwl_set_rxon_ht()
651 switch (ctx->ht.extension_chan_offset) { in _iwl_set_rxon_ht()
666 switch (ctx->ht.extension_chan_offset) { in _iwl_set_rxon_ht()
691 iwlagn_set_rxon_chain(priv, ctx); in _iwl_set_rxon_ht()
695 le32_to_cpu(rxon->flags), ctx->ht.protection, in _iwl_set_rxon_ht()
696 ctx->ht.extension_chan_offset); in _iwl_set_rxon_ht()
701 struct iwl_rxon_context *ctx; in iwl_set_rxon_ht() local
703 for_each_context(priv, ctx) in iwl_set_rxon_ht()
704 _iwl_set_rxon_ht(priv, ht_conf, ctx); in iwl_set_rxon_ht()
715 struct iwl_rxon_context *ctx) in iwl_set_rxon_channel() argument
720 if ((le16_to_cpu(ctx->staging.channel) == channel) && in iwl_set_rxon_channel()
724 ctx->staging.channel = cpu_to_le16(channel); in iwl_set_rxon_channel()
726 ctx->staging.flags &= ~RXON_FLG_BAND_24G_MSK; in iwl_set_rxon_channel()
728 ctx->staging.flags |= RXON_FLG_BAND_24G_MSK; in iwl_set_rxon_channel()
737 struct iwl_rxon_context *ctx, in iwl_set_flags_for_band() argument
742 ctx->staging.flags &= in iwl_set_flags_for_band()
745 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
749 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
751 ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
753 ctx->staging.flags |= RXON_FLG_BAND_24G_MSK; in iwl_set_flags_for_band()
754 ctx->staging.flags |= RXON_FLG_AUTO_DETECT_MSK; in iwl_set_flags_for_band()
755 ctx->staging.flags &= ~RXON_FLG_CCK_MSK; in iwl_set_flags_for_band()
760 struct iwl_rxon_context *ctx, int hw_decrypt) in iwl_set_rxon_hwcrypto() argument
762 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_set_rxon_hwcrypto()
773 struct iwl_rxon_context *ctx) in iwl_check_rxon_cmd() argument
775 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_check_rxon_cmd()
853 struct iwl_rxon_context *ctx) in iwl_full_rxon_required() argument
855 const struct iwl_rxon_cmd *staging = &ctx->staging; in iwl_full_rxon_required()
856 const struct iwl_rxon_cmd *active = &ctx->active; in iwl_full_rxon_required()
873 CHK(!iwl_is_associated_ctx(ctx)); in iwl_full_rxon_required()
911 struct iwl_rxon_context *ctx = &priv->contexts[ctxid]; in iwl_print_rx_config_cmd() local
912 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_print_rx_config_cmd()
935 struct iwl_rxon_context *ctx) in iwl_calc_basic_rates() argument
942 if (ctx->vif) { in iwl_calc_basic_rates()
944 unsigned long basic = ctx->vif->bss_conf.basic_rates; in iwl_calc_basic_rates()
1021 ctx->staging.cck_basic_rates = cck; in iwl_calc_basic_rates()
1022 ctx->staging.ofdm_basic_rates = ofdm; in iwl_calc_basic_rates()
1043 int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) in iwlagn_commit_rxon() argument
1046 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_commit_rxon()
1047 bool new_assoc = !!(ctx->staging.filter_flags & RXON_FILTER_ASSOC_MSK); in iwlagn_commit_rxon()
1058 if (!ctx->is_active) in iwlagn_commit_rxon()
1062 ctx->staging.flags |= RXON_FLG_TSF2HOST_MSK; in iwlagn_commit_rxon()
1065 iwl_calc_basic_rates(priv, ctx); in iwlagn_commit_rxon()
1072 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; in iwlagn_commit_rxon()
1074 if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) || in iwlagn_commit_rxon()
1075 !(ctx->staging.flags & RXON_FLG_BAND_24G_MSK)) in iwlagn_commit_rxon()
1076 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwlagn_commit_rxon()
1078 ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in iwlagn_commit_rxon()
1080 iwl_print_rx_config_cmd(priv, ctx->ctxid); in iwlagn_commit_rxon()
1081 ret = iwl_check_rxon_cmd(priv, ctx); in iwlagn_commit_rxon()
1092 (priv->switch_channel != ctx->staging.channel)) { in iwlagn_commit_rxon()
1103 if (!iwl_full_rxon_required(priv, ctx)) { in iwlagn_commit_rxon()
1104 ret = iwlagn_send_rxon_assoc(priv, ctx); in iwlagn_commit_rxon()
1110 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_commit_rxon()
1123 iwl_set_rxon_hwcrypto(priv, ctx, !iwlwifi_mod_params.sw_crypto); in iwlagn_commit_rxon()
1131 le16_to_cpu(ctx->staging.channel), in iwlagn_commit_rxon()
1132 ctx->staging.bssid_addr); in iwlagn_commit_rxon()
1140 ret = iwlagn_rxon_disconn(priv, ctx); in iwlagn_commit_rxon()
1149 return iwlagn_rxon_connect(priv, ctx); in iwlagn_commit_rxon()
1155 struct iwl_rxon_context *ctx) in iwlagn_config_ht40() argument
1158 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1160 ctx->ht.is_40mhz = true; in iwlagn_config_ht40()
1162 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1164 ctx->ht.is_40mhz = true; in iwlagn_config_ht40()
1166 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1168 ctx->ht.is_40mhz = false; in iwlagn_config_ht40()
1175 struct iwl_rxon_context *ctx; in iwlagn_mac_config() local
1206 for_each_context(priv, ctx) in iwlagn_mac_config()
1207 iwlagn_set_rxon_chain(priv, ctx); in iwlagn_mac_config()
1211 for_each_context(priv, ctx) { in iwlagn_mac_config()
1213 if (ctx->ht.enabled != conf_is_ht(conf)) in iwlagn_mac_config()
1214 ctx->ht.enabled = conf_is_ht(conf); in iwlagn_mac_config()
1216 if (ctx->ht.enabled) { in iwlagn_mac_config()
1219 if (!ctx->ht.is_40mhz || in iwlagn_mac_config()
1220 !iwl_is_associated_ctx(ctx)) in iwlagn_mac_config()
1221 iwlagn_config_ht40(conf, ctx); in iwlagn_mac_config()
1223 ctx->ht.is_40mhz = false; in iwlagn_mac_config()
1229 ctx->ht.protection = IEEE80211_HT_OP_MODE_PROTECTION_NONE; in iwlagn_mac_config()
1234 if (le16_to_cpu(ctx->staging.channel) != in iwlagn_mac_config()
1236 ctx->staging.flags = 0; in iwlagn_mac_config()
1238 iwl_set_rxon_channel(priv, channel, ctx); in iwlagn_mac_config()
1241 iwl_set_flags_for_band(priv, ctx, channel->band, in iwlagn_mac_config()
1242 ctx->vif); in iwlagn_mac_config()
1262 for_each_context(priv, ctx) { in iwlagn_mac_config()
1263 if (!memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_mac_config()
1265 iwlagn_commit_rxon(priv, ctx); in iwlagn_mac_config()
1275 struct iwl_rxon_context *ctx, in iwlagn_check_needed_chains() argument
1278 struct ieee80211_vif *vif = ctx->vif; in iwlagn_check_needed_chains()
1351 ctx->ht_need_multiple_chains = need_multiple; in iwlagn_check_needed_chains()
1409 struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif); in iwlagn_bss_info_changed() local
1429 if (unlikely(!ctx->vif)) { in iwlagn_bss_info_changed()
1439 ctx->qos_data.qos_active = bss_conf->qos; in iwlagn_bss_info_changed()
1440 iwlagn_update_qos(priv, ctx); in iwlagn_bss_info_changed()
1443 ctx->staging.assoc_id = cpu_to_le16(vif->bss_conf.aid); in iwlagn_bss_info_changed()
1445 ctx->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in iwlagn_bss_info_changed()
1447 ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in iwlagn_bss_info_changed()
1452 ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1454 ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1456 if (ctx->ctxid == IWL_RXON_CTX_BSS) in iwlagn_bss_info_changed()
1463 if (ctx->ht.enabled) { in iwlagn_bss_info_changed()
1464 ctx->ht.protection = bss_conf->ht_operation_mode & in iwlagn_bss_info_changed()
1466 ctx->ht.non_gf_sta_present = !!(bss_conf->ht_operation_mode & in iwlagn_bss_info_changed()
1468 iwlagn_check_needed_chains(priv, ctx, bss_conf); in iwlagn_bss_info_changed()
1472 iwlagn_set_rxon_chain(priv, ctx); in iwlagn_bss_info_changed()
1475 ctx->staging.flags |= RXON_FLG_TGG_PROTECT_MSK; in iwlagn_bss_info_changed()
1477 ctx->staging.flags &= ~RXON_FLG_TGG_PROTECT_MSK; in iwlagn_bss_info_changed()
1480 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; in iwlagn_bss_info_changed()
1482 ctx->staging.flags &= ~RXON_FLG_SELF_CTS_EN; in iwlagn_bss_info_changed()
1484 memcpy(ctx->staging.bssid_addr, bss_conf->bssid, ETH_ALEN); in iwlagn_bss_info_changed()
1489 ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1490 priv->beacon_ctx = ctx; in iwlagn_bss_info_changed()
1492 ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1507 ctx->staging.filter_flags |= RXON_FILTER_BCON_AWARE_MSK; in iwlagn_bss_info_changed()
1509 ctx->staging.filter_flags &= in iwlagn_bss_info_changed()
1513 if (force || memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_bss_info_changed()
1514 iwlagn_commit_rxon(priv, ctx); in iwlagn_bss_info_changed()
1539 if (changes & BSS_CHANGED_BEACON && priv->beacon_ctx == ctx) { in iwlagn_bss_info_changed()
1549 struct iwl_rxon_context *ctx; in iwlagn_post_scan() local
1562 for_each_context(priv, ctx) in iwlagn_post_scan()
1563 if (memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_post_scan()
1564 iwlagn_commit_rxon(priv, ctx); in iwlagn_post_scan()