Lines Matching +full:half +full:- +full:dbm
1 // SPDX-License-Identifier: GPL-2.0-only
4 * Copyright(c) 2003 - 2011 Intel Corporation. All rights reserved.
8 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
15 #include <linux/dma-mapping.h>
29 * il_verify_inst_sparse - verify runtime uCode image in card vs. host,
44 /* read data comes through single port, auto-incr addr */ in il4965_verify_inst_sparse()
50 ret = -EIO; in il4965_verify_inst_sparse()
61 * il4965_verify_inst_full - verify runtime uCode image in card vs. host,
77 for (; len > 0; len -= sizeof(u32), image++) { in il4965_verify_inst_full()
78 /* read data comes through single port, auto-incr addr */ in il4965_verify_inst_full()
85 save_len - len, val, le32_to_cpu(*image)); in il4965_verify_inst_full()
86 ret = -EIO; in il4965_verify_inst_full()
100 * il4965_verify_ucode - determine which instruction image is in SRAM,
111 image = (__le32 *) il->ucode_boot.v_addr; in il4965_verify_ucode()
112 len = il->ucode_boot.len; in il4965_verify_ucode()
120 image = (__le32 *) il->ucode_init.v_addr; in il4965_verify_ucode()
121 len = il->ucode_init.len; in il4965_verify_ucode()
129 image = (__le32 *) il->ucode_code.v_addr; in il4965_verify_ucode()
130 len = il->ucode_code.len; in il4965_verify_ucode()
142 image = (__le32 *) il->ucode_boot.v_addr; in il4965_verify_ucode()
143 len = il->ucode_boot.len; in il4965_verify_ucode()
202 if (eeprom_ver < il->cfg->eeprom_ver || in il4965_eeprom_check_version()
203 calib_ver < il->cfg->eeprom_calib_ver) in il4965_eeprom_check_version()
211 "CALIB=0x%x < 0x%x\n", eeprom_ver, il->cfg->eeprom_ver, in il4965_eeprom_check_version()
212 calib_ver, il->cfg->eeprom_calib_ver); in il4965_eeprom_check_version()
213 return -EINVAL; in il4965_eeprom_check_version()
261 #define IL4965_FW_PRE "iwlwifi-4965-"
269 __le32 *image = il->ucode_boot.v_addr; in il4965_verify_bsm()
270 u32 len = il->ucode_boot.len; in il4965_verify_bsm()
284 BSM_SRAM_LOWER_BOUND, reg - BSM_SRAM_LOWER_BOUND, in il4965_verify_bsm()
286 return -EIO; in il4965_verify_bsm()
296 * il4965_load_bsm - Load bootstrap instructions
302 * up after power-saving sleeps (or during initial uCode load), the BSM loads
303 * the bootstrap program into the on-board processor, and starts it.
316 * (filled initially with starting data values for the on-board processor),
320 * When doing a power-save shutdown, runtime uCode saves data SRAM into
325 * and re-launches the runtime uCode from where it left off.
330 __le32 *image = il->ucode_boot.v_addr; in il4965_load_bsm()
331 u32 len = il->ucode_boot.len; in il4965_load_bsm()
343 il->ucode_type = UCODE_RT; in il4965_load_bsm()
347 return -EINVAL; in il4965_load_bsm()
355 pinst = il->ucode_init.p_addr >> 4; in il4965_load_bsm()
356 pdata = il->ucode_init_data.p_addr >> 4; in il4965_load_bsm()
357 inst_len = il->ucode_init.len; in il4965_load_bsm()
358 data_len = il->ucode_init_data.len; in il4965_load_bsm()
395 return -EIO; in il4965_load_bsm()
399 * (e.g. when powering back up after power-save shutdown) */ in il4965_load_bsm()
406 * il4965_set_ucode_ptrs - Set uCode address location
421 pinst = il->ucode_code.p_addr >> 4; in il4965_set_ucode_ptrs()
422 pdata = il->ucode_data_backup.p_addr >> 4; in il4965_set_ucode_ptrs()
427 il_wr_prph(il, BSM_DRAM_DATA_BYTECOUNT_REG, il->ucode_data.len); in il4965_set_ucode_ptrs()
432 il->ucode_code.len | BSM_DRAM_INST_LOAD); in il4965_set_ucode_ptrs()
439 * il4965_init_alive_start - Called after N_ALIVE notification received
463 il->temperature = il4965_hw_get_temperature(il); in il4965_init_alive_start()
478 queue_work(il->workqueue, &il->restart); in il4965_init_alive_start()
497 spin_lock_irqsave(&il->lock, flags); in il4965_nic_config()
513 il->calib_info = in il4965_nic_config()
517 spin_unlock_irqrestore(&il->lock, flags); in il4965_nic_config()
526 struct il_chain_noise_data *data = &(il->chain_noise_data); in il4965_chain_noise_reset()
528 if (data->state == IL_CHAIN_NOISE_ALIVE && il_is_any_associated(il)) { in il4965_chain_noise_reset()
532 data->chain_noise_a = 0; in il4965_chain_noise_reset()
533 data->chain_noise_b = 0; in il4965_chain_noise_reset()
534 data->chain_noise_c = 0; in il4965_chain_noise_reset()
535 data->chain_signal_a = 0; in il4965_chain_noise_reset()
536 data->chain_signal_b = 0; in il4965_chain_noise_reset()
537 data->chain_signal_c = 0; in il4965_chain_noise_reset()
538 data->beacon_count = 0; in il4965_chain_noise_reset()
547 data->state = IL_CHAIN_NOISE_ACCUMULATE; in il4965_chain_noise_reset()
558 sign = -sign; in il4965_math_div_round()
559 num = -num; in il4965_math_div_round()
562 sign = -sign; in il4965_math_div_round()
563 denom = -denom; in il4965_math_div_round()
571 * il4965_get_voltage_compensation - Power supply voltage comp for txpower
574 * Returns number of 1/2-dB steps to subtract from gain table idx,
590 il4965_math_div_round(current_voltage - eeprom_voltage, in il4965_get_voltage_compensation()
595 if ((comp < -2) || (comp > 2)) in il4965_get_voltage_compensation()
624 return -EINVAL; in il4965_get_tx_atten_grp()
630 s32 b = -1; in il4965_get_sub_band()
633 if (il->calib_info->band_info[b].ch_from == 0) in il4965_get_sub_band()
636 if (channel >= il->calib_info->band_info[b].ch_from && in il4965_get_sub_band()
637 channel <= il->calib_info->band_info[b].ch_to) in il4965_get_sub_band()
652 il4965_math_div_round((x2 - x) * (y1 - y2), (x2 - x1), &val); in il4965_interpolate_value()
658 * il4965_interpolate_chan - Interpolate factory measurements for one channel
661 * sub-band, to apply to channel of interest. Interpolation is proportional to
669 s32 s = -1; in il4965_interpolate_chan()
681 return -1; in il4965_interpolate_chan()
684 ch_i1 = il->calib_info->band_info[s].ch1.ch_num; in il4965_interpolate_chan()
685 ch_i2 = il->calib_info->band_info[s].ch2.ch_num; in il4965_interpolate_chan()
686 chan_info->ch_num = (u8) channel; in il4965_interpolate_chan()
693 m1 = &(il->calib_info->band_info[s].ch1. in il4965_interpolate_chan()
695 m2 = &(il->calib_info->band_info[s].ch2. in il4965_interpolate_chan()
697 omeas = &(chan_info->measurements[c][m]); in il4965_interpolate_chan()
699 omeas->actual_pow = in il4965_interpolate_chan()
701 m1->actual_pow, ch_i2, in il4965_interpolate_chan()
702 m2->actual_pow); in il4965_interpolate_chan()
703 omeas->gain_idx = in il4965_interpolate_chan()
705 m1->gain_idx, ch_i2, in il4965_interpolate_chan()
706 m2->gain_idx); in il4965_interpolate_chan()
707 omeas->temperature = in il4965_interpolate_chan()
709 m1->temperature, in il4965_interpolate_chan()
711 m2->temperature); in il4965_interpolate_chan()
712 omeas->pa_det = in il4965_interpolate_chan()
714 m1->pa_det, ch_i2, in il4965_interpolate_chan()
715 m2->pa_det); in il4965_interpolate_chan()
718 m, m1->actual_pow, m2->actual_pow, in il4965_interpolate_chan()
719 omeas->actual_pow); in il4965_interpolate_chan()
721 m, m1->gain_idx, m2->gain_idx, in il4965_interpolate_chan()
722 omeas->gain_idx); in il4965_interpolate_chan()
724 m, m1->pa_det, m2->pa_det, omeas->pa_det); in il4965_interpolate_chan()
726 m, m1->temperature, m2->temperature, in il4965_interpolate_chan()
727 omeas->temperature); in il4965_interpolate_chan()
734 /* bit-rate-dependent table to prevent Tx distortion, in half-dB units,
745 * ratios from 3:1 to 4.5:1 of degrees (Celsius) per half-dB gain adjust */
751 9, 2}, /* group 0 5.2, ch 34-43 */
753 4, 1}, /* group 1 5.2, ch 44-70 */
755 4, 1}, /* group 2 5.2, ch 71-124 */
757 4, 1}, /* group 3 5.2, ch 125-200 */
1031 /* tx_power_user_lmt is in dBm, convert to half-dBm (half-dB units in il4965_fill_txpower_tbl()
1033 user_target_power = 2 * il->tx_power_user_lmt; in il4965_fill_txpower_tbl()
1038 ch_info = il_get_channel_info(il, il->band, channel); in il4965_fill_txpower_tbl()
1041 return -EINVAL; in il4965_fill_txpower_tbl()
1056 channel -= 2; in il4965_fill_txpower_tbl()
1062 * saturation (clipping distortion) txpowers are in half-dBm */ in il4965_fill_txpower_tbl()
1064 saturation_power = il->calib_info->saturation_power24; in il4965_fill_txpower_tbl()
1066 saturation_power = il->calib_info->saturation_power52; in il4965_fill_txpower_tbl()
1076 /* regulatory txpower limits ... reg_limit values are in half-dBm, in il4965_fill_txpower_tbl()
1077 * max_power_avg values are in dBm, convert * 2 */ in il4965_fill_txpower_tbl()
1079 reg_limit = ch_info->ht40_max_power_avg * 2; in il4965_fill_txpower_tbl()
1081 reg_limit = ch_info->max_power_avg * 2; in il4965_fill_txpower_tbl()
1096 voltage = le16_to_cpu(il->calib_info->voltage); in il4965_fill_txpower_tbl()
1097 init_voltage = (s32) le32_to_cpu(il->card_alive_init.voltage); in il4965_fill_txpower_tbl()
1105 current_temp = max(il->temperature, IL_TX_POWER_TEMPERATURE_MIN); in il4965_fill_txpower_tbl()
1106 current_temp = min(il->temperature, IL_TX_POWER_TEMPERATURE_MAX); in il4965_fill_txpower_tbl()
1116 /* get per-chain txpower values from factory measurements */ in il4965_fill_txpower_tbl()
1120 /* txgain adjustment (in half-dB steps) based on difference in il4965_fill_txpower_tbl()
1122 factory_temp = measurement->temperature; in il4965_fill_txpower_tbl()
1123 il4965_math_div_round((current_temp - in il4965_fill_txpower_tbl()
1128 factory_gain_idx[c] = measurement->gain_idx; in il4965_fill_txpower_tbl()
1129 factory_actual_pwr[c] = measurement->actual_pow; in il4965_fill_txpower_tbl()
1139 /* for each of 33 bit-rates (including 1 for CCK) */ in il4965_fill_txpower_tbl()
1144 /* for mimo, reduce each chain's txpower by half in il4965_fill_txpower_tbl()
1149 reg_limit - in il4965_fill_txpower_tbl()
1158 power_limit = saturation_power - back_off_table[i]; in il4965_fill_txpower_tbl()
1169 saturation_power - back_off_table[i], in il4965_fill_txpower_tbl()
1178 (s32) le32_to_cpu(il->card_alive_init. in il4965_fill_txpower_tbl()
1185 (u8) (factory_gain_idx[c] - in il4965_fill_txpower_tbl()
1186 (target_power - factory_actual_pwr[c]) - in il4965_fill_txpower_tbl()
1187 temperature_comp[c] - voltage_compensation + in il4965_fill_txpower_tbl()
1227 tx_power_tbl->power_tbl[i].dw = cpu_to_le32(tx_power.dw); in il4965_fill_txpower_tbl()
1235 * il4965_send_tx_power - Configure the TXPOWER level user limit
1238 * The power limit is taken from il->tx_power_user_lmt.
1250 (test_bit(S_SCAN_HW, &il->status), in il4965_send_tx_power()
1252 return -EAGAIN; in il4965_send_tx_power()
1254 band = il->band == NL80211_BAND_2GHZ; in il4965_send_tx_power()
1256 is_ht40 = iw4965_is_ht40_channel(il->active.flags); in il4965_send_tx_power()
1258 if (is_ht40 && (il->active.flags & RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK)) in il4965_send_tx_power()
1262 cmd.channel = il->active.channel; in il4965_send_tx_power()
1265 il4965_fill_txpower_tbl(il, band, le16_to_cpu(il->active.channel), in il4965_send_tx_power()
1281 const struct il_rxon_cmd *rxon1 = &il->staging; in il4965_send_rxon_assoc()
1282 const struct il_rxon_cmd *rxon2 = &il->active; in il4965_send_rxon_assoc()
1284 lockdep_assert_held(&il->mutex); in il4965_send_rxon_assoc()
1286 if (rxon1->flags == rxon2->flags && in il4965_send_rxon_assoc()
1287 rxon1->filter_flags == rxon2->filter_flags && in il4965_send_rxon_assoc()
1288 rxon1->cck_basic_rates == rxon2->cck_basic_rates && in il4965_send_rxon_assoc()
1289 rxon1->ofdm_ht_single_stream_basic_rates == in il4965_send_rxon_assoc()
1290 rxon2->ofdm_ht_single_stream_basic_rates && in il4965_send_rxon_assoc()
1291 rxon1->ofdm_ht_dual_stream_basic_rates == in il4965_send_rxon_assoc()
1292 rxon2->ofdm_ht_dual_stream_basic_rates && in il4965_send_rxon_assoc()
1293 rxon1->rx_chain == rxon2->rx_chain && in il4965_send_rxon_assoc()
1294 rxon1->ofdm_basic_rates == rxon2->ofdm_basic_rates) { in il4965_send_rxon_assoc()
1299 rxon_assoc.flags = il->staging.flags; in il4965_send_rxon_assoc()
1300 rxon_assoc.filter_flags = il->staging.filter_flags; in il4965_send_rxon_assoc()
1301 rxon_assoc.ofdm_basic_rates = il->staging.ofdm_basic_rates; in il4965_send_rxon_assoc()
1302 rxon_assoc.cck_basic_rates = il->staging.cck_basic_rates; in il4965_send_rxon_assoc()
1305 il->staging.ofdm_ht_single_stream_basic_rates; in il4965_send_rxon_assoc()
1307 il->staging.ofdm_ht_dual_stream_basic_rates; in il4965_send_rxon_assoc()
1308 rxon_assoc.rx_chain_select_flags = il->staging.rx_chain; in il4965_send_rxon_assoc()
1321 struct il_rxon_cmd *active_rxon = (void *)&il->active; in il4965_commit_rxon()
1323 bool new_assoc = !!(il->staging.filter_flags & RXON_FILTER_ASSOC_MSK); in il4965_commit_rxon()
1326 return -EBUSY; in il4965_commit_rxon()
1329 il->staging.flags |= RXON_FLG_TSF2HOST_MSK; in il4965_commit_rxon()
1334 return -EINVAL; in il4965_commit_rxon()
1341 if (test_bit(S_CHANNEL_SWITCH_PENDING, &il->status) && in il4965_commit_rxon()
1342 il->switch_channel != il->staging.channel) { in il4965_commit_rxon()
1344 le16_to_cpu(il->switch_channel)); in il4965_commit_rxon()
1358 memcpy(active_rxon, &il->staging, sizeof(*active_rxon)); in il4965_commit_rxon()
1364 il_set_tx_power(il, il->tx_power_next, false); in il4965_commit_rxon()
1374 active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK; in il4965_commit_rxon()
1383 active_rxon->filter_flags |= RXON_FILTER_ASSOC_MSK; in il4965_commit_rxon()
1398 le16_to_cpu(il->staging.channel), il->staging.bssid_addr); in il4965_commit_rxon()
1400 il_set_rxon_hwcrypto(il, !il->cfg->mod_params->sw_crypto); in il4965_commit_rxon()
1409 sizeof(struct il_rxon_cmd), &il->staging); in il4965_commit_rxon()
1415 memcpy(active_rxon, &il->staging, sizeof(*active_rxon)); in il4965_commit_rxon()
1425 il->start_calib = 0; in il4965_commit_rxon()
1431 sizeof(struct il_rxon_cmd), &il->staging); in il4965_commit_rxon()
1436 memcpy(active_rxon, &il->staging, sizeof(*active_rxon)); in il4965_commit_rxon()
1444 ret = il_set_tx_power(il, il->tx_power_next, true); in il4965_commit_rxon()
1467 u16 beacon_interval = le16_to_cpu(il->timing.beacon_interval); in il4965_hw_channel_switch()
1468 struct ieee80211_vif *vif = il->vif; in il4965_hw_channel_switch()
1469 band = (il->band == NL80211_BAND_2GHZ); in il4965_hw_channel_switch()
1472 return -EIO; in il4965_hw_channel_switch()
1474 is_ht40 = iw4965_is_ht40_channel(il->staging.flags); in il4965_hw_channel_switch()
1476 if (is_ht40 && (il->staging.flags & RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK)) in il4965_hw_channel_switch()
1481 ch = ch_switch->chandef.chan->hw_value; in il4965_hw_channel_switch()
1483 cmd.rxon_flags = il->staging.flags; in il4965_hw_channel_switch()
1484 cmd.rxon_filter_flags = il->staging.filter_flags; in il4965_hw_channel_switch()
1485 switch_count = ch_switch->count; in il4965_hw_channel_switch()
1486 tsf_low = ch_switch->timestamp & 0x0ffffffff; in il4965_hw_channel_switch()
1491 if (il->ucode_beacon_time > tsf_low && beacon_interval) { in il4965_hw_channel_switch()
1493 ((il->ucode_beacon_time - tsf_low) / beacon_interval)) { in il4965_hw_channel_switch()
1494 switch_count -= in il4965_hw_channel_switch()
1495 (il->ucode_beacon_time - tsf_low) / beacon_interval; in il4965_hw_channel_switch()
1500 cmd.switch_time = cpu_to_le32(il->ucode_beacon_time); in il4965_hw_channel_switch()
1503 vif->bss_conf.beacon_int * switch_count * TIME_UNIT; in il4965_hw_channel_switch()
1508 il_add_beacon_time(il, il->ucode_beacon_time, in il4965_hw_channel_switch()
1512 ch_info = il_get_channel_info(il, il->band, ch); in il4965_hw_channel_switch()
1517 il->active.channel, ch); in il4965_hw_channel_switch()
1518 return -EFAULT; in il4965_hw_channel_switch()
1532 * il4965_txq_update_byte_cnt_tbl - Set up entry in Tx byte-count array
1538 struct il4965_scd_bc_tbl *scd_bc_tbl = il->scd_bc_tbls.addr; in il4965_txq_update_byte_cnt_tbl()
1539 int txq_id = txq->q.id; in il4965_txq_update_byte_cnt_tbl()
1540 int write_ptr = txq->q.write_ptr; in il4965_txq_update_byte_cnt_tbl()
1557 * il4965_hw_get_temperature - return the calibrated temperature (in Kelvin)
1569 if (test_bit(S_TEMPERATURE, &il->status) && in il4965_hw_get_temperature()
1570 (il->_4965.stats.flag & STATS_REPLY_FLG_HT40_MODE_MSK)) { in il4965_hw_get_temperature()
1572 R1 = (s32) le32_to_cpu(il->card_alive_init.therm_r1[1]); in il4965_hw_get_temperature()
1573 R2 = (s32) le32_to_cpu(il->card_alive_init.therm_r2[1]); in il4965_hw_get_temperature()
1574 R3 = (s32) le32_to_cpu(il->card_alive_init.therm_r3[1]); in il4965_hw_get_temperature()
1575 R4 = le32_to_cpu(il->card_alive_init.therm_r4[1]); in il4965_hw_get_temperature()
1578 R1 = (s32) le32_to_cpu(il->card_alive_init.therm_r1[0]); in il4965_hw_get_temperature()
1579 R2 = (s32) le32_to_cpu(il->card_alive_init.therm_r2[0]); in il4965_hw_get_temperature()
1580 R3 = (s32) le32_to_cpu(il->card_alive_init.therm_r3[0]); in il4965_hw_get_temperature()
1581 R4 = le32_to_cpu(il->card_alive_init.therm_r4[0]); in il4965_hw_get_temperature()
1591 if (!test_bit(S_TEMPERATURE, &il->status)) in il4965_hw_get_temperature()
1595 (il->_4965.stats.general.common.temperature), in il4965_hw_get_temperature()
1598 D_TEMP("Calib values R[1-3]: %d %d %d R4: %d\n", R1, R2, R3, vt); in il4965_hw_get_temperature()
1602 return -1; in il4965_hw_get_temperature()
1607 temperature = TEMPERATURE_CALIB_A_VAL * (vt - R2); in il4965_hw_get_temperature()
1608 temperature /= (R3 - R1); in il4965_hw_get_temperature()
1622 * il4965_is_temp_calib_needed - determines if new calibration is needed
1627 * Assumes caller will replace il->last_temperature once calibration
1635 if (!test_bit(S_STATS, &il->status)) { in il4965_is_temp_calib_needed()
1636 D_TEMP("Temperature not updated -- no stats.\n"); in il4965_is_temp_calib_needed()
1640 temp_diff = il->temperature - il->last_temperature; in il4965_is_temp_calib_needed()
1645 temp_diff = -temp_diff; in il4965_is_temp_calib_needed()
1670 if (il->temperature != temp) { in il4965_temperature_calib()
1671 if (il->temperature) in il4965_temperature_calib()
1673 kelvin_to_celsius(il->temperature), in il4965_temperature_calib()
1680 il->temperature = temp; in il4965_temperature_calib()
1681 set_bit(S_TEMPERATURE, &il->status); in il4965_temperature_calib()
1683 if (!il->disable_tx_power_cal && in il4965_temperature_calib()
1684 unlikely(!test_bit(S_SCANNING, &il->status)) && in il4965_temperature_calib()
1686 queue_work(il->workqueue, &il->txpower_work); in il4965_temperature_calib()
1704 addsta->mode = cmd->mode; in il4965_build_addsta_hcmd()
1705 memcpy(&addsta->sta, &cmd->sta, sizeof(struct sta_id_modify)); in il4965_build_addsta_hcmd()
1706 memcpy(&addsta->key, &cmd->key, sizeof(struct il4965_keyinfo)); in il4965_build_addsta_hcmd()
1707 addsta->station_flags = cmd->station_flags; in il4965_build_addsta_hcmd()
1708 addsta->station_flags_msk = cmd->station_flags_msk; in il4965_build_addsta_hcmd()
1709 addsta->tid_disable_tx = cmd->tid_disable_tx; in il4965_build_addsta_hcmd()
1710 addsta->add_immediate_ba_tid = cmd->add_immediate_ba_tid; in il4965_build_addsta_hcmd()
1711 addsta->remove_immediate_ba_tid = cmd->remove_immediate_ba_tid; in il4965_build_addsta_hcmd()
1712 addsta->add_immediate_ba_ssn = cmd->add_immediate_ba_ssn; in il4965_build_addsta_hcmd()
1713 addsta->sleep_tx_count = cmd->sleep_tx_count; in il4965_build_addsta_hcmd()
1714 addsta->reserved1 = cpu_to_le16(0); in il4965_build_addsta_hcmd()
1715 addsta->reserved2 = cpu_to_le16(0); in il4965_build_addsta_hcmd()
1727 if (memcmp(&il->staging, &il->active, sizeof(il->staging))) in il4965_post_scan()
1734 struct ieee80211_vif *vif = il->vif; in il4965_post_associate()
1737 if (!vif || !il->is_open) in il4965_post_associate()
1740 if (test_bit(S_EXIT_PENDING, &il->status)) in il4965_post_associate()
1745 il->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in il4965_post_associate()
1750 IL_WARN("RXON timing - " "Attempting to continue.\n"); in il4965_post_associate()
1752 il->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in il4965_post_associate()
1754 il_set_rxon_ht(il, &il->current_ht_config); in il4965_post_associate()
1756 if (il->ops->set_rxon_chain) in il4965_post_associate()
1757 il->ops->set_rxon_chain(il); in il4965_post_associate()
1759 il->staging.assoc_id = cpu_to_le16(vif->cfg.aid); in il4965_post_associate()
1761 D_ASSOC("assoc id %d beacon interval %d\n", vif->cfg.aid, in il4965_post_associate()
1762 vif->bss_conf.beacon_int); in il4965_post_associate()
1764 if (vif->bss_conf.use_short_preamble) in il4965_post_associate()
1765 il->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in il4965_post_associate()
1767 il->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in il4965_post_associate()
1769 if (il->staging.flags & RXON_FLG_BAND_24G_MSK) { in il4965_post_associate()
1770 if (vif->bss_conf.use_short_slot) in il4965_post_associate()
1771 il->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in il4965_post_associate()
1773 il->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in il4965_post_associate()
1778 D_ASSOC("Associated as %d to: %pM\n", vif->cfg.aid, in il4965_post_associate()
1779 il->active.bssid_addr); in il4965_post_associate()
1781 switch (vif->type) { in il4965_post_associate()
1789 vif->type); in il4965_post_associate()
1796 if (il->chain_noise_data.state == IL_CHAIN_NOISE_DONE) in il4965_post_associate()
1801 il->start_calib = 1; in il4965_post_associate()
1807 struct ieee80211_vif *vif = il->vif; in il4965_config_ap()
1810 lockdep_assert_held(&il->mutex); in il4965_config_ap()
1812 if (test_bit(S_EXIT_PENDING, &il->status)) in il4965_config_ap()
1818 /* RXON - unassoc (to set timing command) */ in il4965_config_ap()
1819 il->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK; in il4965_config_ap()
1825 IL_WARN("RXON timing failed - " in il4965_config_ap()
1829 il->chain_noise_data.active_chains = il->hw_params.valid_rx_ant; in il4965_config_ap()
1830 il_set_rxon_ht(il, &il->current_ht_config); in il4965_config_ap()
1831 if (il->ops->set_rxon_chain) in il4965_config_ap()
1832 il->ops->set_rxon_chain(il); in il4965_config_ap()
1834 il->staging.assoc_id = 0; in il4965_config_ap()
1836 if (vif->bss_conf.use_short_preamble) in il4965_config_ap()
1837 il->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; in il4965_config_ap()
1839 il->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; in il4965_config_ap()
1841 if (il->staging.flags & RXON_FLG_BAND_24G_MSK) { in il4965_config_ap()
1842 if (vif->bss_conf.use_short_slot) in il4965_config_ap()
1843 il->staging.flags |= RXON_FLG_SHORT_SLOT_MSK; in il4965_config_ap()
1845 il->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK; in il4965_config_ap()
1850 il->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; in il4965_config_ap()
1904 * because the device has off-channel reception on chain A.