Lines Matching full:struct
86 extern const struct ieee80211_ops iwl_mvm_hw_ops;
87 extern const struct ieee80211_ops iwl_mvm_mld_hw_ops;
90 * struct iwl_mvm_mod_params - module parameters for iwlmvm
93 struct iwl_mvm_mod_params {
96 extern struct iwl_mvm_mod_params iwlmvm_mod_params;
98 struct iwl_mvm_phy_ctxt {
105 struct ieee80211_channel *channel;
113 struct iwl_mvm_time_event_data {
114 struct ieee80211_vif *vif;
115 struct list_head list;
160 struct iwl_dbgfs_pm {
190 struct iwl_dbgfs_bf {
259 * struct iwl_mvm_link_bf_data - beacon filtering related data
266 struct iwl_mvm_link_bf_data {
275 * struct iwl_probe_resp_data - data for NoA/CSA updates
280 struct iwl_probe_resp_data {
281 struct rcu_head rcu_head;
282 struct iwl_probe_resp_data_notif notif;
287 * struct iwl_mvm_vif_link_info - per link data in Virtual Interface
311 struct iwl_mvm_vif_link_info {
316 struct iwl_mvm_int_sta bcast_sta;
317 struct iwl_mvm_int_sta mcast_sta;
319 struct {
325 struct iwl_probe_resp_data __rcu *probe_resp_data;
327 struct ieee80211_key_conf *igtk;
337 struct iwl_mvm_phy_ctxt *phy_ctxt;
342 struct ieee80211_tx_queue_params queue_params[IEEE80211_NUM_ACS];
346 struct iwl_mvm_link_bf_data bf_data;
397 * struct iwl_mvm_esr_exit - details of the last exit from EMLSR mode.
402 struct iwl_mvm_esr_exit {
408 * struct iwl_mvm_vif - data per Virtual Interface, it is a MAC context
409 * @mvm: pointer back to the mvm struct
491 struct iwl_mvm_vif {
492 struct iwl_mvm *mvm;
518 struct {
536 struct in6_addr target_ipv6_addrs[IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_MAX];
542 struct dentry *dbgfs_dir;
543 struct dentry *dbgfs_slink;
544 struct iwl_dbgfs_pm dbgfs_pm;
545 struct iwl_dbgfs_bf dbgfs_bf;
546 struct iwl_mac_power_cmd mac_pwr_cmd;
553 struct delayed_work uapsd_nonagg_detected_wk;
562 struct delayed_work csa_work;
566 struct iwl_mvm_time_event_data time_event_data;
567 struct iwl_mvm_time_event_data hs_time_event_data;
573 struct ieee80211_sta *ap_sta;
576 struct ieee80211_key_conf *ap_early_keys[4];
578 struct {
579 struct ieee80211_key_conf __rcu *keys[2];
587 struct iwl_mvm_esr_exit last_esr_exit;
589 struct wiphy_delayed_work prevent_esr_done_wk;
590 struct wiphy_delayed_work mlo_int_scan_wk;
591 struct wiphy_work unblock_esr_tpt_wk;
593 struct iwl_mvm_vif_link_info deflink;
594 struct iwl_mvm_vif_link_info *link[IEEE80211_MLD_MAX_NUM_LINKS];
603 static inline struct iwl_mvm_vif *
604 iwl_mvm_vif_from_mac80211(struct ieee80211_vif *vif)
653 * struct iwl_mvm_tt_mgmt - Thermal Throttling Management structure
661 struct iwl_mvm_tt_mgmt {
662 struct delayed_work ct_kill_exit;
666 struct iwl_tt_params params;
672 * struct iwl_mvm_thermal_device - thermal zone related data
676 struct iwl_mvm_thermal_device {
677 struct thermal_trip trips[IWL_MAX_DTS_TRIPS];
678 struct thermal_zone_device *tzone;
682 * struct iwl_mvm_cooling_device
684 * @cdev: struct thermal cooling device
686 struct iwl_mvm_cooling_device {
688 struct thermal_cooling_device *cdev;
694 struct iwl_mvm_frame_stats {
734 struct iwl_mvm_tcm_mac {
735 struct {
739 struct {
744 struct {
747 struct ewma_rate rate;
753 struct iwl_mvm_tcm {
754 struct delayed_work work;
760 struct iwl_mvm_tcm_mac data[NUM_MAC_INDEX_DRIVER];
761 struct {
773 * struct iwl_mvm_reorder_buffer - per ra/tid/queue reorder buffer
782 struct iwl_mvm_reorder_buffer {
793 * struct iwl_mvm_reorder_buf_entry - reorder buffer entry per-queue/per-seqno
796 struct iwl_mvm_reorder_buf_entry {
797 struct sk_buff_head frames;
801 __aligned(roundup_pow_of_two(sizeof(struct sk_buff_head)))
806 * struct iwl_mvm_baid_data - BA session data
822 struct iwl_mvm_baid_data {
823 struct rcu_head rcu_head;
831 struct timer_list session_timer;
832 struct iwl_mvm_baid_data __rcu **rcu_ptr;
833 struct iwl_mvm *mvm;
834 struct iwl_mvm_reorder_buffer reorder_buf[IWL_MAX_RX_HW_QUEUES];
835 struct iwl_mvm_reorder_buf_entry entries[] ____cacheline_aligned_in_smp;
838 static inline struct iwl_mvm_baid_data *
839 iwl_mvm_baid_data_from_reorder_buf(struct iwl_mvm_reorder_buffer *buf)
842 offsetof(struct iwl_mvm_baid_data, reorder_buf) -
879 struct iwl_mvm_txq {
880 struct list_head list;
890 static inline struct iwl_mvm_txq *
891 iwl_mvm_txq_from_mac80211(struct ieee80211_txq *txq)
896 static inline struct iwl_mvm_txq *
897 iwl_mvm_txq_from_tid(struct ieee80211_sta *sta, u8 tid)
906 * struct iwl_mvm_tvqm_txq_info - maps TVQM hw queue to tid
911 struct iwl_mvm_tvqm_txq_info {
916 struct iwl_mvm_dqa_txq_info {
927 struct ptp_data {
928 struct ptp_clock *ptp_clock;
929 struct ptp_clock_info ptp_clock_info;
931 struct delayed_work dwork;
952 struct iwl_time_sync_data {
953 struct sk_buff_head frame_list;
958 struct iwl_mei_scan_filter {
960 struct sk_buff_head scan_res;
961 struct work_struct scan_work;
965 * struct iwl_mvm_acs_survey_channel - per-channel survey information
967 * Stripped down version of &struct survey_info.
975 struct iwl_mvm_acs_survey_channel {
983 struct iwl_mvm_acs_survey {
984 struct iwl_mvm_acs_survey_channel *bands[NUM_NL80211_BANDS];
990 struct iwl_mvm_acs_survey_channel channels[] __counted_by(n_channels);
993 struct iwl_mvm {
995 struct device *dev;
997 struct iwl_trans *trans;
998 const struct iwl_fw *fw;
999 const struct iwl_cfg *cfg;
1000 struct iwl_phy_db *phy_db;
1001 struct ieee80211_hw *hw;
1004 struct mutex mutex;
1005 struct list_head async_handlers_list;
1007 struct work_struct async_handlers_wk;
1010 struct wiphy_work async_handlers_wiphy_wk;
1012 struct wiphy_work trig_link_selection_wk;
1014 struct work_struct roc_done_wk;
1026 struct iwl_mvm_vif *bf_allowed_vif;
1036 struct iwl_notif_wait_data notif_wait;
1039 struct mvm_statistics_rx_v3 rx_stats_v3;
1040 struct mvm_statistics_rx rx_stats;
1043 struct {
1050 struct list_head add_stream_txqs;
1052 struct iwl_mvm_dqa_txq_info queue_info[IWL_MAX_HW_QUEUES];
1053 struct iwl_mvm_tvqm_txq_info tvqm_info[IWL_MAX_TVQM_QUEUES];
1055 struct work_struct add_stream_wk; /* To add streams to queues */
1059 struct iwl_nvm_data *nvm_data;
1060 struct iwl_mei_nvm *mei_nvm_data;
1061 struct iwl_mvm_csme_conn_info __rcu *csme_conn_info;
1064 struct work_struct sap_connected_wk;
1070 struct iwl_nvm_data *temp_nvm_data;
1073 struct iwl_nvm_section nvm_sections[NVM_MAX_NUM_SECTIONS];
1075 struct iwl_fw_runtime fwrt;
1078 struct mac_address addresses[IWL_MVM_MAX_ADDRESSES];
1081 struct iwl_rx_phy_info last_phy_info;
1082 struct ieee80211_sta __rcu *fw_id_to_mac_id[IWL_MVM_STATION_COUNT_MAX];
1083 struct ieee80211_link_sta __rcu *fw_id_to_link_sta[IWL_MVM_STATION_COUNT_MAX];
1093 struct iwl_mcast_filter_cmd *mcast_filter_cmd;
1099 struct delayed_work scan_timeout_dwork;
1111 struct iwl_mvm_vif *scan_vif;
1118 struct iwl_mvm_int_sta aux_sta;
1119 struct iwl_mvm_int_sta snif_sta;
1136 struct dentry *debugfs_dir;
1146 struct debugfs_blob_wrapper nvm_hw_blob;
1147 struct debugfs_blob_wrapper nvm_sw_blob;
1148 struct debugfs_blob_wrapper nvm_calib_blob;
1149 struct debugfs_blob_wrapper nvm_prod_blob;
1150 struct debugfs_blob_wrapper nvm_phy_sku_blob;
1151 struct debugfs_blob_wrapper nvm_reg_blob;
1153 struct iwl_mvm_frame_stats drv_rx_stats;
1158 struct iwl_mvm_phy_ctxt phy_ctxts[NUM_PHY_CTX];
1160 struct list_head time_event_list;
1170 struct ieee80211_vif __rcu *vif_id_to_mac[NUM_MAC_INDEX_DRIVER];
1172 struct ieee80211_bss_conf __rcu *link_id_to_link_conf[IWL_MVM_FW_MAX_LINK_ID + 1];
1179 struct led_classdev led;
1182 struct ieee80211_vif *p2p_device_vif;
1185 struct wiphy_wowlan_support wowlan;
1189 struct ieee80211_scan_ies nd_ies;
1190 struct cfg80211_match_set *nd_match_sets;
1192 struct ieee80211_channel **nd_channels;
1201 struct ieee80211_vif *keep_vif;
1209 struct iwl_bt_coex_profile_notif last_bt_notif;
1210 struct iwl_bt_coex_ci_cmd last_bt_ci_cmd;
1216 struct list_head aux_roc_te_list;
1219 struct iwl_mvm_tt_mgmt thermal_throttle;
1221 struct iwl_mvm_thermal_device tz_device;
1222 struct iwl_mvm_cooling_device cooling_dev;
1236 struct iwl_mvm_tcm tcm;
1239 struct mac_address uapsd_noagg_bssids[IWL_MVM_UAPSD_NOAGG_BSSIDS_NUM]
1242 struct iwl_time_quota_cmd last_quota_cmd;
1246 struct ieee80211_vif *noa_vif;
1261 struct ieee80211_vif *csme_vif;
1262 struct ieee80211_vif __rcu *csa_vif;
1263 struct ieee80211_vif __rcu *csa_tx_blocked_vif;
1276 struct {
1277 struct delayed_work dwork;
1287 struct {
1291 struct cfg80211_chan_def chandef;
1292 struct sk_buff *skb; /* ch sw template */
1303 struct cfg80211_ftm_responder_stats ftm_resp_stats;
1304 struct {
1305 struct cfg80211_pmsr_request *req;
1306 struct wireless_dev *req_wdev;
1307 struct list_head loc_list;
1309 struct {
1310 struct list_head resp;
1312 struct list_head pasn_list;
1315 struct list_head resp_pasn_list;
1317 struct ptp_data ptp_data;
1319 struct {
1323 struct ieee80211_vif *nan_vif;
1324 struct iwl_mvm_baid_data __rcu *baid_map[IWL_MAX_BAID];
1332 struct delayed_work cs_tx_unblock_dwork;
1347 struct iwl_phy_specific_cfg phy_filters;
1366 struct iwl_time_sync_data time_sync;
1368 struct iwl_mei_scan_filter mei_scan_filter;
1370 struct iwl_mvm_acs_survey *acs_survey;
1377 ((struct iwl_mvm *)(_iwl_op_mode)->op_mode_specific)
1380 IWL_OP_MODE_GET_MVM((struct iwl_op_mode *)((_hw)->priv))
1382 DEFINE_GUARD(mvm, struct iwl_mvm *, mutex_lock(&_T->mutex), mutex_unlock(&_T->mutex))
1413 struct iwl_mvm_csme_conn_info {
1414 struct rcu_head rcu_head;
1415 struct iwl_mei_conn_info conn_info;
1424 static inline bool iwl_mvm_is_radio_killed(struct iwl_mvm *mvm)
1430 static inline bool iwl_mvm_is_radio_hw_killed(struct iwl_mvm *mvm)
1435 static inline bool iwl_mvm_firmware_running(struct iwl_mvm *mvm)
1443 static inline struct iwl_mvm_sta *
1444 iwl_mvm_sta_from_staid_rcu(struct iwl_mvm *mvm, u8 sta_id)
1446 struct ieee80211_sta *sta;
1460 static inline struct iwl_mvm_sta *
1461 iwl_mvm_sta_from_staid_protected(struct iwl_mvm *mvm, u8 sta_id)
1463 struct ieee80211_sta *sta;
1478 static inline struct ieee80211_vif *
1479 iwl_mvm_rcu_dereference_vif_id(struct iwl_mvm *mvm, u8 vif_id, bool rcu)
1491 static inline struct ieee80211_bss_conf *
1492 iwl_mvm_rcu_fw_link_id_to_link_conf(struct iwl_mvm *mvm, u8 link_id, bool rcu)
1505 static inline bool iwl_mvm_is_adaptive_dwell_supported(struct iwl_mvm *mvm)
1511 static inline bool iwl_mvm_is_adaptive_dwell_v2_supported(struct iwl_mvm *mvm)
1517 static inline bool iwl_mvm_is_adwell_hb_ap_num_supported(struct iwl_mvm *mvm)
1523 static inline bool iwl_mvm_is_oce_supported(struct iwl_mvm *mvm)
1529 static inline bool iwl_mvm_is_frag_ebs_supported(struct iwl_mvm *mvm)
1534 static inline bool iwl_mvm_is_short_beacon_notif_supported(struct iwl_mvm *mvm)
1540 static inline bool iwl_mvm_is_dqa_data_queue(struct iwl_mvm *mvm, u8 queue)
1546 static inline bool iwl_mvm_is_dqa_mgmt_queue(struct iwl_mvm *mvm, u8 queue)
1552 static inline bool iwl_mvm_is_lar_supported(struct iwl_mvm *mvm)
1568 static inline bool iwl_mvm_is_wifi_mcc_supported(struct iwl_mvm *mvm)
1576 static inline bool iwl_mvm_bt_is_rrc_supported(struct iwl_mvm *mvm)
1583 static inline bool iwl_mvm_is_csum_supported(struct iwl_mvm *mvm)
1590 static inline bool iwl_mvm_is_mplut_supported(struct iwl_mvm *mvm)
1598 bool iwl_mvm_is_p2p_scm_uapsd_supported(struct iwl_mvm *mvm)
1606 static inline bool iwl_mvm_has_new_rx_api(struct iwl_mvm *mvm)
1612 static inline bool iwl_mvm_has_mld_api(const struct iwl_fw *fw)
1618 static inline bool iwl_mvm_has_new_station_api(const struct iwl_fw *fw)
1624 static inline bool iwl_mvm_has_new_tx_api(struct iwl_mvm *mvm)
1630 static inline bool iwl_mvm_has_unified_ucode(struct iwl_mvm *mvm)
1636 static inline bool iwl_mvm_is_cdb_supported(struct iwl_mvm *mvm)
1651 static inline bool iwl_mvm_cdb_scan_api(struct iwl_mvm *mvm)
1661 static inline bool iwl_mvm_is_scan_ext_chan_supported(struct iwl_mvm *mvm)
1668 static inline bool iwl_mvm_is_reduced_config_scan_supported(struct iwl_mvm *mvm)
1674 static inline bool iwl_mvm_is_band_in_rx_supported(struct iwl_mvm *mvm)
1680 static inline bool iwl_mvm_has_new_rx_stats_api(struct iwl_mvm *mvm)
1686 static inline bool iwl_mvm_has_quota_low_latency(struct iwl_mvm *mvm)
1692 static inline bool iwl_mvm_has_no_host_disable_tx(struct iwl_mvm *mvm)
1698 static inline bool iwl_mvm_has_tlc_offload(const struct iwl_mvm *mvm)
1704 static inline struct agg_tx_status *
1705 iwl_mvm_get_agg_status(struct iwl_mvm *mvm, void *tx_resp)
1708 return &((struct iwl_mvm_tx_resp *)tx_resp)->status;
1710 return ((struct iwl_mvm_tx_resp_v3 *)tx_resp)->status;
1713 static inline bool iwl_mvm_is_tt_in_fw(struct iwl_mvm *mvm)
1725 static inline bool iwl_mvm_is_ctdp_supported(struct iwl_mvm *mvm)
1731 static inline bool iwl_mvm_is_esr_supported(struct iwl_trans *trans)
1741 static inline int iwl_mvm_max_active_links(struct iwl_mvm *mvm,
1742 struct ieee80211_vif *vif)
1744 struct iwl_trans *trans = mvm->fwrt.trans;
1762 static inline u8 iwl_mvm_mac_ac_to_tx_fifo(struct iwl_mvm *mvm,
1772 struct iwl_rate_info {
1780 void __iwl_mvm_mac_stop(struct iwl_mvm *mvm, bool suspend);
1781 int __iwl_mvm_mac_start(struct iwl_mvm *mvm);
1787 int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm);
1796 struct ieee80211_tx_rate *r);
1799 struct ieee80211_tx_rate *r);
1800 u8 iwl_mvm_mac80211_idx_to_hwrate(const struct iwl_fw *fw, int rate_idx);
1802 bool iwl_mvm_is_nic_ack_enabled(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
1804 static inline void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
1810 u8 iwl_mvm_next_antenna(struct iwl_mvm *mvm, u8 valid, u8 last_idx);
1811 void iwl_mvm_get_sync_time(struct iwl_mvm *mvm, int clock_type, u32 *gp2,
1813 u32 iwl_mvm_get_systime(struct iwl_mvm *mvm);
1817 int __must_check iwl_mvm_send_cmd(struct iwl_mvm *mvm,
1818 struct iwl_host_cmd *cmd);
1819 int __must_check iwl_mvm_send_cmd_pdu(struct iwl_mvm *mvm, u32 id,
1821 int __must_check iwl_mvm_send_cmd_status(struct iwl_mvm *mvm,
1822 struct iwl_host_cmd *cmd,
1824 int __must_check iwl_mvm_send_cmd_pdu_status(struct iwl_mvm *mvm, u32 id,
1827 int iwl_mvm_tx_skb_sta(struct iwl_mvm *mvm, struct sk_buff *skb,
1828 struct ieee80211_sta *sta);
1829 int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb);
1830 void iwl_mvm_set_tx_cmd(struct iwl_mvm *mvm, struct sk_buff *skb,
1831 struct iwl_tx_cmd *tx_cmd,
1832 struct ieee80211_tx_info *info, u8 sta_id);
1833 void iwl_mvm_set_tx_cmd_rate(struct iwl_mvm *mvm, struct iwl_tx_cmd *tx_cmd,
1834 struct ieee80211_tx_info *info,
1835 struct ieee80211_sta *sta, __le16 fc);
1836 void iwl_mvm_mac_itxq_xmit(struct ieee80211_hw *hw, struct ieee80211_txq *txq);
1837 unsigned int iwl_mvm_max_amsdu_size(struct iwl_mvm *mvm,
1838 struct ieee80211_sta *sta,
1846 int iwl_mvm_flush_tx_path(struct iwl_mvm *mvm, u32 tfd_msk);
1847 int iwl_mvm_flush_sta(struct iwl_mvm *mvm, u32 sta_id, u32 tfd_queue_mask);
1848 int iwl_mvm_flush_sta_tids(struct iwl_mvm *mvm, u32 sta_id, u16 tids);
1851 __le32 iwl_mvm_get_sta_htc_flags(struct ieee80211_sta *sta,
1852 struct ieee80211_link_sta *link_sta);
1853 u8 iwl_mvm_get_sta_uapsd_acs(struct ieee80211_sta *sta);
1854 u32 iwl_mvm_get_sta_ampdu_dens(struct ieee80211_link_sta *link_sta,
1855 struct ieee80211_bss_conf *link_conf,
1857 int iwl_mvm_set_sta_pkt_ext(struct iwl_mvm *mvm,
1858 struct ieee80211_link_sta *link_sta,
1859 struct iwl_he_pkt_ext_v2 *pkt_ext);
1861 void iwl_mvm_async_handlers_purge(struct iwl_mvm *mvm);
1863 static inline void iwl_mvm_set_tx_cmd_ccmp(struct ieee80211_tx_info *info,
1864 struct iwl_tx_cmd *tx_cmd)
1866 struct ieee80211_key_conf *keyconf = info->control.hw_key;
1872 static inline void iwl_mvm_wait_for_async_handlers(struct iwl_mvm *mvm)
1878 void iwl_mvm_handle_rx_system_oper_stats(struct iwl_mvm *mvm,
1879 struct iwl_rx_cmd_buffer *rxb);
1880 void iwl_mvm_handle_rx_system_oper_part1_stats(struct iwl_mvm *mvm,
1881 struct iwl_rx_cmd_buffer *rxb);
1883 iwl_mvm_handle_rx_system_end_stats_notif(struct iwl_mvm *mvm,
1884 struct iwl_rx_cmd_buffer *rxb)
1888 void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm,
1889 struct iwl_rx_packet *pkt);
1890 void iwl_mvm_rx_statistics(struct iwl_mvm *mvm,
1891 struct iwl_rx_cmd_buffer *rxb);
1892 int iwl_mvm_request_statistics(struct iwl_mvm *mvm, bool clear);
1893 int iwl_mvm_request_periodic_system_statistics(struct iwl_mvm *mvm,
1895 void iwl_mvm_accu_radio_stats(struct iwl_mvm *mvm);
1898 int iwl_nvm_init(struct iwl_mvm *mvm);
1899 int iwl_mvm_load_nvm_to_nic(struct iwl_mvm *mvm);
1901 static inline u8 iwl_mvm_get_valid_tx_ant(struct iwl_mvm *mvm)
1914 static inline u8 iwl_mvm_get_valid_rx_ant(struct iwl_mvm *mvm)
1928 static inline void iwl_mvm_toggle_tx_ant(struct iwl_mvm *mvm, u8 *ant)
1933 static inline u32 iwl_mvm_get_phy_config(struct iwl_mvm *mvm)
1946 int iwl_mvm_up(struct iwl_mvm *mvm);
1947 int iwl_mvm_load_d3_fw(struct iwl_mvm *mvm);
1949 int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm);
1951 void iwl_mvm_mac_init_mvmvif(struct iwl_mvm *mvm, struct iwl_mvm_vif *mvmvif);
1957 void iwl_mvm_rx_mq(struct iwl_op_mode *op_mode,
1958 struct napi_struct *napi,
1959 struct iwl_rx_cmd_buffer *rxb);
1960 void iwl_mvm_rx_rx_phy_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
1961 void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
1962 struct iwl_rx_cmd_buffer *rxb);
1963 void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
1964 struct iwl_rx_cmd_buffer *rxb, int queue);
1965 void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
1966 struct iwl_rx_cmd_buffer *rxb, int queue);
1967 void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
1968 struct iwl_rx_cmd_buffer *rxb, int queue);
1969 void iwl_mvm_rx_bar_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
1970 struct iwl_rx_cmd_buffer *rxb, int queue);
1971 void iwl_mvm_rx_queue_notif(struct iwl_mvm *mvm, struct napi_struct *napi,
1972 struct iwl_rx_cmd_buffer *rxb, int queue);
1973 void iwl_mvm_rx_tx_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
1974 void iwl_mvm_mfu_assert_dump_notif(struct iwl_mvm *mvm,
1975 struct iwl_rx_cmd_buffer *rxb);
1976 void iwl_mvm_send_recovery_cmd(struct iwl_mvm *mvm, u32 flags);
1977 void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
1978 void iwl_mvm_rx_ant_coupling_notif(struct iwl_mvm *mvm,
1979 struct iwl_rx_cmd_buffer *rxb);
1980 void iwl_mvm_rx_fw_error(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
1981 void iwl_mvm_rx_mfuart_notif(struct iwl_mvm *mvm,
1982 struct iwl_rx_cmd_buffer *rxb);
1983 void iwl_mvm_rx_shared_mem_cfg_notif(struct iwl_mvm *mvm,
1984 struct iwl_rx_cmd_buffer *rxb);
1987 struct iwl_mvm_phy_ctxt *iwl_mvm_get_free_phy_ctxt(struct iwl_mvm *mvm);
1988 int iwl_mvm_phy_ctxt_add(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt,
1989 const struct cfg80211_chan_def *chandef,
1990 const struct cfg80211_chan_def *ap,
1992 int iwl_mvm_phy_ctxt_changed(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt,
1993 const struct cfg80211_chan_def *chandef,
1994 const struct cfg80211_chan_def *ap,
1996 void iwl_mvm_phy_ctxt_ref(struct iwl_mvm *mvm,
1997 struct iwl_mvm_phy_ctxt *ctxt);
1998 void iwl_mvm_phy_ctxt_unref(struct iwl_mvm *mvm,
1999 struct iwl_mvm_phy_ctxt *ctxt);
2000 int iwl_mvm_phy_ctx_count(struct iwl_mvm *mvm);
2001 u8 iwl_mvm_get_channel_width(const struct cfg80211_chan_def *chandef);
2002 u8 iwl_mvm_get_ctrl_pos(const struct cfg80211_chan_def *chandef);
2003 int iwl_mvm_phy_send_rlc(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt,
2008 void iwl_mvm_prepare_mac_removal(struct iwl_mvm *mvm,
2009 struct ieee80211_vif *vif);
2010 void iwl_mvm_set_fw_basic_rates(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2011 struct ieee80211_bss_conf *link_conf,
2013 void iwl_mvm_set_fw_protection_flags(struct iwl_mvm *mvm,
2014 struct ieee80211_vif *vif,
2015 struct ieee80211_bss_conf *link_conf,
2018 void iwl_mvm_set_fw_qos_params(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2019 struct ieee80211_bss_conf *link_conf,
2020 struct iwl_ac_qos *ac, __le32 *qos_flags);
2021 bool iwl_mvm_set_fw_mu_edca_params(struct iwl_mvm *mvm,
2022 const struct iwl_mvm_vif_link_info *link_info,
2023 struct iwl_he_backoff_conf *trig_based_txf);
2024 void iwl_mvm_set_fw_dtim_tbtt(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2025 struct ieee80211_bss_conf *link_conf,
2028 __le32 iwl_mac_ctxt_p2p_dev_has_extended_disc(struct iwl_mvm *mvm,
2029 struct ieee80211_vif *vif);
2030 void iwl_mvm_mac_ctxt_cmd_ap_set_filter_flags(struct iwl_mvm *mvm,
2031 struct iwl_mvm_vif *mvmvif,
2035 int iwl_mvm_get_mac_type(struct ieee80211_vif *vif);
2036 __le32 iwl_mvm_mac_ctxt_cmd_p2p_sta_get_oppps_ctwin(struct iwl_mvm *mvm,
2037 struct ieee80211_vif *vif);
2038 u32 iwl_mvm_mac_ctxt_cmd_sta_get_twt_policy(struct iwl_mvm *mvm,
2039 struct ieee80211_vif *vif);
2040 int iwl_mvm_mld_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2041 int iwl_mvm_mld_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2043 int iwl_mvm_mld_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2044 int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2045 int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2046 int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2048 int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2049 int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm,
2050 struct ieee80211_vif *vif,
2051 struct ieee80211_bss_conf *link_conf);
2052 int iwl_mvm_mac_ctxt_send_beacon_cmd(struct iwl_mvm *mvm,
2053 struct sk_buff *beacon,
2055 u8 iwl_mvm_mac_ctxt_get_beacon_rate(struct iwl_mvm *mvm,
2056 struct ieee80211_tx_info *info,
2057 struct ieee80211_vif *vif);
2058 u8 iwl_mvm_mac_ctxt_get_lowest_rate(struct iwl_mvm *mvm,
2059 struct ieee80211_tx_info *info,
2060 struct ieee80211_vif *vif);
2061 u16 iwl_mvm_mac_ctxt_get_beacon_flags(const struct iwl_fw *fw,
2063 void iwl_mvm_mac_ctxt_set_tim(struct iwl_mvm *mvm,
2066 void iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm,
2067 struct iwl_rx_cmd_buffer *rxb);
2068 void iwl_mvm_rx_missed_beacons_notif(struct iwl_mvm *mvm,
2069 struct iwl_rx_cmd_buffer *rxb);
2070 void iwl_mvm_rx_stored_beacon_notif(struct iwl_mvm *mvm,
2071 struct iwl_rx_cmd_buffer *rxb);
2072 void iwl_mvm_mu_mimo_grp_notif(struct iwl_mvm *mvm,
2073 struct iwl_rx_cmd_buffer *rxb);
2074 void iwl_mvm_sta_pm_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
2075 void iwl_mvm_window_status_notif(struct iwl_mvm *mvm,
2076 struct iwl_rx_cmd_buffer *rxb);
2077 void iwl_mvm_mac_ctxt_recalc_tsf_id(struct iwl_mvm *mvm,
2078 struct ieee80211_vif *vif);
2079 void iwl_mvm_probe_resp_data_notif(struct iwl_mvm *mvm,
2080 struct iwl_rx_cmd_buffer *rxb);
2081 void iwl_mvm_rx_missed_vap_notif(struct iwl_mvm *mvm,
2082 struct iwl_rx_cmd_buffer *rxb);
2083 void iwl_mvm_channel_switch_start_notif(struct iwl_mvm *mvm,
2084 struct iwl_rx_cmd_buffer *rxb);
2085 void iwl_mvm_channel_switch_error_notif(struct iwl_mvm *mvm,
2086 struct iwl_rx_cmd_buffer *rxb);
2088 int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2089 int iwl_mvm_binding_remove_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2090 u32 iwl_mvm_get_lmac_id(struct iwl_mvm *mvm, enum nl80211_band band);
2093 int iwl_mvm_set_link_mapping(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2094 struct ieee80211_bss_conf *link_conf);
2095 int iwl_mvm_add_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2096 struct ieee80211_bss_conf *link_conf);
2097 int iwl_mvm_link_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2098 struct ieee80211_bss_conf *link_conf,
2100 int iwl_mvm_unset_link_mapping(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2101 struct ieee80211_bss_conf *link_conf);
2102 int iwl_mvm_remove_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2103 struct ieee80211_bss_conf *link_conf);
2104 int iwl_mvm_disable_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2105 struct ieee80211_bss_conf *link_conf);
2107 void iwl_mvm_select_links(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2108 u8 iwl_mvm_get_primary_link(struct ieee80211_vif *vif);
2109 u8 iwl_mvm_get_other_link(struct ieee80211_vif *vif, u8 link_id);
2111 struct iwl_mvm_link_sel_data {
2113 const struct cfg80211_chan_def *chandef;
2119 unsigned int iwl_mvm_get_link_grade(struct ieee80211_bss_conf *link_conf);
2120 bool iwl_mvm_mld_valid_link_pair(struct ieee80211_vif *vif,
2121 const struct iwl_mvm_link_sel_data *a,
2122 const struct iwl_mvm_link_sel_data *b);
2124 s8 iwl_mvm_average_dbm_values(const struct iwl_umac_scan_channel_survey_notif *notif);
2128 bool iwl_mvm_start_ap_ibss_common(struct ieee80211_hw *hw,
2129 struct ieee80211_vif *vif, int *ret);
2130 void iwl_mvm_stop_ap_ibss_common(struct iwl_mvm *mvm,
2131 struct ieee80211_vif *vif);
2134 void iwl_mvm_bss_info_changed_station_common(struct iwl_mvm *mvm,
2135 struct ieee80211_vif *vif,
2136 struct ieee80211_bss_conf *link_conf,
2138 void iwl_mvm_bss_info_changed_station_assoc(struct iwl_mvm *mvm,
2139 struct ieee80211_vif *vif,
2144 * struct iwl_mvm_roc_ops - callbacks for the remain_on_channel()
2156 struct iwl_mvm_roc_ops {
2157 int (*add_aux_sta_for_hs20)(struct iwl_mvm *mvm, u32 lmac_id);
2158 int (*link)(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2161 int iwl_mvm_roc_common(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2162 struct ieee80211_channel *channel, int duration,
2164 const struct iwl_mvm_roc_ops *ops);
2165 int iwl_mvm_cancel_roc(struct ieee80211_hw *hw,
2166 struct ieee80211_vif *vif);
2168 void iwl_mvm_protect_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2172 static inline size_t iwl_mvm_quota_cmd_size(struct iwl_mvm *mvm)
2175 sizeof(struct iwl_time_quota_cmd) :
2176 sizeof(struct iwl_time_quota_cmd_v1);
2179 static inline struct iwl_time_quota_data
2180 *iwl_mvm_quota_cmd_get_quota(struct iwl_mvm *mvm,
2181 struct iwl_time_quota_cmd *cmd,
2184 struct iwl_time_quota_data_v1 *quotas;
2189 quotas = (struct iwl_time_quota_data_v1 *)cmd->quotas;
2190 return (struct iwl_time_quota_data *)"as[i];
2193 int iwl_mvm_update_quotas(struct iwl_mvm *mvm, bool force_upload,
2194 struct ieee80211_vif *disabled_vif);
2197 int iwl_mvm_reg_scan_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2198 struct cfg80211_scan_request *req,
2199 struct ieee80211_scan_ies *ies);
2200 size_t iwl_mvm_scan_size(struct iwl_mvm *mvm);
2201 int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify);
2203 int iwl_mvm_max_scan_ie_len(struct iwl_mvm *mvm);
2204 void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm);
2205 void iwl_mvm_scan_timeout_wk(struct work_struct *work);
2206 int iwl_mvm_int_mlo_scan(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2207 void iwl_mvm_rx_channel_survey_notif(struct iwl_mvm *mvm,
2208 struct iwl_rx_cmd_buffer *rxb);
2211 void iwl_mvm_rx_lmac_scan_complete_notif(struct iwl_mvm *mvm,
2212 struct iwl_rx_cmd_buffer *rxb);
2213 void iwl_mvm_rx_lmac_scan_iter_complete_notif(struct iwl_mvm *mvm,
2214 struct iwl_rx_cmd_buffer *rxb);
2215 int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
2216 struct ieee80211_vif *vif,
2217 struct cfg80211_sched_scan_request *req,
2218 struct ieee80211_scan_ies *ies,
2220 void iwl_mvm_rx_scan_match_found(struct iwl_mvm *mvm,
2221 struct iwl_rx_cmd_buffer *rxb);
2224 int iwl_mvm_config_scan(struct iwl_mvm *mvm);
2225 void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm,
2226 struct iwl_rx_cmd_buffer *rxb);
2227 void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm,
2228 struct iwl_rx_cmd_buffer *rxb);
2232 void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm);
2233 void iwl_mvm_vif_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
2234 void iwl_mvm_vif_dbgfs_add_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2235 void iwl_mvm_vif_dbgfs_rm_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2237 static inline void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm)
2241 iwl_mvm_vif_dbgfs_add_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
2245 iwl_mvm_vif_dbgfs_rm_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
2251 int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq);
2252 void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg);
2254 void rs_update_last_rssi(struct iwl_mvm *mvm,
2255 struct iwl_mvm_sta *mvmsta,
2256 struct ieee80211_rx_status *rx_status);
2259 int iwl_mvm_power_update_device(struct iwl_mvm *mvm);
2260 int iwl_mvm_power_update_mac(struct iwl_mvm *mvm);
2261 int iwl_mvm_power_update_ps(struct iwl_mvm *mvm);
2262 int iwl_mvm_power_mac_dbgfs_read(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2265 void iwl_mvm_power_vif_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2266 void iwl_mvm_power_uapsd_misbehaving_ap_notif(struct iwl_mvm *mvm,
2267 struct iwl_rx_cmd_buffer *rxb);
2270 int iwl_mvm_leds_init(struct iwl_mvm *mvm);
2271 void iwl_mvm_leds_exit(struct iwl_mvm *mvm);
2272 void iwl_mvm_leds_sync(struct iwl_mvm *mvm);
2274 static inline int iwl_mvm_leds_init(struct iwl_mvm *mvm)
2278 static inline void iwl_mvm_leds_exit(struct iwl_mvm *mvm)
2281 static inline void iwl_mvm_leds_sync(struct iwl_mvm *mvm)
2287 int iwl_mvm_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan);
2288 int iwl_mvm_resume(struct ieee80211_hw *hw);
2289 void iwl_mvm_set_wakeup(struct ieee80211_hw *hw, bool enabled);
2290 void iwl_mvm_set_rekey_data(struct ieee80211_hw *hw,
2291 struct ieee80211_vif *vif,
2292 struct cfg80211_gtk_rekey_data *data);
2293 void iwl_mvm_ipv6_addr_change(struct ieee80211_hw *hw,
2294 struct ieee80211_vif *vif,
2295 struct inet6_dev *idev);
2296 void iwl_mvm_set_default_unicast_key(struct ieee80211_hw *hw,
2297 struct ieee80211_vif *vif, int idx);
2298 extern const struct file_operations iwl_dbgfs_d3_test_ops;
2300 void iwl_mvm_set_last_nonqos_seq(struct iwl_mvm *mvm,
2301 struct ieee80211_vif *vif);
2302 void iwl_mvm_fast_suspend(struct iwl_mvm *mvm);
2303 int iwl_mvm_fast_resume(struct iwl_mvm *mvm);
2306 iwl_mvm_set_last_nonqos_seq(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
2310 static inline void iwl_mvm_fast_suspend(struct iwl_mvm *mvm)
2314 static inline int iwl_mvm_fast_resume(struct iwl_mvm *mvm)
2319 void iwl_mvm_set_wowlan_qos_seq(struct iwl_mvm_sta *mvm_ap_sta,
2320 struct iwl_wowlan_config_cmd *cmd);
2321 int iwl_mvm_send_proto_offload(struct iwl_mvm *mvm,
2322 struct ieee80211_vif *vif,
2329 int iwl_mvm_send_bt_init_conf(struct iwl_mvm *mvm);
2330 void iwl_mvm_rx_bt_coex_notif(struct iwl_mvm *mvm,
2331 struct iwl_rx_cmd_buffer *rxb);
2332 void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2334 void iwl_mvm_bt_coex_vif_change(struct iwl_mvm *mvm);
2335 u16 iwl_mvm_coex_agg_time_limit(struct iwl_mvm *mvm,
2336 struct ieee80211_sta *sta);
2337 bool iwl_mvm_bt_coex_is_mimo_allowed(struct iwl_mvm *mvm,
2338 struct ieee80211_sta *sta);
2339 bool iwl_mvm_bt_coex_is_ant_avail(struct iwl_mvm *mvm, u8 ant);
2340 bool iwl_mvm_bt_coex_is_shared_ant_avail(struct iwl_mvm *mvm);
2341 bool iwl_mvm_bt_coex_is_tpc_allowed(struct iwl_mvm *mvm,
2343 u8 iwl_mvm_bt_coex_get_single_ant_msk(struct iwl_mvm *mvm, u8 enabled_ants);
2344 u8 iwl_mvm_bt_coex_tx_prio(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr,
2345 struct ieee80211_tx_info *info, u8 ac);
2350 iwl_mvm_beacon_filter_debugfs_parameters(struct ieee80211_vif *vif,
2351 struct iwl_beacon_filter_cmd *cmd);
2354 iwl_mvm_beacon_filter_debugfs_parameters(struct ieee80211_vif *vif,
2355 struct iwl_beacon_filter_cmd *cmd)
2358 int iwl_mvm_enable_beacon_filter(struct iwl_mvm *mvm,
2359 struct ieee80211_vif *vif);
2360 int iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm,
2361 struct ieee80211_vif *vif);
2363 void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2368 iwl_mvm_update_smps_on_active_links(struct iwl_mvm *mvm,
2369 struct ieee80211_vif *vif,
2372 bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm,
2373 struct iwl_mvm_phy_ctxt *ctxt);
2374 void iwl_mvm_update_link_smps(struct ieee80211_vif *vif,
2375 struct ieee80211_bss_conf *link_conf);
2378 int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2382 bool iwl_mvm_low_latency(struct iwl_mvm *mvm);
2383 bool iwl_mvm_low_latency_band(struct iwl_mvm *mvm, enum nl80211_band band);
2384 void iwl_mvm_send_low_latency_cmd(struct iwl_mvm *mvm, bool low_latency,
2388 static inline bool iwl_mvm_vif_low_latency(struct iwl_mvm_vif *mvmvif)
2404 void iwl_mvm_vif_set_low_latency(struct iwl_mvm_vif *mvmvif, bool set,
2442 static inline u32 iwl_mvm_flushable_queues(struct iwl_mvm *mvm)
2448 void iwl_mvm_stop_device(struct iwl_mvm *mvm);
2451 void iwl_mvm_tt_tx_backoff(struct iwl_mvm *mvm, u32 backoff);
2452 void iwl_mvm_temp_notif(struct iwl_mvm *mvm,
2453 struct iwl_rx_cmd_buffer *rxb);
2454 void iwl_mvm_tt_handler(struct iwl_mvm *mvm);
2455 void iwl_mvm_thermal_initialize(struct iwl_mvm *mvm, u32 min_backoff);
2456 void iwl_mvm_thermal_exit(struct iwl_mvm *mvm);
2457 void iwl_mvm_set_hw_ctkill_state(struct iwl_mvm *mvm, bool state);
2458 int iwl_mvm_get_temp(struct iwl_mvm *mvm, s32 *temp);
2459 void iwl_mvm_ct_kill_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
2460 void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm);
2461 int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm);
2462 int iwl_mvm_ctdp_command(struct iwl_mvm *mvm, u32 op, u32 budget);
2467 void iwl_mvm_vendor_cmds_register(struct iwl_mvm *mvm);
2471 static inline void iwl_mvm_vendor_cmds_register(struct iwl_mvm *mvm) {}
2476 struct iwl_mcc_update_resp_v8 *
2477 iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
2479 int iwl_mvm_init_mcc(struct iwl_mvm *mvm);
2480 void iwl_mvm_rx_chub_update_mcc(struct iwl_mvm *mvm,
2481 struct iwl_rx_cmd_buffer *rxb);
2482 struct ieee80211_regdomain *iwl_mvm_get_regdomain(struct wiphy *wiphy,
2486 struct ieee80211_regdomain *iwl_mvm_get_current_regdomain(struct iwl_mvm *mvm,
2488 int iwl_mvm_init_fw_regd(struct iwl_mvm *mvm, bool force_regd_sync);
2489 void iwl_mvm_update_changed_regdom(struct iwl_mvm *mvm);
2492 int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2496 int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2497 struct ieee80211_bss_conf *bss_conf);
2498 void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm,
2499 struct ieee80211_vif *vif,
2500 struct ieee80211_bss_conf *bss_conf);
2501 void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm,
2502 struct iwl_rx_cmd_buffer *rxb);
2504 int iwl_mvm_ftm_resp_remove_pasn_sta(struct iwl_mvm *mvm,
2505 struct ieee80211_vif *vif, u8 *addr);
2506 int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm,
2507 struct ieee80211_vif *vif,
2511 void iwl_mvm_ftm_responder_clear(struct iwl_mvm *mvm,
2512 struct ieee80211_vif *vif);
2515 void iwl_mvm_ftm_restart(struct iwl_mvm *mvm);
2516 void iwl_mvm_ftm_range_resp(struct iwl_mvm *mvm,
2517 struct iwl_rx_cmd_buffer *rxb);
2518 void iwl_mvm_ftm_lc_notif(struct iwl_mvm *mvm,
2519 struct iwl_rx_cmd_buffer *rxb);
2520 int iwl_mvm_ftm_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2521 struct cfg80211_pmsr_request *request);
2522 void iwl_mvm_ftm_abort(struct iwl_mvm *mvm, struct cfg80211_pmsr_request *req);
2523 void iwl_mvm_ftm_initiator_smooth_config(struct iwl_mvm *mvm);
2524 void iwl_mvm_ftm_initiator_smooth_stop(struct iwl_mvm *mvm);
2525 int iwl_mvm_ftm_add_pasn_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2528 void iwl_mvm_ftm_remove_pasn_sta(struct iwl_mvm *mvm, u8 *addr);
2538 int iwl_mvm_tdls_sta_count(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2539 void iwl_mvm_teardown_tdls_peers(struct iwl_mvm *mvm);
2540 void iwl_mvm_recalc_tdls_state(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2542 void iwl_mvm_mac_mgd_protect_tdls_discover(struct ieee80211_hw *hw,
2543 struct ieee80211_vif *vif,
2545 int iwl_mvm_tdls_channel_switch(struct ieee80211_hw *hw,
2546 struct ieee80211_vif *vif,
2547 struct ieee80211_sta *sta, u8 oper_class,
2548 struct cfg80211_chan_def *chandef,
2549 struct sk_buff *tmpl_skb, u32 ch_sw_tm_ie);
2550 void iwl_mvm_tdls_recv_channel_switch(struct ieee80211_hw *hw,
2551 struct ieee80211_vif *vif,
2552 struct ieee80211_tdls_ch_sw_params *params);
2553 void iwl_mvm_tdls_cancel_channel_switch(struct ieee80211_hw *hw,
2554 struct ieee80211_vif *vif,
2555 struct ieee80211_sta *sta);
2556 void iwl_mvm_rx_tdls_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
2557 void iwl_mvm_tdls_ch_switch_work(struct work_struct *work);
2559 void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm,
2563 struct ieee80211_vif *iwl_mvm_get_bss_vif(struct iwl_mvm *mvm);
2564 struct ieee80211_vif *iwl_mvm_get_vif_by_macid(struct iwl_mvm *mvm, u32 macid);
2565 bool iwl_mvm_is_vif_assoc(struct iwl_mvm *mvm);
2570 void iwl_mvm_tcm_work(struct work_struct *work);
2571 void iwl_mvm_recalc_tcm(struct iwl_mvm *mvm);
2572 void iwl_mvm_pause_tcm(struct iwl_mvm *mvm, bool with_cancel);
2573 void iwl_mvm_resume_tcm(struct iwl_mvm *mvm);
2574 void iwl_mvm_tcm_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2575 void iwl_mvm_tcm_rm_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2578 void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error);
2579 unsigned int iwl_mvm_get_wd_timeout(struct iwl_mvm *mvm,
2580 struct ieee80211_vif *vif,
2582 void iwl_mvm_connection_loss(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2584 void iwl_mvm_event_frame_timeout_callback(struct iwl_mvm *mvm,
2585 struct ieee80211_vif *vif,
2586 const struct ieee80211_sta *sta,
2588 void iwl_mvm_mei_scan_filter_init(struct iwl_mei_scan_filter *mei_scan_filter);
2590 void iwl_mvm_ptp_init(struct iwl_mvm *mvm);
2591 void iwl_mvm_ptp_remove(struct iwl_mvm *mvm);
2592 u64 iwl_mvm_ptp_get_adj_time(struct iwl_mvm *mvm, u64 base_time);
2593 int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b);
2594 int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm);
2595 int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm);
2596 void iwl_mvm_get_bios_tables(struct iwl_mvm *mvm);
2598 void iwl_mvm_link_sta_add_debugfs(struct ieee80211_hw *hw,
2599 struct ieee80211_vif *vif,
2600 struct ieee80211_link_sta *link_sta,
2601 struct dentry *dir);
2602 void iwl_mvm_link_add_debugfs(struct ieee80211_hw *hw,
2603 struct ieee80211_vif *vif,
2604 struct ieee80211_bss_conf *link_conf,
2605 struct dentry *dir);
2609 int iwl_mvm_sec_key_add(struct iwl_mvm *mvm,
2610 struct ieee80211_vif *vif,
2611 struct ieee80211_sta *sta,
2612 struct ieee80211_key_conf *keyconf);
2613 int iwl_mvm_sec_key_del(struct iwl_mvm *mvm,
2614 struct ieee80211_vif *vif,
2615 struct ieee80211_sta *sta,
2616 struct ieee80211_key_conf *keyconf);
2617 int iwl_mvm_sec_key_del_pasn(struct iwl_mvm *mvm,
2618 struct ieee80211_vif *vif,
2620 struct ieee80211_key_conf *keyconf);
2621 void iwl_mvm_sec_key_remove_ap(struct iwl_mvm *mvm,
2622 struct ieee80211_vif *vif,
2623 struct iwl_mvm_vif_link_info *link,
2625 int iwl_mvm_mld_update_sta_keys(struct iwl_mvm *mvm,
2626 struct ieee80211_vif *vif,
2627 struct ieee80211_sta *sta,
2630 int iwl_mvm_mld_send_key(struct iwl_mvm *mvm, u32 sta_mask, u32 key_flags,
2631 struct ieee80211_key_conf *keyconf);
2632 u32 iwl_mvm_get_sec_flags(struct iwl_mvm *mvm,
2633 struct ieee80211_vif *vif,
2634 struct ieee80211_sta *sta,
2635 struct ieee80211_key_conf *keyconf);
2637 bool iwl_rfi_supported(struct iwl_mvm *mvm);
2638 int iwl_rfi_send_config_cmd(struct iwl_mvm *mvm,
2639 struct iwl_rfi_lut_entry *rfi_table);
2640 struct iwl_rfi_freq_table_resp_cmd *iwl_rfi_get_freq_table(struct iwl_mvm *mvm);
2641 void iwl_rfi_deactivate_notif_handler(struct iwl_mvm *mvm,
2642 struct iwl_rx_cmd_buffer *rxb);
2675 void iwl_mvm_channel_switch_disconnect_wk(struct work_struct *wk);
2676 int iwl_mvm_post_channel_switch(struct ieee80211_hw *hw,
2677 struct ieee80211_vif *vif,
2678 struct ieee80211_bss_conf *link);
2682 * struct iwl_mvm_switch_vif_chanctx_ops - callbacks for switch_vif_chanctx()
2694 struct iwl_mvm_switch_vif_chanctx_ops {
2695 int (*__assign_vif_chanctx)(struct iwl_mvm *mvm,
2696 struct ieee80211_vif *vif,
2697 struct ieee80211_bss_conf *link_conf,
2698 struct ieee80211_chanctx_conf *ctx,
2700 void (*__unassign_vif_chanctx)(struct iwl_mvm *mvm,
2701 struct ieee80211_vif *vif,
2702 struct ieee80211_bss_conf *link_conf,
2703 struct ieee80211_chanctx_conf *ctx,
2708 iwl_mvm_switch_vif_chanctx_common(struct ieee80211_hw *hw,
2709 struct ieee80211_vif_chanctx_switch *vifs,
2712 const struct iwl_mvm_switch_vif_chanctx_ops *ops);
2715 static inline bool iwl_mvm_has_ultra_hb_channel(struct iwl_mvm *mvm)
2721 static inline void *iwl_mvm_chan_info_cmd_tail(struct iwl_mvm *mvm,
2722 struct iwl_fw_channel_info *ci)
2725 sizeof(struct iwl_fw_channel_info) :
2726 sizeof(struct iwl_fw_channel_info_v1));
2729 static inline size_t iwl_mvm_chan_info_padding(struct iwl_mvm *mvm)
2732 sizeof(struct iwl_fw_channel_info) -
2733 sizeof(struct iwl_fw_channel_info_v1);
2736 static inline void iwl_mvm_set_chan_info(struct iwl_mvm *mvm,
2737 struct iwl_fw_channel_info *ci,
2747 struct iwl_fw_channel_info_v1 *ci_v1 =
2748 (struct iwl_fw_channel_info_v1 *)ci;
2758 iwl_mvm_set_chan_info_chandef(struct iwl_mvm *mvm,
2759 struct iwl_fw_channel_info *ci,
2760 const struct cfg80211_chan_def *chandef)
2770 static inline int iwl_umac_scan_get_max_profiles(const struct iwl_fw *fw)
2793 struct iwl_mvm_csme_conn_info *iwl_mvm_get_csme_conn_info(struct iwl_mvm *mvm);
2794 static inline int iwl_mvm_mei_get_ownership(struct iwl_mvm *mvm)
2801 static inline void iwl_mvm_mei_tx_copy_to_csme(struct iwl_mvm *mvm,
2802 struct sk_buff *skb,
2809 static inline void iwl_mvm_mei_host_disassociated(struct iwl_mvm *mvm)
2815 static inline void iwl_mvm_mei_device_state(struct iwl_mvm *mvm, bool up)
2821 static inline void iwl_mvm_mei_set_sw_rfkill_state(struct iwl_mvm *mvm)
2831 static inline bool iwl_mvm_has_p2p_over_aux(struct iwl_mvm *mvm)
2838 static inline bool iwl_mvm_mei_filter_scan(struct iwl_mvm *mvm,
2839 struct sk_buff *skb)
2841 struct ieee80211_mgmt *mgmt = (void *)skb->data;
2854 void iwl_mvm_send_roaming_forbidden_event(struct iwl_mvm *mvm,
2855 struct ieee80211_vif *vif,
2859 void iwl_mvm_mac_tx(struct ieee80211_hw *hw,
2860 struct ieee80211_tx_control *control, struct sk_buff *skb);
2861 void iwl_mvm_mac_wake_tx_queue(struct ieee80211_hw *hw,
2862 struct ieee80211_txq *txq);
2864 int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw,
2865 struct ieee80211_vif *vif,
2866 struct ieee80211_ampdu_params *params);
2867 int iwl_mvm_op_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
2868 int iwl_mvm_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
2869 int iwl_mvm_mac_start(struct ieee80211_hw *hw);
2870 void iwl_mvm_mac_reconfig_complete(struct ieee80211_hw *hw,
2872 void iwl_mvm_mac_stop(struct ieee80211_hw *hw, bool suspend);
2873 static inline int iwl_mvm_mac_config(struct ieee80211_hw *hw, u32 changed)
2878 u64 iwl_mvm_prepare_multicast(struct ieee80211_hw *hw,
2879 struct netdev_hw_addr_list *mc_list);
2881 void iwl_mvm_configure_filter(struct ieee80211_hw *hw,
2884 int iwl_mvm_mac_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2885 struct ieee80211_scan_request *hw_req);
2886 void iwl_mvm_mac_cancel_hw_scan(struct ieee80211_hw *hw,
2887 struct ieee80211_vif *vif);
2888 void iwl_mvm_sta_pre_rcu_remove(struct ieee80211_hw *hw,
2889 struct ieee80211_vif *vif,
2890 struct ieee80211_sta *sta);
2891 void iwl_mvm_mac_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2893 struct ieee80211_sta *sta);
2895 iwl_mvm_mac_allow_buffered_frames(struct ieee80211_hw *hw,
2896 struct ieee80211_sta *sta, u16 tids,
2901 iwl_mvm_mac_release_buffered_frames(struct ieee80211_hw *hw,
2902 struct ieee80211_sta *sta, u16 tids,
2906 int iwl_mvm_mac_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
2907 void iwl_mvm_sta_rc_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2908 struct ieee80211_sta *sta, u32 changed);
2909 void iwl_mvm_mac_mgd_prepare_tx(struct ieee80211_hw *hw,
2910 struct ieee80211_vif *vif,
2911 struct ieee80211_prep_tx_info *info);
2912 void iwl_mvm_mac_mgd_complete_tx(struct ieee80211_hw *hw,
2913 struct ieee80211_vif *vif,
2914 struct ieee80211_prep_tx_info *info);
2915 void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2917 void iwl_mvm_mac_flush_sta(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2918 struct ieee80211_sta *sta);
2919 int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,
2920 struct ieee80211_vif *vif,
2921 struct cfg80211_sched_scan_request *req,
2922 struct ieee80211_scan_ies *ies);
2923 int iwl_mvm_mac_sched_scan_stop(struct ieee80211_hw *hw,
2924 struct ieee80211_vif *vif);
2925 int iwl_mvm_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
2926 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
2927 struct ieee80211_key_conf *key);
2928 void iwl_mvm_mac_update_tkip_key(struct ieee80211_hw *hw,
2929 struct ieee80211_vif *vif,
2930 struct ieee80211_key_conf *keyconf,
2931 struct ieee80211_sta *sta,
2933 int iwl_mvm_add_chanctx(struct ieee80211_hw *hw,
2934 struct ieee80211_chanctx_conf *ctx);
2935 void iwl_mvm_remove_chanctx(struct ieee80211_hw *hw,
2936 struct ieee80211_chanctx_conf *ctx);
2937 void iwl_mvm_change_chanctx(struct ieee80211_hw *hw,
2938 struct ieee80211_chanctx_conf *ctx, u32 changed);
2939 int iwl_mvm_tx_last_beacon(struct ieee80211_hw *hw);
2940 void iwl_mvm_channel_switch(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2941 struct ieee80211_channel_switch *chsw);
2942 int iwl_mvm_pre_channel_switch(struct iwl_mvm *mvm,
2943 struct ieee80211_vif *vif,
2944 struct ieee80211_channel_switch *chsw);
2945 void iwl_mvm_abort_channel_switch(struct ieee80211_hw *hw,
2946 struct ieee80211_vif *vif,
2947 struct ieee80211_bss_conf *link_conf);
2948 void iwl_mvm_channel_switch_rx_beacon(struct ieee80211_hw *hw,
2949 struct ieee80211_vif *vif,
2950 struct ieee80211_channel_switch *chsw);
2951 void iwl_mvm_mac_event_callback(struct ieee80211_hw *hw,
2952 struct ieee80211_vif *vif,
2953 const struct ieee80211_event *event);
2954 void iwl_mvm_sync_rx_queues(struct ieee80211_hw *hw);
2955 int iwl_mvm_mac_testmode_cmd(struct ieee80211_hw *hw,
2956 struct ieee80211_vif *vif,
2958 int iwl_mvm_mac_get_survey(struct ieee80211_hw *hw, int idx,
2959 struct survey_info *survey);
2960 void iwl_mvm_mac_sta_statistics(struct ieee80211_hw *hw,
2961 struct ieee80211_vif *vif,
2962 struct ieee80211_sta *sta,
2963 struct station_info *sinfo);
2965 iwl_mvm_mac_get_ftm_responder_stats(struct ieee80211_hw *hw,
2966 struct ieee80211_vif *vif,
2967 struct cfg80211_ftm_responder_stats *stats);
2968 int iwl_mvm_start_pmsr(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2969 struct cfg80211_pmsr_request *request);
2970 void iwl_mvm_abort_pmsr(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2971 struct cfg80211_pmsr_request *request);
2973 bool iwl_mvm_have_links_same_channel(struct iwl_mvm_vif *vif1,
2974 struct iwl_mvm_vif *vif2);
2975 bool iwl_mvm_vif_is_active(struct iwl_mvm_vif *mvmvif);
2976 int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
2978 int iwl_mvm_set_hw_timestamp(struct ieee80211_hw *hw,
2979 struct ieee80211_vif *vif,
2980 struct cfg80211_set_hw_timestamp *hwts);
2981 int iwl_mvm_update_mu_groups(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
2982 bool iwl_mvm_enable_fils(struct iwl_mvm *mvm,
2983 struct ieee80211_chanctx_conf *ctx);
2984 bool iwl_mvm_is_ftm_responder_chanctx(struct iwl_mvm *mvm,
2985 struct ieee80211_chanctx_conf *ctx);
2987 static inline struct cfg80211_chan_def *
2988 iwl_mvm_chanctx_def(struct iwl_mvm *mvm, struct ieee80211_chanctx_conf *ctx)
2996 void iwl_mvm_roc_duration_and_delay(struct ieee80211_vif *vif,
3000 int iwl_mvm_roc_add_cmd(struct iwl_mvm *mvm,
3001 struct ieee80211_channel *channel,
3002 struct ieee80211_vif *vif,
3006 bool iwl_mvm_vif_has_esr_cap(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
3007 void iwl_mvm_block_esr(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
3010 int iwl_mvm_block_esr_sync(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
3012 void iwl_mvm_unblock_esr(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
3014 void iwl_mvm_exit_esr(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
3017 s8 iwl_mvm_get_esr_rssi_thresh(struct iwl_mvm *mvm,
3018 const struct cfg80211_chan_def *chandef,
3020 void iwl_mvm_bt_coex_update_link_esr(struct iwl_mvm *mvm,
3021 struct ieee80211_vif *vif,
3024 iwl_mvm_bt_coex_calculate_esr_mode(struct iwl_mvm *mvm,
3025 struct ieee80211_vif *vif,
3028 int iwl_mvm_esr_non_bss_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
3032 iwl_mvm_send_ap_tx_power_constraint_cmd(struct iwl_mvm *mvm,
3033 struct ieee80211_vif *vif,
3034 struct ieee80211_bss_conf *bss_conf,