mvm.h (de8a334f215c5a5c5bb070df4325af824d7eaaf1) | mvm.h (e119e740b1899169a19cf3cd43993a7d88c63bc6) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2/* | 1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2/* |
3 * Copyright (C) 2012-2014, 2018-2022 Intel Corporation | 3 * Copyright (C) 2012-2014, 2018-2023 Intel Corporation |
4 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH 5 * Copyright (C) 2016-2017 Intel Deutschland GmbH 6 */ 7#ifndef __IWL_MVM_H__ 8#define __IWL_MVM_H__ 9 10#include <linux/list.h> 11#include <linux/spinlock.h> --- 87 unchanged lines hidden (view full) --- 99 u32 ref; 100 101 enum nl80211_chan_width width; 102 103 struct ieee80211_channel *channel; 104 105 /* track for RLC config command */ 106 u32 center_freq1; | 4 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH 5 * Copyright (C) 2016-2017 Intel Deutschland GmbH 6 */ 7#ifndef __IWL_MVM_H__ 8#define __IWL_MVM_H__ 9 10#include <linux/list.h> 11#include <linux/spinlock.h> --- 87 unchanged lines hidden (view full) --- 99 u32 ref; 100 101 enum nl80211_chan_width width; 102 103 struct ieee80211_channel *channel; 104 105 /* track for RLC config command */ 106 u32 center_freq1; |
107 bool rlc_disabled; |
|
107}; 108 109struct iwl_mvm_time_event_data { 110 struct ieee80211_vif *vif; 111 struct list_head list; 112 unsigned long end_jiffies; 113 u32 duration; 114 bool running; --- 180 unchanged lines hidden (view full) --- 295 * average signal of beacons retrieved from the firmware 296 * @smps_requests: the SMPS requests of different parts of the driver, 297 * combined on update to yield the overall request to mac80211. 298 * @probe_resp_data: data from FW notification to store NOA and CSA related 299 * data to be inserted into probe response. 300 * @he_ru_2mhz_block: 26-tone RU OFDMA transmissions should be blocked 301 * @queue_params: QoS params for this MAC 302 * @mgmt_queue: queue number for unbufferable management frames | 108}; 109 110struct iwl_mvm_time_event_data { 111 struct ieee80211_vif *vif; 112 struct list_head list; 113 unsigned long end_jiffies; 114 u32 duration; 115 bool running; --- 180 unchanged lines hidden (view full) --- 296 * average signal of beacons retrieved from the firmware 297 * @smps_requests: the SMPS requests of different parts of the driver, 298 * combined on update to yield the overall request to mac80211. 299 * @probe_resp_data: data from FW notification to store NOA and CSA related 300 * data to be inserted into probe response. 301 * @he_ru_2mhz_block: 26-tone RU OFDMA transmissions should be blocked 302 * @queue_params: QoS params for this MAC 303 * @mgmt_queue: queue number for unbufferable management frames |
304 * @igtk: the current IGTK programmed into the firmware 305 * @listen_lmac: indicates this link is allocated to the listen LMAC |
|
303 */ 304struct iwl_mvm_vif_link_info { 305 u8 bssid[ETH_ALEN]; 306 u8 ap_sta_id; 307 u8 fw_link_id; 308 309 struct iwl_mvm_int_sta bcast_sta; 310 struct iwl_mvm_int_sta mcast_sta; 311 312 struct { 313 u32 num_beacons, accu_num_beacons; 314 u8 avg_signal; 315 } beacon_stats; 316 317 enum ieee80211_smps_mode smps_requests[NUM_IWL_MVM_SMPS_REQ]; 318 struct iwl_probe_resp_data __rcu *probe_resp_data; 319 | 306 */ 307struct iwl_mvm_vif_link_info { 308 u8 bssid[ETH_ALEN]; 309 u8 ap_sta_id; 310 u8 fw_link_id; 311 312 struct iwl_mvm_int_sta bcast_sta; 313 struct iwl_mvm_int_sta mcast_sta; 314 315 struct { 316 u32 num_beacons, accu_num_beacons; 317 u8 avg_signal; 318 } beacon_stats; 319 320 enum ieee80211_smps_mode smps_requests[NUM_IWL_MVM_SMPS_REQ]; 321 struct iwl_probe_resp_data __rcu *probe_resp_data; 322 |
323 struct ieee80211_key_conf *igtk; 324 |
|
320 bool he_ru_2mhz_block; 321 bool active; | 325 bool he_ru_2mhz_block; 326 bool active; |
327 bool listen_lmac; |
|
322 323 u16 cab_queue; 324 /* Assigned while mac80211 has the link in a channel context, 325 * or, for P2P Device, while it exists. 326 */ 327 struct iwl_mvm_phy_ctxt *phy_ctxt; 328 /* QoS data from mac80211, need to store this here 329 * as mac80211 has a separate callback but we need --- 35 unchanged lines hidden (view full) --- 365 u16 color; 366 367 bool associated; 368 u8 ap_assoc_sta_count; 369 bool uploaded; 370 bool ap_ibss_active; 371 bool pm_enabled; 372 bool monitor_active; | 328 329 u16 cab_queue; 330 /* Assigned while mac80211 has the link in a channel context, 331 * or, for P2P Device, while it exists. 332 */ 333 struct iwl_mvm_phy_ctxt *phy_ctxt; 334 /* QoS data from mac80211, need to store this here 335 * as mac80211 has a separate callback but we need --- 35 unchanged lines hidden (view full) --- 371 u16 color; 372 373 bool associated; 374 u8 ap_assoc_sta_count; 375 bool uploaded; 376 bool ap_ibss_active; 377 bool pm_enabled; 378 bool monitor_active; |
379 bool esr_active; |
|
373 374 u8 low_latency: 6; 375 u8 low_latency_actual: 1; 376 377 u8 authorized:1; 378 bool ps_disabled; 379 380 u32 ap_beacon_time; --- 29 unchanged lines hidden (view full) --- 410 struct dentry *dbgfs_slink; 411 struct iwl_dbgfs_pm dbgfs_pm; 412 struct iwl_dbgfs_bf dbgfs_bf; 413 struct iwl_mac_power_cmd mac_pwr_cmd; 414 int dbgfs_quota_min; 415#endif 416 417 /* FW identified misbehaving AP */ | 380 381 u8 low_latency: 6; 382 u8 low_latency_actual: 1; 383 384 u8 authorized:1; 385 bool ps_disabled; 386 387 u32 ap_beacon_time; --- 29 unchanged lines hidden (view full) --- 417 struct dentry *dbgfs_slink; 418 struct iwl_dbgfs_pm dbgfs_pm; 419 struct iwl_dbgfs_bf dbgfs_bf; 420 struct iwl_mac_power_cmd mac_pwr_cmd; 421 int dbgfs_quota_min; 422#endif 423 424 /* FW identified misbehaving AP */ |
418 u8 uapsd_misbehaving_bssid[ETH_ALEN]; | 425 u8 uapsd_misbehaving_ap_addr[ETH_ALEN] __aligned(2); |
419 struct delayed_work uapsd_nonagg_detected_wk; 420 421 bool csa_countdown; 422 bool csa_failed; 423 bool csa_bcn_pending; 424 u16 csa_target_freq; 425 u16 csa_count; 426 u16 csa_misbehave; --- 571 unchanged lines hidden (view full) --- 998 * A bitmap indicating the index of the key in use. The firmware 999 * can hold 16 keys at most. Reflect this fact. 1000 */ 1001 unsigned long fw_key_table[BITS_TO_LONGS(STA_KEY_MAX_NUM)]; 1002 u8 fw_key_deleted[STA_KEY_MAX_NUM]; 1003 1004 struct ieee80211_vif __rcu *vif_id_to_mac[NUM_MAC_INDEX_DRIVER]; 1005 | 426 struct delayed_work uapsd_nonagg_detected_wk; 427 428 bool csa_countdown; 429 bool csa_failed; 430 bool csa_bcn_pending; 431 u16 csa_target_freq; 432 u16 csa_count; 433 u16 csa_misbehave; --- 571 unchanged lines hidden (view full) --- 1005 * A bitmap indicating the index of the key in use. The firmware 1006 * can hold 16 keys at most. Reflect this fact. 1007 */ 1008 unsigned long fw_key_table[BITS_TO_LONGS(STA_KEY_MAX_NUM)]; 1009 u8 fw_key_deleted[STA_KEY_MAX_NUM]; 1010 1011 struct ieee80211_vif __rcu *vif_id_to_mac[NUM_MAC_INDEX_DRIVER]; 1012 |
1013 struct ieee80211_bss_conf __rcu *link_id_to_link_conf[IWL_MVM_FW_MAX_LINK_ID + 1]; 1014 |
|
1006 /* -1 for always, 0 for never, >0 for that many times */ 1007 s8 fw_restart; 1008 u8 *error_recovery_buf; 1009 1010#ifdef CONFIG_IWLWIFI_LEDS 1011 struct led_classdev led; 1012#endif 1013 --- 155 unchanged lines hidden (view full) --- 1169 * in steps of 80 MHz 1170 */ 1171 u8 monitor_p80; 1172 1173 /* sniffer data to include in radiotap */ 1174 __le16 cur_aid; 1175 u8 cur_bssid[ETH_ALEN]; 1176 | 1015 /* -1 for always, 0 for never, >0 for that many times */ 1016 s8 fw_restart; 1017 u8 *error_recovery_buf; 1018 1019#ifdef CONFIG_IWLWIFI_LEDS 1020 struct led_classdev led; 1021#endif 1022 --- 155 unchanged lines hidden (view full) --- 1178 * in steps of 80 MHz 1179 */ 1180 u8 monitor_p80; 1181 1182 /* sniffer data to include in radiotap */ 1183 __le16 cur_aid; 1184 u8 cur_bssid[ETH_ALEN]; 1185 |
1186#ifdef CONFIG_ACPI 1187 struct iwl_phy_specific_cfg phy_filters; 1188#endif 1189 |
|
1177 unsigned long last_6ghz_passive_scan_jiffies; 1178 unsigned long last_reset_or_resume_time_jiffies; 1179 1180 bool sta_remove_requires_queue_remove; 1181 bool mld_api_is_used; 1182 1183 bool pldr_sync; 1184 --- 112 unchanged lines hidden (view full) --- 1297 1298 if (rcu) 1299 return rcu_dereference(mvm->vif_id_to_mac[vif_id]); 1300 1301 return rcu_dereference_protected(mvm->vif_id_to_mac[vif_id], 1302 lockdep_is_held(&mvm->mutex)); 1303} 1304 | 1190 unsigned long last_6ghz_passive_scan_jiffies; 1191 unsigned long last_reset_or_resume_time_jiffies; 1192 1193 bool sta_remove_requires_queue_remove; 1194 bool mld_api_is_used; 1195 1196 bool pldr_sync; 1197 --- 112 unchanged lines hidden (view full) --- 1310 1311 if (rcu) 1312 return rcu_dereference(mvm->vif_id_to_mac[vif_id]); 1313 1314 return rcu_dereference_protected(mvm->vif_id_to_mac[vif_id], 1315 lockdep_is_held(&mvm->mutex)); 1316} 1317 |
1318static inline struct ieee80211_bss_conf * 1319iwl_mvm_rcu_fw_link_id_to_link_conf(struct iwl_mvm *mvm, u8 link_id, bool rcu) 1320{ 1321 if (WARN_ON(link_id >= ARRAY_SIZE(mvm->link_id_to_link_conf))) 1322 return NULL; 1323 1324 if (rcu) 1325 return rcu_dereference(mvm->link_id_to_link_conf[link_id]); 1326 1327 return rcu_dereference_protected(mvm->link_id_to_link_conf[link_id], 1328 lockdep_is_held(&mvm->mutex)); 1329} 1330 |
|
1305static inline bool iwl_mvm_is_adaptive_dwell_supported(struct iwl_mvm *mvm) 1306{ 1307 return fw_has_api(&mvm->fw->ucode_capa, 1308 IWL_UCODE_TLV_API_ADAPTIVE_DWELL); 1309} 1310 1311static inline bool iwl_mvm_is_adaptive_dwell_v2_supported(struct iwl_mvm *mvm) 1312{ --- 97 unchanged lines hidden (view full) --- 1410} 1411 1412static inline bool iwl_mvm_has_mld_api(const struct iwl_fw *fw) 1413{ 1414 return fw_has_capa(&fw->ucode_capa, 1415 IWL_UCODE_TLV_CAPA_MLD_API_SUPPORT); 1416} 1417 | 1331static inline bool iwl_mvm_is_adaptive_dwell_supported(struct iwl_mvm *mvm) 1332{ 1333 return fw_has_api(&mvm->fw->ucode_capa, 1334 IWL_UCODE_TLV_API_ADAPTIVE_DWELL); 1335} 1336 1337static inline bool iwl_mvm_is_adaptive_dwell_v2_supported(struct iwl_mvm *mvm) 1338{ --- 97 unchanged lines hidden (view full) --- 1436} 1437 1438static inline bool iwl_mvm_has_mld_api(const struct iwl_fw *fw) 1439{ 1440 return fw_has_capa(&fw->ucode_capa, 1441 IWL_UCODE_TLV_CAPA_MLD_API_SUPPORT); 1442} 1443 |
1444static inline bool iwl_mvm_has_new_station_api(const struct iwl_fw *fw) 1445{ 1446 return iwl_mvm_has_mld_api(fw) || 1447 iwl_fw_lookup_cmd_ver(fw, ADD_STA, 0) >= 12; 1448} 1449 |
|
1418static inline bool iwl_mvm_has_new_tx_api(struct iwl_mvm *mvm) 1419{ 1420 /* TODO - replace with TLV once defined */ 1421 return mvm->trans->trans_cfg->use_tfh; 1422} 1423 1424static inline bool iwl_mvm_has_unified_ucode(struct iwl_mvm *mvm) 1425{ --- 85 unchanged lines hidden (view full) --- 1511} 1512 1513static inline bool iwl_mvm_is_ctdp_supported(struct iwl_mvm *mvm) 1514{ 1515 return fw_has_capa(&mvm->fw->ucode_capa, 1516 IWL_UCODE_TLV_CAPA_CTDP_SUPPORT); 1517} 1518 | 1450static inline bool iwl_mvm_has_new_tx_api(struct iwl_mvm *mvm) 1451{ 1452 /* TODO - replace with TLV once defined */ 1453 return mvm->trans->trans_cfg->use_tfh; 1454} 1455 1456static inline bool iwl_mvm_has_unified_ucode(struct iwl_mvm *mvm) 1457{ --- 85 unchanged lines hidden (view full) --- 1543} 1544 1545static inline bool iwl_mvm_is_ctdp_supported(struct iwl_mvm *mvm) 1546{ 1547 return fw_has_capa(&mvm->fw->ucode_capa, 1548 IWL_UCODE_TLV_CAPA_CTDP_SUPPORT); 1549} 1550 |
1519static inline bool iwl_mvm_has_new_tx_csum(struct iwl_mvm *mvm) | 1551static inline bool iwl_mvm_is_esr_supported(struct iwl_trans *trans) |
1520{ | 1552{ |
1521 if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_BZ) 1522 return false; | 1553 if ((CSR_HW_RFID_TYPE(trans->hw_rf_id) == IWL_CFG_RF_TYPE_FM) && 1554 !CSR_HW_RFID_IS_CDB(trans->hw_rf_id)) 1555 /* Step A doesn't support eSR */ 1556 return CSR_HW_RFID_STEP(trans->hw_rf_id); |
1523 | 1557 |
1524 if (mvm->trans->trans_cfg->device_family == IWL_DEVICE_FAMILY_BZ && 1525 CSR_HW_REV_TYPE(mvm->trans->hw_rev) == IWL_CFG_MAC_TYPE_GL && 1526 mvm->trans->hw_rev_step <= SILICON_B_STEP) 1527 return false; | 1558 return false; 1559} |
1528 | 1560 |
1529 return true; | 1561static inline int iwl_mvm_max_active_links(struct iwl_mvm *mvm, 1562 struct ieee80211_vif *vif) 1563{ 1564 struct iwl_trans *trans = mvm->fwrt.trans; 1565 1566 if (vif->type == NL80211_IFTYPE_AP) 1567 return mvm->fw->ucode_capa.num_beacons; 1568 1569 if (iwl_mvm_is_esr_supported(trans) || 1570 (CSR_HW_RFID_TYPE(trans->hw_rf_id) == IWL_CFG_RF_TYPE_FM && 1571 CSR_HW_RFID_IS_CDB(trans->hw_rf_id))) 1572 return IWL_MVM_FW_MAX_ACTIVE_LINKS_NUM; 1573 1574 return 1; |
1530} 1531 1532extern const u8 iwl_mvm_ac_to_tx_fifo[]; 1533extern const u8 iwl_mvm_ac_to_gen2_tx_fifo[]; 1534 1535static inline u8 iwl_mvm_mac_ac_to_tx_fifo(struct iwl_mvm *mvm, 1536 enum ieee80211_ac_numbers ac) 1537{ --- 63 unchanged lines hidden (view full) --- 1601 struct ieee80211_tx_info *info, u8 sta_id); 1602void iwl_mvm_set_tx_cmd_rate(struct iwl_mvm *mvm, struct iwl_tx_cmd *tx_cmd, 1603 struct ieee80211_tx_info *info, 1604 struct ieee80211_sta *sta, __le16 fc); 1605void iwl_mvm_mac_itxq_xmit(struct ieee80211_hw *hw, struct ieee80211_txq *txq); 1606unsigned int iwl_mvm_max_amsdu_size(struct iwl_mvm *mvm, 1607 struct ieee80211_sta *sta, 1608 unsigned int tid); | 1575} 1576 1577extern const u8 iwl_mvm_ac_to_tx_fifo[]; 1578extern const u8 iwl_mvm_ac_to_gen2_tx_fifo[]; 1579 1580static inline u8 iwl_mvm_mac_ac_to_tx_fifo(struct iwl_mvm *mvm, 1581 enum ieee80211_ac_numbers ac) 1582{ --- 63 unchanged lines hidden (view full) --- 1646 struct ieee80211_tx_info *info, u8 sta_id); 1647void iwl_mvm_set_tx_cmd_rate(struct iwl_mvm *mvm, struct iwl_tx_cmd *tx_cmd, 1648 struct ieee80211_tx_info *info, 1649 struct ieee80211_sta *sta, __le16 fc); 1650void iwl_mvm_mac_itxq_xmit(struct ieee80211_hw *hw, struct ieee80211_txq *txq); 1651unsigned int iwl_mvm_max_amsdu_size(struct iwl_mvm *mvm, 1652 struct ieee80211_sta *sta, 1653 unsigned int tid); |
1609u32 iwl_mvm_tx_csum_bz(struct iwl_mvm *mvm, struct sk_buff *skb, bool amsdu); | |
1610 1611#ifdef CONFIG_IWLWIFI_DEBUG 1612const char *iwl_mvm_get_tx_fail_reason(u32 status); 1613#else 1614static inline const char *iwl_mvm_get_tx_fail_reason(u32 status) { return ""; } 1615#endif 1616int iwl_mvm_flush_tx_path(struct iwl_mvm *mvm, u32 tfd_msk); 1617int iwl_mvm_flush_sta(struct iwl_mvm *mvm, void *sta, bool internal); --- 118 unchanged lines hidden (view full) --- 1736 u8 chains_static, u8 chains_dynamic); 1737void iwl_mvm_phy_ctxt_ref(struct iwl_mvm *mvm, 1738 struct iwl_mvm_phy_ctxt *ctxt); 1739void iwl_mvm_phy_ctxt_unref(struct iwl_mvm *mvm, 1740 struct iwl_mvm_phy_ctxt *ctxt); 1741int iwl_mvm_phy_ctx_count(struct iwl_mvm *mvm); 1742u8 iwl_mvm_get_channel_width(struct cfg80211_chan_def *chandef); 1743u8 iwl_mvm_get_ctrl_pos(struct cfg80211_chan_def *chandef); | 1654 1655#ifdef CONFIG_IWLWIFI_DEBUG 1656const char *iwl_mvm_get_tx_fail_reason(u32 status); 1657#else 1658static inline const char *iwl_mvm_get_tx_fail_reason(u32 status) { return ""; } 1659#endif 1660int iwl_mvm_flush_tx_path(struct iwl_mvm *mvm, u32 tfd_msk); 1661int iwl_mvm_flush_sta(struct iwl_mvm *mvm, void *sta, bool internal); --- 118 unchanged lines hidden (view full) --- 1780 u8 chains_static, u8 chains_dynamic); 1781void iwl_mvm_phy_ctxt_ref(struct iwl_mvm *mvm, 1782 struct iwl_mvm_phy_ctxt *ctxt); 1783void iwl_mvm_phy_ctxt_unref(struct iwl_mvm *mvm, 1784 struct iwl_mvm_phy_ctxt *ctxt); 1785int iwl_mvm_phy_ctx_count(struct iwl_mvm *mvm); 1786u8 iwl_mvm_get_channel_width(struct cfg80211_chan_def *chandef); 1787u8 iwl_mvm_get_ctrl_pos(struct cfg80211_chan_def *chandef); |
1788int iwl_mvm_phy_send_rlc(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt, 1789 u8 chains_static, u8 chains_dynamic); |
|
1744 1745/* MAC (virtual interface) programming */ 1746 1747void iwl_mvm_prepare_mac_removal(struct iwl_mvm *mvm, 1748 struct ieee80211_vif *vif); 1749void iwl_mvm_set_fw_basic_rates(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1750 struct ieee80211_bss_conf *link_conf, 1751 __le32 *cck_rates, __le32 *ofdm_rates); 1752void iwl_mvm_set_fw_protection_flags(struct iwl_mvm *mvm, 1753 struct ieee80211_vif *vif, 1754 struct ieee80211_bss_conf *link_conf, 1755 __le32 *protection_flags, u32 ht_flag, 1756 u32 tgg_flag); 1757void iwl_mvm_set_fw_qos_params(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1758 struct ieee80211_bss_conf *link_conf, 1759 struct iwl_ac_qos *ac, __le32 *qos_flags); 1760bool iwl_mvm_set_fw_mu_edca_params(struct iwl_mvm *mvm, | 1790 1791/* MAC (virtual interface) programming */ 1792 1793void iwl_mvm_prepare_mac_removal(struct iwl_mvm *mvm, 1794 struct ieee80211_vif *vif); 1795void iwl_mvm_set_fw_basic_rates(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1796 struct ieee80211_bss_conf *link_conf, 1797 __le32 *cck_rates, __le32 *ofdm_rates); 1798void iwl_mvm_set_fw_protection_flags(struct iwl_mvm *mvm, 1799 struct ieee80211_vif *vif, 1800 struct ieee80211_bss_conf *link_conf, 1801 __le32 *protection_flags, u32 ht_flag, 1802 u32 tgg_flag); 1803void iwl_mvm_set_fw_qos_params(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1804 struct ieee80211_bss_conf *link_conf, 1805 struct iwl_ac_qos *ac, __le32 *qos_flags); 1806bool iwl_mvm_set_fw_mu_edca_params(struct iwl_mvm *mvm, |
1761 struct iwl_mvm_vif *mvmvif, | 1807 const struct iwl_mvm_vif_link_info *link_info, |
1762 struct iwl_he_backoff_conf *trig_based_txf); 1763void iwl_mvm_set_fw_dtim_tbtt(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1764 struct ieee80211_bss_conf *link_conf, 1765 __le64 *dtim_tsf, __le32 *dtim_time, 1766 __le32 *assoc_beacon_arrive_time); 1767__le32 iwl_mac_ctxt_p2p_dev_has_extended_disc(struct iwl_mvm *mvm, 1768 struct ieee80211_vif *vif); 1769void iwl_mvm_mac_ctxt_cmd_ap_set_filter_flags(struct iwl_mvm *mvm, 1770 struct iwl_mvm_vif *mvmvif, 1771 __le32 *filter_flags, 1772 int accept_probe_req_flag, 1773 int accept_beacon_flag); 1774int iwl_mvm_get_mac_type(struct ieee80211_vif *vif); 1775__le32 iwl_mvm_mac_ctxt_cmd_p2p_sta_get_oppps_ctwin(struct iwl_mvm *mvm, 1776 struct ieee80211_vif *vif); | 1808 struct iwl_he_backoff_conf *trig_based_txf); 1809void iwl_mvm_set_fw_dtim_tbtt(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1810 struct ieee80211_bss_conf *link_conf, 1811 __le64 *dtim_tsf, __le32 *dtim_time, 1812 __le32 *assoc_beacon_arrive_time); 1813__le32 iwl_mac_ctxt_p2p_dev_has_extended_disc(struct iwl_mvm *mvm, 1814 struct ieee80211_vif *vif); 1815void iwl_mvm_mac_ctxt_cmd_ap_set_filter_flags(struct iwl_mvm *mvm, 1816 struct iwl_mvm_vif *mvmvif, 1817 __le32 *filter_flags, 1818 int accept_probe_req_flag, 1819 int accept_beacon_flag); 1820int iwl_mvm_get_mac_type(struct ieee80211_vif *vif); 1821__le32 iwl_mvm_mac_ctxt_cmd_p2p_sta_get_oppps_ctwin(struct iwl_mvm *mvm, 1822 struct ieee80211_vif *vif); |
1777__le32 iwl_mvm_mac_ctxt_cmd_sta_get_twt_policy(struct iwl_mvm *mvm, 1778 struct ieee80211_vif *vif); | 1823u32 iwl_mvm_mac_ctxt_cmd_sta_get_twt_policy(struct iwl_mvm *mvm, 1824 struct ieee80211_vif *vif); |
1779int iwl_mvm_mld_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1780int iwl_mvm_mld_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1781 bool force_assoc_off); 1782int iwl_mvm_mld_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1783int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1784int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1785int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1786 bool force_assoc_off, const u8 *bssid_override); --- 34 unchanged lines hidden (view full) --- 1821 struct iwl_rx_cmd_buffer *rxb); 1822void iwl_mvm_channel_switch_start_notif(struct iwl_mvm *mvm, 1823 struct iwl_rx_cmd_buffer *rxb); 1824void iwl_mvm_channel_switch_error_notif(struct iwl_mvm *mvm, 1825 struct iwl_rx_cmd_buffer *rxb); 1826/* Bindings */ 1827int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1828int iwl_mvm_binding_remove_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); | 1825int iwl_mvm_mld_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1826int iwl_mvm_mld_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1827 bool force_assoc_off); 1828int iwl_mvm_mld_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1829int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1830int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1831int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1832 bool force_assoc_off, const u8 *bssid_override); --- 34 unchanged lines hidden (view full) --- 1867 struct iwl_rx_cmd_buffer *rxb); 1868void iwl_mvm_channel_switch_start_notif(struct iwl_mvm *mvm, 1869 struct iwl_rx_cmd_buffer *rxb); 1870void iwl_mvm_channel_switch_error_notif(struct iwl_mvm *mvm, 1871 struct iwl_rx_cmd_buffer *rxb); 1872/* Bindings */ 1873int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 1874int iwl_mvm_binding_remove_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); |
1875u32 iwl_mvm_get_lmac_id(struct iwl_mvm *mvm, enum nl80211_band band); |
|
1829 1830/* Links */ 1831int iwl_mvm_add_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1832 struct ieee80211_bss_conf *link_conf); 1833int iwl_mvm_link_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1834 struct ieee80211_bss_conf *link_conf, 1835 u32 changes, bool active); 1836int iwl_mvm_remove_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif, --- 31 unchanged lines hidden (view full) --- 1868 struct ieee80211_bss_conf *bss_conf, 1869 u64 changes); 1870}; 1871 1872void 1873iwl_mvm_bss_info_changed_common(struct ieee80211_hw *hw, 1874 struct ieee80211_vif *vif, 1875 struct ieee80211_bss_conf *bss_conf, | 1876 1877/* Links */ 1878int iwl_mvm_add_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1879 struct ieee80211_bss_conf *link_conf); 1880int iwl_mvm_link_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1881 struct ieee80211_bss_conf *link_conf, 1882 u32 changes, bool active); 1883int iwl_mvm_remove_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif, --- 31 unchanged lines hidden (view full) --- 1915 struct ieee80211_bss_conf *bss_conf, 1916 u64 changes); 1917}; 1918 1919void 1920iwl_mvm_bss_info_changed_common(struct ieee80211_hw *hw, 1921 struct ieee80211_vif *vif, 1922 struct ieee80211_bss_conf *bss_conf, |
1876 struct iwl_mvm_bss_info_changed_ops *callbacks, | 1923 const struct iwl_mvm_bss_info_changed_ops *callbacks, |
1877 u64 changes); 1878void 1879iwl_mvm_bss_info_changed_station_common(struct iwl_mvm *mvm, 1880 struct ieee80211_vif *vif, 1881 struct ieee80211_bss_conf *link_conf, 1882 u64 changes); 1883void iwl_mvm_bss_info_changed_station_assoc(struct iwl_mvm *mvm, 1884 struct ieee80211_vif *vif, --- 17 unchanged lines hidden (view full) --- 1902 int (*add_aux_sta_for_hs20)(struct iwl_mvm *mvm, u32 lmac_id); 1903 int (*switch_phy_ctxt)(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1904 struct iwl_mvm_phy_ctxt *new_phy_ctxt); 1905}; 1906 1907int iwl_mvm_roc_common(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1908 struct ieee80211_channel *channel, int duration, 1909 enum ieee80211_roc_type type, | 1924 u64 changes); 1925void 1926iwl_mvm_bss_info_changed_station_common(struct iwl_mvm *mvm, 1927 struct ieee80211_vif *vif, 1928 struct ieee80211_bss_conf *link_conf, 1929 u64 changes); 1930void iwl_mvm_bss_info_changed_station_assoc(struct iwl_mvm *mvm, 1931 struct ieee80211_vif *vif, --- 17 unchanged lines hidden (view full) --- 1949 int (*add_aux_sta_for_hs20)(struct iwl_mvm *mvm, u32 lmac_id); 1950 int (*switch_phy_ctxt)(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1951 struct iwl_mvm_phy_ctxt *new_phy_ctxt); 1952}; 1953 1954int iwl_mvm_roc_common(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1955 struct ieee80211_channel *channel, int duration, 1956 enum ieee80211_roc_type type, |
1910 struct iwl_mvm_roc_ops *ops); | 1957 const struct iwl_mvm_roc_ops *ops); |
1911int iwl_mvm_cancel_roc(struct ieee80211_hw *hw, 1912 struct ieee80211_vif *vif); 1913/*Session Protection */ 1914void iwl_mvm_protect_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1915 u32 duration_override); 1916 1917/* Quota management */ 1918static inline size_t iwl_mvm_quota_cmd_size(struct iwl_mvm *mvm) --- 280 unchanged lines hidden (view full) --- 2199 2200#else 2201 2202static inline void iwl_mvm_vendor_cmds_register(struct iwl_mvm *mvm) {} 2203 2204#endif 2205 2206/* Location Aware Regulatory */ | 1958int iwl_mvm_cancel_roc(struct ieee80211_hw *hw, 1959 struct ieee80211_vif *vif); 1960/*Session Protection */ 1961void iwl_mvm_protect_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 1962 u32 duration_override); 1963 1964/* Quota management */ 1965static inline size_t iwl_mvm_quota_cmd_size(struct iwl_mvm *mvm) --- 280 unchanged lines hidden (view full) --- 2246 2247#else 2248 2249static inline void iwl_mvm_vendor_cmds_register(struct iwl_mvm *mvm) {} 2250 2251#endif 2252 2253/* Location Aware Regulatory */ |
2207struct iwl_mcc_update_resp * | 2254struct iwl_mcc_update_resp_v8 * |
2208iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2, 2209 enum iwl_mcc_source src_id); 2210int iwl_mvm_init_mcc(struct iwl_mvm *mvm); 2211void iwl_mvm_rx_chub_update_mcc(struct iwl_mvm *mvm, 2212 struct iwl_rx_cmd_buffer *rxb); 2213struct ieee80211_regdomain *iwl_mvm_get_regdomain(struct wiphy *wiphy, 2214 const char *alpha2, 2215 enum iwl_mcc_source src_id, 2216 bool *changed); 2217struct ieee80211_regdomain *iwl_mvm_get_current_regdomain(struct iwl_mvm *mvm, 2218 bool *changed); 2219int iwl_mvm_init_fw_regd(struct iwl_mvm *mvm); 2220void iwl_mvm_update_changed_regdom(struct iwl_mvm *mvm); 2221 2222/* smart fifo */ 2223int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 2224 bool added_vif); 2225 2226/* FTM responder */ | 2255iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2, 2256 enum iwl_mcc_source src_id); 2257int iwl_mvm_init_mcc(struct iwl_mvm *mvm); 2258void iwl_mvm_rx_chub_update_mcc(struct iwl_mvm *mvm, 2259 struct iwl_rx_cmd_buffer *rxb); 2260struct ieee80211_regdomain *iwl_mvm_get_regdomain(struct wiphy *wiphy, 2261 const char *alpha2, 2262 enum iwl_mcc_source src_id, 2263 bool *changed); 2264struct ieee80211_regdomain *iwl_mvm_get_current_regdomain(struct iwl_mvm *mvm, 2265 bool *changed); 2266int iwl_mvm_init_fw_regd(struct iwl_mvm *mvm); 2267void iwl_mvm_update_changed_regdom(struct iwl_mvm *mvm); 2268 2269/* smart fifo */ 2270int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 2271 bool added_vif); 2272 2273/* FTM responder */ |
2227int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif); | 2274int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 2275 struct ieee80211_bss_conf *bss_conf); |
2228void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm, | 2276void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm, |
2229 struct ieee80211_vif *vif); | 2277 struct ieee80211_vif *vif, 2278 struct ieee80211_bss_conf *bss_conf); |
2230void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm, 2231 struct iwl_rx_cmd_buffer *rxb); 2232int iwl_mvm_ftm_resp_remove_pasn_sta(struct iwl_mvm *mvm, 2233 struct ieee80211_vif *vif, u8 *addr); 2234int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm, 2235 struct ieee80211_vif *vif, 2236 u8 *addr, u32 cipher, u8 *tk, u32 tk_len, 2237 u8 *hltk, u32 hltk_len); --- 79 unchanged lines hidden (view full) --- 2317void iwl_mvm_ptp_init(struct iwl_mvm *mvm); 2318void iwl_mvm_ptp_remove(struct iwl_mvm *mvm); 2319u64 iwl_mvm_ptp_get_adj_time(struct iwl_mvm *mvm, u64 base_time); 2320int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b); 2321int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm); 2322int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm); 2323void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm); 2324#ifdef CONFIG_IWLWIFI_DEBUGFS | 2279void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm, 2280 struct iwl_rx_cmd_buffer *rxb); 2281int iwl_mvm_ftm_resp_remove_pasn_sta(struct iwl_mvm *mvm, 2282 struct ieee80211_vif *vif, u8 *addr); 2283int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm, 2284 struct ieee80211_vif *vif, 2285 u8 *addr, u32 cipher, u8 *tk, u32 tk_len, 2286 u8 *hltk, u32 hltk_len); --- 79 unchanged lines hidden (view full) --- 2366void iwl_mvm_ptp_init(struct iwl_mvm *mvm); 2367void iwl_mvm_ptp_remove(struct iwl_mvm *mvm); 2368u64 iwl_mvm_ptp_get_adj_time(struct iwl_mvm *mvm, u64 base_time); 2369int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b); 2370int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm); 2371int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm); 2372void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm); 2373#ifdef CONFIG_IWLWIFI_DEBUGFS |
2325void iwl_mvm_sta_add_debugfs(struct ieee80211_hw *hw, 2326 struct ieee80211_vif *vif, 2327 struct ieee80211_sta *sta, 2328 struct dentry *dir); | 2374void iwl_mvm_link_sta_add_debugfs(struct ieee80211_hw *hw, 2375 struct ieee80211_vif *vif, 2376 struct ieee80211_link_sta *link_sta, 2377 struct dentry *dir); |
2329#endif 2330 2331/* new MLD related APIs */ 2332int iwl_mvm_sec_key_add(struct iwl_mvm *mvm, 2333 struct ieee80211_vif *vif, 2334 struct ieee80211_sta *sta, 2335 struct ieee80211_key_conf *keyconf); 2336int iwl_mvm_sec_key_del(struct iwl_mvm *mvm, --- 4 unchanged lines hidden (view full) --- 2341 struct ieee80211_vif *vif, 2342 struct iwl_mvm_vif_link_info *link, 2343 unsigned int link_id); 2344int iwl_mvm_mld_update_sta_keys(struct iwl_mvm *mvm, 2345 struct ieee80211_vif *vif, 2346 struct ieee80211_sta *sta, 2347 u32 old_sta_mask, 2348 u32 new_sta_mask); | 2378#endif 2379 2380/* new MLD related APIs */ 2381int iwl_mvm_sec_key_add(struct iwl_mvm *mvm, 2382 struct ieee80211_vif *vif, 2383 struct ieee80211_sta *sta, 2384 struct ieee80211_key_conf *keyconf); 2385int iwl_mvm_sec_key_del(struct iwl_mvm *mvm, --- 4 unchanged lines hidden (view full) --- 2390 struct ieee80211_vif *vif, 2391 struct iwl_mvm_vif_link_info *link, 2392 unsigned int link_id); 2393int iwl_mvm_mld_update_sta_keys(struct iwl_mvm *mvm, 2394 struct ieee80211_vif *vif, 2395 struct ieee80211_sta *sta, 2396 u32 old_sta_mask, 2397 u32 new_sta_mask); |
2398int iwl_mvm_mld_send_key(struct iwl_mvm *mvm, u32 sta_mask, u32 key_flags, 2399 struct ieee80211_key_conf *keyconf); 2400u32 iwl_mvm_get_sec_flags(struct iwl_mvm *mvm, 2401 struct ieee80211_vif *vif, 2402 struct ieee80211_sta *sta, 2403 struct ieee80211_key_conf *keyconf); |
|
2349 2350bool iwl_rfi_supported(struct iwl_mvm *mvm); 2351int iwl_rfi_send_config_cmd(struct iwl_mvm *mvm, 2352 struct iwl_rfi_lut_entry *rfi_table); 2353struct iwl_rfi_freq_table_resp_cmd *iwl_rfi_get_freq_table(struct iwl_mvm *mvm); 2354void iwl_rfi_deactivate_notif_handler(struct iwl_mvm *mvm, 2355 struct iwl_rx_cmd_buffer *rxb); 2356 --- 44 unchanged lines hidden (view full) --- 2401 bool switching_chanctx); 2402}; 2403 2404int 2405iwl_mvm_switch_vif_chanctx_common(struct ieee80211_hw *hw, 2406 struct ieee80211_vif_chanctx_switch *vifs, 2407 int n_vifs, 2408 enum ieee80211_chanctx_switch_mode mode, | 2404 2405bool iwl_rfi_supported(struct iwl_mvm *mvm); 2406int iwl_rfi_send_config_cmd(struct iwl_mvm *mvm, 2407 struct iwl_rfi_lut_entry *rfi_table); 2408struct iwl_rfi_freq_table_resp_cmd *iwl_rfi_get_freq_table(struct iwl_mvm *mvm); 2409void iwl_rfi_deactivate_notif_handler(struct iwl_mvm *mvm, 2410 struct iwl_rx_cmd_buffer *rxb); 2411 --- 44 unchanged lines hidden (view full) --- 2456 bool switching_chanctx); 2457}; 2458 2459int 2460iwl_mvm_switch_vif_chanctx_common(struct ieee80211_hw *hw, 2461 struct ieee80211_vif_chanctx_switch *vifs, 2462 int n_vifs, 2463 enum ieee80211_chanctx_switch_mode mode, |
2409 struct iwl_mvm_switch_vif_chanctx_ops *ops); | 2464 const struct iwl_mvm_switch_vif_chanctx_ops *ops); |
2410 2411/* Channel info utils */ 2412static inline bool iwl_mvm_has_ultra_hb_channel(struct iwl_mvm *mvm) 2413{ 2414 return fw_has_capa(&mvm->fw->ucode_capa, 2415 IWL_UCODE_TLV_CAPA_ULTRA_HB_CHANNELS); 2416} 2417 --- 254 unchanged lines hidden --- | 2465 2466/* Channel info utils */ 2467static inline bool iwl_mvm_has_ultra_hb_channel(struct iwl_mvm *mvm) 2468{ 2469 return fw_has_capa(&mvm->fw->ucode_capa, 2470 IWL_UCODE_TLV_CAPA_ULTRA_HB_CHANNELS); 2471} 2472 --- 254 unchanged lines hidden --- |