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()
526 if (ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION && in iwlagn_rxon_connect()
528 ieee80211_request_smps(ctx->vif, in iwlagn_rxon_connect()
624 struct iwl_rxon_context *ctx) in _iwl_set_rxon_ht() argument
626 struct iwl_rxon_cmd *rxon = &ctx->staging; in _iwl_set_rxon_ht()
628 if (!ctx->ht.enabled) { in _iwl_set_rxon_ht()
639 rxon->flags |= cpu_to_le32(ctx->ht.protection << in _iwl_set_rxon_ht()
647 if (iwl_is_ht40_tx_allowed(priv, ctx, NULL)) { in _iwl_set_rxon_ht()
649 if (ctx->ht.protection == in _iwl_set_rxon_ht()
656 switch (ctx->ht.extension_chan_offset) { in _iwl_set_rxon_ht()
671 switch (ctx->ht.extension_chan_offset) { in _iwl_set_rxon_ht()
696 iwlagn_set_rxon_chain(priv, ctx); in _iwl_set_rxon_ht()
700 le32_to_cpu(rxon->flags), ctx->ht.protection, in _iwl_set_rxon_ht()
701 ctx->ht.extension_chan_offset); in _iwl_set_rxon_ht()
706 struct iwl_rxon_context *ctx; in iwl_set_rxon_ht() local
708 for_each_context(priv, ctx) in iwl_set_rxon_ht()
709 _iwl_set_rxon_ht(priv, ht_conf, ctx); in iwl_set_rxon_ht()
720 struct iwl_rxon_context *ctx) in iwl_set_rxon_channel() argument
725 if ((le16_to_cpu(ctx->staging.channel) == channel) && in iwl_set_rxon_channel()
729 ctx->staging.channel = cpu_to_le16(channel); in iwl_set_rxon_channel()
731 ctx->staging.flags &= ~RXON_FLG_BAND_24G_MSK; in iwl_set_rxon_channel()
733 ctx->staging.flags |= RXON_FLG_BAND_24G_MSK; in iwl_set_rxon_channel()
742 struct iwl_rxon_context *ctx, in iwl_set_flags_for_band() argument
747 ctx->staging.flags &= in iwl_set_flags_for_band()
750 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
754 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
756 ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
758 ctx->staging.flags |= RXON_FLG_BAND_24G_MSK; in iwl_set_flags_for_band()
759 ctx->staging.flags |= RXON_FLG_AUTO_DETECT_MSK; in iwl_set_flags_for_band()
760 ctx->staging.flags &= ~RXON_FLG_CCK_MSK; in iwl_set_flags_for_band()
765 struct iwl_rxon_context *ctx, int hw_decrypt) in iwl_set_rxon_hwcrypto() argument
767 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_set_rxon_hwcrypto()
778 struct iwl_rxon_context *ctx) in iwl_check_rxon_cmd() argument
780 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_check_rxon_cmd()
858 struct iwl_rxon_context *ctx) in iwl_full_rxon_required() argument
860 const struct iwl_rxon_cmd *staging = &ctx->staging; in iwl_full_rxon_required()
861 const struct iwl_rxon_cmd *active = &ctx->active; in iwl_full_rxon_required()
878 CHK(!iwl_is_associated_ctx(ctx)); in iwl_full_rxon_required()
916 struct iwl_rxon_context *ctx = &priv->contexts[ctxid]; in iwl_print_rx_config_cmd() local
917 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_print_rx_config_cmd()
940 struct iwl_rxon_context *ctx) in iwl_calc_basic_rates() argument
947 if (ctx->vif) { in iwl_calc_basic_rates()
949 unsigned long basic = ctx->vif->bss_conf.basic_rates; in iwl_calc_basic_rates()
1026 ctx->staging.cck_basic_rates = cck; in iwl_calc_basic_rates()
1027 ctx->staging.ofdm_basic_rates = ofdm; in iwl_calc_basic_rates()
1048 int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) in iwlagn_commit_rxon() argument
1051 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_commit_rxon()
1052 bool new_assoc = !!(ctx->staging.filter_flags & RXON_FILTER_ASSOC_MSK); in iwlagn_commit_rxon()
1063 if (!ctx->is_active) in iwlagn_commit_rxon()
1067 ctx->staging.flags |= RXON_FLG_TSF2HOST_MSK; in iwlagn_commit_rxon()
1070 iwl_calc_basic_rates(priv, ctx); in iwlagn_commit_rxon()
1077 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; in iwlagn_commit_rxon()
1079 if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) || in iwlagn_commit_rxon()
1080 !(ctx->staging.flags & RXON_FLG_BAND_24G_MSK)) in iwlagn_commit_rxon()
1081 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwlagn_commit_rxon()
1083 ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in iwlagn_commit_rxon()
1085 iwl_print_rx_config_cmd(priv, ctx->ctxid); in iwlagn_commit_rxon()
1086 ret = iwl_check_rxon_cmd(priv, ctx); in iwlagn_commit_rxon()
1097 (priv->switch_channel != ctx->staging.channel)) { in iwlagn_commit_rxon()
1108 if (!iwl_full_rxon_required(priv, ctx)) { in iwlagn_commit_rxon()
1109 ret = iwlagn_send_rxon_assoc(priv, ctx); in iwlagn_commit_rxon()
1115 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_commit_rxon()
1128 iwl_set_rxon_hwcrypto(priv, ctx, !iwlwifi_mod_params.sw_crypto); in iwlagn_commit_rxon()
1136 le16_to_cpu(ctx->staging.channel), in iwlagn_commit_rxon()
1137 ctx->staging.bssid_addr); in iwlagn_commit_rxon()
1145 ret = iwlagn_rxon_disconn(priv, ctx); in iwlagn_commit_rxon()
1154 return iwlagn_rxon_connect(priv, ctx); in iwlagn_commit_rxon()
1160 struct iwl_rxon_context *ctx) in iwlagn_config_ht40() argument
1163 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1165 ctx->ht.is_40mhz = true; in iwlagn_config_ht40()
1167 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1169 ctx->ht.is_40mhz = true; in iwlagn_config_ht40()
1171 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1173 ctx->ht.is_40mhz = false; in iwlagn_config_ht40()
1180 struct iwl_rxon_context *ctx; in iwlagn_mac_config() local
1211 for_each_context(priv, ctx) in iwlagn_mac_config()
1212 iwlagn_set_rxon_chain(priv, ctx); in iwlagn_mac_config()
1216 for_each_context(priv, ctx) { in iwlagn_mac_config()
1218 if (ctx->ht.enabled != conf_is_ht(conf)) in iwlagn_mac_config()
1219 ctx->ht.enabled = conf_is_ht(conf); in iwlagn_mac_config()
1221 if (ctx->ht.enabled) { in iwlagn_mac_config()
1224 if (!ctx->ht.is_40mhz || in iwlagn_mac_config()
1225 !iwl_is_associated_ctx(ctx)) in iwlagn_mac_config()
1226 iwlagn_config_ht40(conf, ctx); in iwlagn_mac_config()
1228 ctx->ht.is_40mhz = false; in iwlagn_mac_config()
1234 ctx->ht.protection = IEEE80211_HT_OP_MODE_PROTECTION_NONE; in iwlagn_mac_config()
1239 if (le16_to_cpu(ctx->staging.channel) != in iwlagn_mac_config()
1241 ctx->staging.flags = 0; in iwlagn_mac_config()
1243 iwl_set_rxon_channel(priv, channel, ctx); in iwlagn_mac_config()
1246 iwl_set_flags_for_band(priv, ctx, channel->band, in iwlagn_mac_config()
1247 ctx->vif); in iwlagn_mac_config()
1267 for_each_context(priv, ctx) { in iwlagn_mac_config()
1268 if (!memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_mac_config()
1270 iwlagn_commit_rxon(priv, ctx); in iwlagn_mac_config()
1280 struct iwl_rxon_context *ctx, in iwlagn_check_needed_chains() argument
1283 struct ieee80211_vif *vif = ctx->vif; in iwlagn_check_needed_chains()
1356 ctx->ht_need_multiple_chains = need_multiple; in iwlagn_check_needed_chains()
1414 struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif); in iwlagn_bss_info_changed() local
1434 if (unlikely(!ctx->vif)) { in iwlagn_bss_info_changed()
1444 ctx->qos_data.qos_active = bss_conf->qos; in iwlagn_bss_info_changed()
1445 iwlagn_update_qos(priv, ctx); in iwlagn_bss_info_changed()
1448 ctx->staging.assoc_id = cpu_to_le16(vif->bss_conf.aid); in iwlagn_bss_info_changed()
1450 ctx->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in iwlagn_bss_info_changed()
1452 ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in iwlagn_bss_info_changed()
1457 ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1459 ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1461 if (ctx->ctxid == IWL_RXON_CTX_BSS) in iwlagn_bss_info_changed()
1468 if (ctx->ht.enabled) { in iwlagn_bss_info_changed()
1469 ctx->ht.protection = bss_conf->ht_operation_mode & in iwlagn_bss_info_changed()
1471 ctx->ht.non_gf_sta_present = !!(bss_conf->ht_operation_mode & in iwlagn_bss_info_changed()
1473 iwlagn_check_needed_chains(priv, ctx, bss_conf); in iwlagn_bss_info_changed()
1477 iwlagn_set_rxon_chain(priv, ctx); in iwlagn_bss_info_changed()
1480 ctx->staging.flags |= RXON_FLG_TGG_PROTECT_MSK; in iwlagn_bss_info_changed()
1482 ctx->staging.flags &= ~RXON_FLG_TGG_PROTECT_MSK; in iwlagn_bss_info_changed()
1485 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; in iwlagn_bss_info_changed()
1487 ctx->staging.flags &= ~RXON_FLG_SELF_CTS_EN; in iwlagn_bss_info_changed()
1489 memcpy(ctx->staging.bssid_addr, bss_conf->bssid, ETH_ALEN); in iwlagn_bss_info_changed()
1494 ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1495 priv->beacon_ctx = ctx; in iwlagn_bss_info_changed()
1497 ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1512 ctx->staging.filter_flags |= RXON_FILTER_BCON_AWARE_MSK; in iwlagn_bss_info_changed()
1514 ctx->staging.filter_flags &= in iwlagn_bss_info_changed()
1518 if (force || memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_bss_info_changed()
1519 iwlagn_commit_rxon(priv, ctx); in iwlagn_bss_info_changed()
1544 if (changes & BSS_CHANGED_BEACON && priv->beacon_ctx == ctx) { in iwlagn_bss_info_changed()
1554 struct iwl_rxon_context *ctx; in iwlagn_post_scan() local
1567 for_each_context(priv, ctx) in iwlagn_post_scan()
1568 if (memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_post_scan()
1569 iwlagn_commit_rxon(priv, ctx); in iwlagn_post_scan()