Lines Matching refs:ctx

38 				   struct iwl_rxon_context *ctx)  in iwl_connection_init_rx_config()  argument
40 memset(&ctx->staging, 0, sizeof(ctx->staging)); in iwl_connection_init_rx_config()
42 if (!ctx->vif) { in iwl_connection_init_rx_config()
43 ctx->staging.dev_type = ctx->unused_devtype; in iwl_connection_init_rx_config()
45 switch (ctx->vif->type) { in iwl_connection_init_rx_config()
47 ctx->staging.dev_type = ctx->ap_devtype; in iwl_connection_init_rx_config()
51 ctx->staging.dev_type = ctx->station_devtype; in iwl_connection_init_rx_config()
52 ctx->staging.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK; in iwl_connection_init_rx_config()
56 ctx->staging.dev_type = ctx->ibss_devtype; in iwl_connection_init_rx_config()
57 ctx->staging.flags = RXON_FLG_SHORT_PREAMBLE_MSK; in iwl_connection_init_rx_config()
58 ctx->staging.filter_flags = RXON_FILTER_BCON_AWARE_MSK | in iwl_connection_init_rx_config()
63 ctx->staging.dev_type = RXON_DEV_TYPE_SNIFFER; in iwl_connection_init_rx_config()
68 ctx->vif->type); in iwl_connection_init_rx_config()
76 ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in iwl_connection_init_rx_config()
78 ctx->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in iwl_connection_init_rx_config()
81 ctx->staging.channel = in iwl_connection_init_rx_config()
85 iwl_set_flags_for_band(priv, ctx, priv->band, ctx->vif); in iwl_connection_init_rx_config()
88 ctx->staging.flags &= ~(RXON_FLG_CHANNEL_MODE_MIXED | in iwl_connection_init_rx_config()
90 if (ctx->vif) in iwl_connection_init_rx_config()
91 memcpy(ctx->staging.node_addr, ctx->vif->addr, ETH_ALEN); in iwl_connection_init_rx_config()
93 ctx->staging.ofdm_ht_single_stream_basic_rates = 0xff; in iwl_connection_init_rx_config()
94 ctx->staging.ofdm_ht_dual_stream_basic_rates = 0xff; in iwl_connection_init_rx_config()
95 ctx->staging.ofdm_ht_triple_stream_basic_rates = 0xff; in iwl_connection_init_rx_config()
99 struct iwl_rxon_context *ctx, in iwlagn_disable_bss() argument
106 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, in iwlagn_disable_bss()
119 struct iwl_rxon_context *ctx, in iwlagn_disable_pan() argument
136 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, in iwlagn_disable_pan()
156 struct iwl_rxon_context *ctx, in iwlagn_disconn_pan() argument
163 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, 0, in iwlagn_disconn_pan()
172 struct iwl_rxon_context *ctx) in iwlagn_update_qos() argument
176 if (!ctx->is_active) in iwlagn_update_qos()
179 ctx->qos_data.def_qos_parm.qos_flags = 0; in iwlagn_update_qos()
181 if (ctx->qos_data.qos_active) in iwlagn_update_qos()
182 ctx->qos_data.def_qos_parm.qos_flags |= in iwlagn_update_qos()
185 if (ctx->ht.enabled) in iwlagn_update_qos()
186 ctx->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK; in iwlagn_update_qos()
189 ctx->qos_data.qos_active, in iwlagn_update_qos()
190 ctx->qos_data.def_qos_parm.qos_flags); in iwlagn_update_qos()
192 ret = iwl_dvm_send_cmd_pdu(priv, ctx->qos_cmd, 0, in iwlagn_update_qos()
194 &ctx->qos_data.def_qos_parm); in iwlagn_update_qos()
212 struct iwl_rxon_context *ctx) in iwlagn_send_rxon_assoc() argument
216 const struct iwl_rxon_cmd *rxon1 = &ctx->staging; in iwlagn_send_rxon_assoc()
217 const struct iwl_rxon_cmd *rxon2 = &ctx->active; in iwlagn_send_rxon_assoc()
235 rxon_assoc.flags = ctx->staging.flags; in iwlagn_send_rxon_assoc()
236 rxon_assoc.filter_flags = ctx->staging.filter_flags; in iwlagn_send_rxon_assoc()
237 rxon_assoc.ofdm_basic_rates = ctx->staging.ofdm_basic_rates; in iwlagn_send_rxon_assoc()
238 rxon_assoc.cck_basic_rates = ctx->staging.cck_basic_rates; in iwlagn_send_rxon_assoc()
243 ctx->staging.ofdm_ht_single_stream_basic_rates; in iwlagn_send_rxon_assoc()
245 ctx->staging.ofdm_ht_dual_stream_basic_rates; in iwlagn_send_rxon_assoc()
246 rxon_assoc.rx_chain_select_flags = ctx->staging.rx_chain; in iwlagn_send_rxon_assoc()
248 ctx->staging.ofdm_ht_triple_stream_basic_rates; in iwlagn_send_rxon_assoc()
249 rxon_assoc.acquisition_data = ctx->staging.acquisition_data; in iwlagn_send_rxon_assoc()
251 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_assoc_cmd, in iwlagn_send_rxon_assoc()
292 struct iwl_rxon_context *ctx) in iwl_send_rxon_timing() argument
298 struct ieee80211_vif *vif = ctx->vif; in iwl_send_rxon_timing()
304 memset(&ctx->timing, 0, sizeof(struct iwl_rxon_time_cmd)); in iwl_send_rxon_timing()
306 ctx->timing.timestamp = cpu_to_le64(priv->timestamp); in iwl_send_rxon_timing()
307 ctx->timing.listen_interval = cpu_to_le16(conf->listen_interval); in iwl_send_rxon_timing()
315 ctx->timing.atim_window = 0; in iwl_send_rxon_timing()
317 if (ctx->ctxid == IWL_RXON_CTX_PAN && in iwl_send_rxon_timing()
318 (!ctx->vif || ctx->vif->type != NL80211_IFTYPE_STATION) && in iwl_send_rxon_timing()
322 ctx->timing.beacon_interval = in iwl_send_rxon_timing()
324 beacon_int = le16_to_cpu(ctx->timing.beacon_interval); in iwl_send_rxon_timing()
325 } else if (ctx->ctxid == IWL_RXON_CTX_BSS && in iwl_send_rxon_timing()
329 (!iwl_is_associated_ctx(ctx) || !ctx->vif || in iwl_send_rxon_timing()
330 !ctx->vif->bss_conf.beacon_int)) { in iwl_send_rxon_timing()
331 ctx->timing.beacon_interval = in iwl_send_rxon_timing()
333 beacon_int = le16_to_cpu(ctx->timing.beacon_interval); in iwl_send_rxon_timing()
337 ctx->timing.beacon_interval = cpu_to_le16(beacon_int); in iwl_send_rxon_timing()
340 ctx->beacon_int = beacon_int; in iwl_send_rxon_timing()
345 ctx->timing.beacon_init_val = cpu_to_le32(interval_tm - rem); in iwl_send_rxon_timing()
347 ctx->timing.dtim_period = vif ? (vif->bss_conf.dtim_period ?: 1) : 1; in iwl_send_rxon_timing()
351 le16_to_cpu(ctx->timing.beacon_interval), in iwl_send_rxon_timing()
352 le32_to_cpu(ctx->timing.beacon_init_val), in iwl_send_rxon_timing()
353 le16_to_cpu(ctx->timing.atim_window)); in iwl_send_rxon_timing()
355 return iwl_dvm_send_cmd_pdu(priv, ctx->rxon_timing_cmd, in iwl_send_rxon_timing()
356 0, sizeof(ctx->timing), &ctx->timing); in iwl_send_rxon_timing()
360 struct iwl_rxon_context *ctx) in iwlagn_rxon_disconn() argument
363 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_rxon_disconn()
365 if (ctx->ctxid == IWL_RXON_CTX_BSS) { in iwlagn_rxon_disconn()
366 ret = iwlagn_disable_bss(priv, ctx, &ctx->staging); in iwlagn_rxon_disconn()
368 ret = iwlagn_disable_pan(priv, ctx, &ctx->staging); in iwlagn_rxon_disconn()
371 if (ctx->vif) { in iwlagn_rxon_disconn()
372 ret = iwl_send_rxon_timing(priv, ctx); in iwlagn_rxon_disconn()
377 ret = iwlagn_disconn_pan(priv, ctx, &ctx->staging); in iwlagn_rxon_disconn()
387 iwl_clear_ucode_stations(priv, ctx); in iwlagn_rxon_disconn()
389 iwl_update_bcast_station(priv, ctx); in iwlagn_rxon_disconn()
390 iwl_restore_stations(priv, ctx); in iwlagn_rxon_disconn()
391 ret = iwl_restore_default_wep_keys(priv, ctx); in iwlagn_rxon_disconn()
397 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_rxon_disconn()
406 struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; in iwl_set_tx_power() local
440 memcmp(&ctx->active, &ctx->staging, sizeof(ctx->staging)); in iwl_set_tx_power()
460 struct iwl_rxon_context *ctx) in iwlagn_rxon_connect() argument
463 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_rxon_connect()
466 if (ctx->ctxid == IWL_RXON_CTX_BSS) { in iwlagn_rxon_connect()
467 ret = iwl_send_rxon_timing(priv, ctx); in iwlagn_rxon_connect()
474 iwlagn_update_qos(priv, ctx); in iwlagn_rxon_connect()
481 if (ctx->vif && (ctx->vif->type == NL80211_IFTYPE_AP)) { in iwlagn_rxon_connect()
482 ret = iwlagn_update_beacon(priv, ctx->vif); in iwlagn_rxon_connect()
498 ret = iwl_dvm_send_cmd_pdu(priv, ctx->rxon_cmd, 0, in iwlagn_rxon_connect()
499 sizeof(struct iwl_rxon_cmd), &ctx->staging); in iwlagn_rxon_connect()
504 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_rxon_connect()
507 if (ctx->vif && (ctx->vif->type == NL80211_IFTYPE_ADHOC)) in iwlagn_rxon_connect()
508 if (iwlagn_update_beacon(priv, ctx->vif)) in iwlagn_rxon_connect()
525 if (ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION && in iwlagn_rxon_connect()
527 ieee80211_request_smps(ctx->vif, in iwlagn_rxon_connect()
623 struct iwl_rxon_context *ctx) in _iwl_set_rxon_ht() argument
625 struct iwl_rxon_cmd *rxon = &ctx->staging; in _iwl_set_rxon_ht()
627 if (!ctx->ht.enabled) { in _iwl_set_rxon_ht()
638 rxon->flags |= cpu_to_le32(ctx->ht.protection << in _iwl_set_rxon_ht()
646 if (iwl_is_ht40_tx_allowed(priv, ctx, NULL)) { in _iwl_set_rxon_ht()
648 if (ctx->ht.protection == in _iwl_set_rxon_ht()
655 switch (ctx->ht.extension_chan_offset) { in _iwl_set_rxon_ht()
670 switch (ctx->ht.extension_chan_offset) { in _iwl_set_rxon_ht()
695 iwlagn_set_rxon_chain(priv, ctx); in _iwl_set_rxon_ht()
699 le32_to_cpu(rxon->flags), ctx->ht.protection, in _iwl_set_rxon_ht()
700 ctx->ht.extension_chan_offset); in _iwl_set_rxon_ht()
705 struct iwl_rxon_context *ctx; in iwl_set_rxon_ht() local
707 for_each_context(priv, ctx) in iwl_set_rxon_ht()
708 _iwl_set_rxon_ht(priv, ht_conf, ctx); in iwl_set_rxon_ht()
719 struct iwl_rxon_context *ctx) in iwl_set_rxon_channel() argument
724 if ((le16_to_cpu(ctx->staging.channel) == channel) && in iwl_set_rxon_channel()
728 ctx->staging.channel = cpu_to_le16(channel); in iwl_set_rxon_channel()
730 ctx->staging.flags &= ~RXON_FLG_BAND_24G_MSK; in iwl_set_rxon_channel()
732 ctx->staging.flags |= RXON_FLG_BAND_24G_MSK; in iwl_set_rxon_channel()
741 struct iwl_rxon_context *ctx, in iwl_set_flags_for_band() argument
746 ctx->staging.flags &= in iwl_set_flags_for_band()
749 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
753 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
755 ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in iwl_set_flags_for_band()
757 ctx->staging.flags |= RXON_FLG_BAND_24G_MSK; in iwl_set_flags_for_band()
758 ctx->staging.flags |= RXON_FLG_AUTO_DETECT_MSK; in iwl_set_flags_for_band()
759 ctx->staging.flags &= ~RXON_FLG_CCK_MSK; in iwl_set_flags_for_band()
764 struct iwl_rxon_context *ctx, int hw_decrypt) in iwl_set_rxon_hwcrypto() argument
766 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_set_rxon_hwcrypto()
777 struct iwl_rxon_context *ctx) in iwl_check_rxon_cmd() argument
779 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_check_rxon_cmd()
857 struct iwl_rxon_context *ctx) in iwl_full_rxon_required() argument
859 const struct iwl_rxon_cmd *staging = &ctx->staging; in iwl_full_rxon_required()
860 const struct iwl_rxon_cmd *active = &ctx->active; in iwl_full_rxon_required()
877 CHK(!iwl_is_associated_ctx(ctx)); in iwl_full_rxon_required()
915 struct iwl_rxon_context *ctx = &priv->contexts[ctxid]; in iwl_print_rx_config_cmd() local
916 struct iwl_rxon_cmd *rxon = &ctx->staging; in iwl_print_rx_config_cmd()
939 struct iwl_rxon_context *ctx) in iwl_calc_basic_rates() argument
946 if (ctx->vif) { in iwl_calc_basic_rates()
948 unsigned long basic = ctx->vif->bss_conf.basic_rates; in iwl_calc_basic_rates()
1025 ctx->staging.cck_basic_rates = cck; in iwl_calc_basic_rates()
1026 ctx->staging.ofdm_basic_rates = ofdm; in iwl_calc_basic_rates()
1047 int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) in iwlagn_commit_rxon() argument
1050 struct iwl_rxon_cmd *active = (void *)&ctx->active; in iwlagn_commit_rxon()
1051 bool new_assoc = !!(ctx->staging.filter_flags & RXON_FILTER_ASSOC_MSK); in iwlagn_commit_rxon()
1062 if (!ctx->is_active) in iwlagn_commit_rxon()
1066 ctx->staging.flags |= RXON_FLG_TSF2HOST_MSK; in iwlagn_commit_rxon()
1069 iwl_calc_basic_rates(priv, ctx); in iwlagn_commit_rxon()
1076 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; in iwlagn_commit_rxon()
1078 if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) || in iwlagn_commit_rxon()
1079 !(ctx->staging.flags & RXON_FLG_BAND_24G_MSK)) in iwlagn_commit_rxon()
1080 ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in iwlagn_commit_rxon()
1082 ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in iwlagn_commit_rxon()
1084 iwl_print_rx_config_cmd(priv, ctx->ctxid); in iwlagn_commit_rxon()
1085 ret = iwl_check_rxon_cmd(priv, ctx); in iwlagn_commit_rxon()
1096 (priv->switch_channel != ctx->staging.channel)) { in iwlagn_commit_rxon()
1107 if (!iwl_full_rxon_required(priv, ctx)) { in iwlagn_commit_rxon()
1108 ret = iwlagn_send_rxon_assoc(priv, ctx); in iwlagn_commit_rxon()
1114 memcpy(active, &ctx->staging, sizeof(*active)); in iwlagn_commit_rxon()
1127 iwl_set_rxon_hwcrypto(priv, ctx, !iwlwifi_mod_params.sw_crypto); in iwlagn_commit_rxon()
1135 le16_to_cpu(ctx->staging.channel), in iwlagn_commit_rxon()
1136 ctx->staging.bssid_addr); in iwlagn_commit_rxon()
1144 ret = iwlagn_rxon_disconn(priv, ctx); in iwlagn_commit_rxon()
1153 return iwlagn_rxon_connect(priv, ctx); in iwlagn_commit_rxon()
1159 struct iwl_rxon_context *ctx) in iwlagn_config_ht40() argument
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 = true; in iwlagn_config_ht40()
1170 ctx->ht.extension_chan_offset = in iwlagn_config_ht40()
1172 ctx->ht.is_40mhz = false; in iwlagn_config_ht40()
1179 struct iwl_rxon_context *ctx; in iwlagn_mac_config() local
1210 for_each_context(priv, ctx) in iwlagn_mac_config()
1211 iwlagn_set_rxon_chain(priv, ctx); in iwlagn_mac_config()
1215 for_each_context(priv, ctx) { in iwlagn_mac_config()
1217 if (ctx->ht.enabled != conf_is_ht(conf)) in iwlagn_mac_config()
1218 ctx->ht.enabled = conf_is_ht(conf); in iwlagn_mac_config()
1220 if (ctx->ht.enabled) { in iwlagn_mac_config()
1223 if (!ctx->ht.is_40mhz || in iwlagn_mac_config()
1224 !iwl_is_associated_ctx(ctx)) in iwlagn_mac_config()
1225 iwlagn_config_ht40(conf, ctx); in iwlagn_mac_config()
1227 ctx->ht.is_40mhz = false; in iwlagn_mac_config()
1233 ctx->ht.protection = IEEE80211_HT_OP_MODE_PROTECTION_NONE; in iwlagn_mac_config()
1238 if (le16_to_cpu(ctx->staging.channel) != in iwlagn_mac_config()
1240 ctx->staging.flags = 0; in iwlagn_mac_config()
1242 iwl_set_rxon_channel(priv, channel, ctx); in iwlagn_mac_config()
1245 iwl_set_flags_for_band(priv, ctx, channel->band, in iwlagn_mac_config()
1246 ctx->vif); in iwlagn_mac_config()
1266 for_each_context(priv, ctx) { in iwlagn_mac_config()
1267 if (!memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_mac_config()
1269 iwlagn_commit_rxon(priv, ctx); in iwlagn_mac_config()
1279 struct iwl_rxon_context *ctx, in iwlagn_check_needed_chains() argument
1282 struct ieee80211_vif *vif = ctx->vif; in iwlagn_check_needed_chains()
1355 ctx->ht_need_multiple_chains = need_multiple; in iwlagn_check_needed_chains()
1413 struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif); in iwlagn_bss_info_changed() local
1433 if (unlikely(!ctx->vif)) { in iwlagn_bss_info_changed()
1443 ctx->qos_data.qos_active = bss_conf->qos; in iwlagn_bss_info_changed()
1444 iwlagn_update_qos(priv, ctx); in iwlagn_bss_info_changed()
1447 ctx->staging.assoc_id = cpu_to_le16(vif->bss_conf.aid); in iwlagn_bss_info_changed()
1449 ctx->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in iwlagn_bss_info_changed()
1451 ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in iwlagn_bss_info_changed()
1456 ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1458 ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1460 if (ctx->ctxid == IWL_RXON_CTX_BSS) in iwlagn_bss_info_changed()
1467 if (ctx->ht.enabled) { in iwlagn_bss_info_changed()
1468 ctx->ht.protection = bss_conf->ht_operation_mode & in iwlagn_bss_info_changed()
1470 ctx->ht.non_gf_sta_present = !!(bss_conf->ht_operation_mode & in iwlagn_bss_info_changed()
1472 iwlagn_check_needed_chains(priv, ctx, bss_conf); in iwlagn_bss_info_changed()
1476 iwlagn_set_rxon_chain(priv, ctx); in iwlagn_bss_info_changed()
1479 ctx->staging.flags |= RXON_FLG_TGG_PROTECT_MSK; in iwlagn_bss_info_changed()
1481 ctx->staging.flags &= ~RXON_FLG_TGG_PROTECT_MSK; in iwlagn_bss_info_changed()
1484 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; in iwlagn_bss_info_changed()
1486 ctx->staging.flags &= ~RXON_FLG_SELF_CTS_EN; in iwlagn_bss_info_changed()
1488 memcpy(ctx->staging.bssid_addr, bss_conf->bssid, ETH_ALEN); in iwlagn_bss_info_changed()
1493 ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1494 priv->beacon_ctx = ctx; in iwlagn_bss_info_changed()
1496 ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in iwlagn_bss_info_changed()
1511 ctx->staging.filter_flags |= RXON_FILTER_BCON_AWARE_MSK; in iwlagn_bss_info_changed()
1513 ctx->staging.filter_flags &= in iwlagn_bss_info_changed()
1517 if (force || memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_bss_info_changed()
1518 iwlagn_commit_rxon(priv, ctx); in iwlagn_bss_info_changed()
1543 if (changes & BSS_CHANGED_BEACON && priv->beacon_ctx == ctx) { in iwlagn_bss_info_changed()
1553 struct iwl_rxon_context *ctx; in iwlagn_post_scan() local
1566 for_each_context(priv, ctx) in iwlagn_post_scan()
1567 if (memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) in iwlagn_post_scan()
1568 iwlagn_commit_rxon(priv, ctx); in iwlagn_post_scan()