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 ---