.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: ISC */ |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (c) 2005-2011 Atheros Communications Inc. |
---|
3 | 4 | * Copyright (c) 2011-2017 Qualcomm Atheros, Inc. |
---|
4 | | - * Copyright (c) 2018, The Linux Foundation. All rights reserved. |
---|
5 | | - * |
---|
6 | | - * Permission to use, copy, modify, and/or distribute this software for any |
---|
7 | | - * purpose with or without fee is hereby granted, provided that the above |
---|
8 | | - * copyright notice and this permission notice appear in all copies. |
---|
9 | | - * |
---|
10 | | - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
---|
11 | | - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
---|
12 | | - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
---|
13 | | - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
---|
14 | | - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
---|
15 | | - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
---|
16 | | - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
---|
| 5 | + * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. |
---|
17 | 6 | */ |
---|
18 | 7 | |
---|
19 | 8 | #ifndef _CORE_H_ |
---|
.. | .. |
---|
90 | 79 | /* The magic used by QCA spec */ |
---|
91 | 80 | #define ATH10K_SMBIOS_BDF_EXT_MAGIC "BDF_" |
---|
92 | 81 | |
---|
93 | | -struct ath10k; |
---|
| 82 | +/* Default Airtime weight multipler (Tuned for multiclient performance) */ |
---|
| 83 | +#define ATH10K_AIRTIME_WEIGHT_MULTIPLIER 4 |
---|
94 | 84 | |
---|
95 | | -enum ath10k_bus { |
---|
96 | | - ATH10K_BUS_PCI, |
---|
97 | | - ATH10K_BUS_AHB, |
---|
98 | | - ATH10K_BUS_SDIO, |
---|
99 | | - ATH10K_BUS_USB, |
---|
100 | | - ATH10K_BUS_SNOC, |
---|
101 | | -}; |
---|
| 85 | +#define ATH10K_MAX_RETRY_COUNT 30 |
---|
| 86 | + |
---|
| 87 | +struct ath10k; |
---|
102 | 88 | |
---|
103 | 89 | static inline const char *ath10k_bus_str(enum ath10k_bus bus) |
---|
104 | 90 | { |
---|
.. | .. |
---|
124 | 110 | ATH10K_SKB_F_DELIVER_CAB = BIT(2), |
---|
125 | 111 | ATH10K_SKB_F_MGMT = BIT(3), |
---|
126 | 112 | ATH10K_SKB_F_QOS = BIT(4), |
---|
| 113 | + ATH10K_SKB_F_RAW_TX = BIT(5), |
---|
| 114 | + ATH10K_SKB_F_NOACK_TID = BIT(6), |
---|
127 | 115 | }; |
---|
128 | 116 | |
---|
129 | 117 | struct ath10k_skb_cb { |
---|
.. | .. |
---|
131 | 119 | u8 flags; |
---|
132 | 120 | u8 eid; |
---|
133 | 121 | u16 msdu_id; |
---|
| 122 | + u16 airtime_est; |
---|
134 | 123 | struct ieee80211_vif *vif; |
---|
135 | 124 | struct ieee80211_txq *txq; |
---|
| 125 | + u32 ucast_cipher; |
---|
136 | 126 | } __packed; |
---|
137 | 127 | |
---|
138 | 128 | struct ath10k_skb_rxcb { |
---|
139 | 129 | dma_addr_t paddr; |
---|
140 | 130 | struct hlist_node hlist; |
---|
| 131 | + u8 eid; |
---|
141 | 132 | }; |
---|
142 | 133 | |
---|
143 | 134 | static inline struct ath10k_skb_cb *ATH10K_SKB_CB(struct sk_buff *skb) |
---|
.. | .. |
---|
161 | 152 | return QCA988X_HOST_INTEREST_ADDRESS + item_offset; |
---|
162 | 153 | } |
---|
163 | 154 | |
---|
| 155 | +enum ath10k_phy_mode { |
---|
| 156 | + ATH10K_PHY_MODE_LEGACY = 0, |
---|
| 157 | + ATH10K_PHY_MODE_HT = 1, |
---|
| 158 | + ATH10K_PHY_MODE_VHT = 2, |
---|
| 159 | +}; |
---|
| 160 | + |
---|
| 161 | +/* Data rate 100KBPS based on IE Index */ |
---|
| 162 | +struct ath10k_index_ht_data_rate_type { |
---|
| 163 | + u8 beacon_rate_index; |
---|
| 164 | + u16 supported_rate[4]; |
---|
| 165 | +}; |
---|
| 166 | + |
---|
| 167 | +/* Data rate 100KBPS based on IE Index */ |
---|
| 168 | +struct ath10k_index_vht_data_rate_type { |
---|
| 169 | + u8 beacon_rate_index; |
---|
| 170 | + u16 supported_VHT80_rate[2]; |
---|
| 171 | + u16 supported_VHT40_rate[2]; |
---|
| 172 | + u16 supported_VHT20_rate[2]; |
---|
| 173 | +}; |
---|
| 174 | + |
---|
164 | 175 | struct ath10k_bmi { |
---|
165 | 176 | bool done_sent; |
---|
166 | 177 | }; |
---|
.. | .. |
---|
183 | 194 | struct wmi_cmd_map *cmd; |
---|
184 | 195 | struct wmi_vdev_param_map *vdev_param; |
---|
185 | 196 | struct wmi_pdev_param_map *pdev_param; |
---|
| 197 | + struct wmi_peer_param_map *peer_param; |
---|
186 | 198 | const struct wmi_ops *ops; |
---|
187 | 199 | const struct wmi_peer_flags_map *peer_flags; |
---|
188 | 200 | |
---|
.. | .. |
---|
203 | 215 | u32 peer_rssi; |
---|
204 | 216 | u32 peer_tx_rate; |
---|
205 | 217 | u32 peer_rx_rate; /* 10x only */ |
---|
206 | | - u32 rx_duration; |
---|
| 218 | + u64 rx_duration; |
---|
207 | 219 | }; |
---|
208 | 220 | |
---|
209 | 221 | struct ath10k_fw_extd_stats_peer { |
---|
210 | 222 | struct list_head list; |
---|
211 | 223 | |
---|
212 | 224 | u8 peer_macaddr[ETH_ALEN]; |
---|
213 | | - u32 rx_duration; |
---|
| 225 | + u64 rx_duration; |
---|
214 | 226 | }; |
---|
215 | 227 | |
---|
216 | 228 | struct ath10k_fw_stats_vdev { |
---|
.. | .. |
---|
414 | 426 | |
---|
415 | 427 | /* protected by ar->data_lock */ |
---|
416 | 428 | struct ieee80211_key_conf *keys[WMI_MAX_KEY_INDEX + 1]; |
---|
| 429 | + union htt_rx_pn_t tids_last_pn[ATH10K_TXRX_NUM_EXT_TIDS]; |
---|
| 430 | + bool tids_last_pn_valid[ATH10K_TXRX_NUM_EXT_TIDS]; |
---|
| 431 | + union htt_rx_pn_t frag_tids_last_pn[ATH10K_TXRX_NUM_EXT_TIDS]; |
---|
| 432 | + u32 frag_tids_seq[ATH10K_TXRX_NUM_EXT_TIDS]; |
---|
| 433 | + struct { |
---|
| 434 | + enum htt_security_types sec_type; |
---|
| 435 | + int pn_len; |
---|
| 436 | + } rx_pn[ATH10K_HTT_TXRX_PEER_SECURITY_MAX]; |
---|
417 | 437 | }; |
---|
418 | 438 | |
---|
419 | 439 | struct ath10k_txq { |
---|
.. | .. |
---|
451 | 471 | }; |
---|
452 | 472 | |
---|
453 | 473 | struct ath10k_sta_tid_stats { |
---|
454 | | - unsigned long int rx_pkt_from_fw; |
---|
455 | | - unsigned long int rx_pkt_unchained; |
---|
456 | | - unsigned long int rx_pkt_drop_chained; |
---|
457 | | - unsigned long int rx_pkt_drop_filter; |
---|
458 | | - unsigned long int rx_pkt_err[ATH10K_PKT_RX_ERR_MAX]; |
---|
459 | | - unsigned long int rx_pkt_queued_for_mac; |
---|
460 | | - unsigned long int rx_pkt_ampdu[ATH10K_AMPDU_SUBFRM_NUM_MAX]; |
---|
461 | | - unsigned long int rx_pkt_amsdu[ATH10K_AMSDU_SUBFRM_NUM_MAX]; |
---|
| 474 | + unsigned long rx_pkt_from_fw; |
---|
| 475 | + unsigned long rx_pkt_unchained; |
---|
| 476 | + unsigned long rx_pkt_drop_chained; |
---|
| 477 | + unsigned long rx_pkt_drop_filter; |
---|
| 478 | + unsigned long rx_pkt_err[ATH10K_PKT_RX_ERR_MAX]; |
---|
| 479 | + unsigned long rx_pkt_queued_for_mac; |
---|
| 480 | + unsigned long rx_pkt_ampdu[ATH10K_AMPDU_SUBFRM_NUM_MAX]; |
---|
| 481 | + unsigned long rx_pkt_amsdu[ATH10K_AMSDU_SUBFRM_NUM_MAX]; |
---|
462 | 482 | }; |
---|
| 483 | + |
---|
| 484 | +enum ath10k_counter_type { |
---|
| 485 | + ATH10K_COUNTER_TYPE_BYTES, |
---|
| 486 | + ATH10K_COUNTER_TYPE_PKTS, |
---|
| 487 | + ATH10K_COUNTER_TYPE_MAX, |
---|
| 488 | +}; |
---|
| 489 | + |
---|
| 490 | +enum ath10k_stats_type { |
---|
| 491 | + ATH10K_STATS_TYPE_SUCC, |
---|
| 492 | + ATH10K_STATS_TYPE_FAIL, |
---|
| 493 | + ATH10K_STATS_TYPE_RETRY, |
---|
| 494 | + ATH10K_STATS_TYPE_AMPDU, |
---|
| 495 | + ATH10K_STATS_TYPE_MAX, |
---|
| 496 | +}; |
---|
| 497 | + |
---|
| 498 | +struct ath10k_htt_data_stats { |
---|
| 499 | + u64 legacy[ATH10K_COUNTER_TYPE_MAX][ATH10K_LEGACY_NUM]; |
---|
| 500 | + u64 ht[ATH10K_COUNTER_TYPE_MAX][ATH10K_HT_MCS_NUM]; |
---|
| 501 | + u64 vht[ATH10K_COUNTER_TYPE_MAX][ATH10K_VHT_MCS_NUM]; |
---|
| 502 | + u64 bw[ATH10K_COUNTER_TYPE_MAX][ATH10K_BW_NUM]; |
---|
| 503 | + u64 nss[ATH10K_COUNTER_TYPE_MAX][ATH10K_NSS_NUM]; |
---|
| 504 | + u64 gi[ATH10K_COUNTER_TYPE_MAX][ATH10K_GI_NUM]; |
---|
| 505 | + u64 rate_table[ATH10K_COUNTER_TYPE_MAX][ATH10K_RATE_TABLE_NUM]; |
---|
| 506 | +}; |
---|
| 507 | + |
---|
| 508 | +struct ath10k_htt_tx_stats { |
---|
| 509 | + struct ath10k_htt_data_stats stats[ATH10K_STATS_TYPE_MAX]; |
---|
| 510 | + u64 tx_duration; |
---|
| 511 | + u64 ba_fails; |
---|
| 512 | + u64 ack_fails; |
---|
| 513 | +}; |
---|
| 514 | + |
---|
| 515 | +#define ATH10K_TID_MAX 8 |
---|
463 | 516 | |
---|
464 | 517 | struct ath10k_sta { |
---|
465 | 518 | struct ath10k_vif *arvif; |
---|
.. | .. |
---|
471 | 524 | u32 smps; |
---|
472 | 525 | u16 peer_id; |
---|
473 | 526 | struct rate_info txrate; |
---|
| 527 | + struct ieee80211_tx_info tx_info; |
---|
| 528 | + u32 tx_retries; |
---|
| 529 | + u32 tx_failed; |
---|
| 530 | + u32 last_tx_bitrate; |
---|
474 | 531 | |
---|
| 532 | + u32 rx_rate_code; |
---|
| 533 | + u32 rx_bitrate_kbps; |
---|
| 534 | + u32 tx_rate_code; |
---|
| 535 | + u32 tx_bitrate_kbps; |
---|
475 | 536 | struct work_struct update_wk; |
---|
476 | 537 | u64 rx_duration; |
---|
| 538 | + struct ath10k_htt_tx_stats *tx_stats; |
---|
| 539 | + u32 ucast_cipher; |
---|
477 | 540 | |
---|
478 | 541 | #ifdef CONFIG_MAC80211_DEBUGFS |
---|
479 | 542 | /* protected by conf_mutex */ |
---|
.. | .. |
---|
482 | 545 | /* Protected with ar->data_lock */ |
---|
483 | 546 | struct ath10k_sta_tid_stats tid_stats[IEEE80211_NUM_TIDS + 1]; |
---|
484 | 547 | #endif |
---|
| 548 | + /* Protected with ar->data_lock */ |
---|
| 549 | + u32 peer_ps_state; |
---|
| 550 | + struct work_struct tid_config_wk; |
---|
| 551 | + int noack[ATH10K_TID_MAX]; |
---|
| 552 | + int retry_long[ATH10K_TID_MAX]; |
---|
| 553 | + int ampdu[ATH10K_TID_MAX]; |
---|
| 554 | + u8 rate_ctrl[ATH10K_TID_MAX]; |
---|
| 555 | + u32 rate_code[ATH10K_TID_MAX]; |
---|
| 556 | + int rtscts[ATH10K_TID_MAX]; |
---|
485 | 557 | }; |
---|
486 | 558 | |
---|
487 | | -#define ATH10K_VDEV_SETUP_TIMEOUT_HZ (5 * HZ) |
---|
| 559 | +#define ATH10K_VDEV_SETUP_TIMEOUT_HZ (5 * HZ) |
---|
| 560 | +#define ATH10K_VDEV_DELETE_TIMEOUT_HZ (5 * HZ) |
---|
488 | 561 | |
---|
489 | 562 | enum ath10k_beacon_state { |
---|
490 | 563 | ATH10K_BEACON_SCHEDULED = 0, |
---|
.. | .. |
---|
544 | 617 | bool nohwcrypt; |
---|
545 | 618 | int num_legacy_stations; |
---|
546 | 619 | int txpower; |
---|
| 620 | + bool ftm_responder; |
---|
547 | 621 | struct wmi_wmm_params_all_arg wmm_params; |
---|
548 | 622 | struct work_struct ap_csa_work; |
---|
549 | 623 | struct delayed_work connection_loss_work; |
---|
550 | 624 | struct cfg80211_bitrate_mask bitrate_mask; |
---|
| 625 | + |
---|
| 626 | + /* For setting VHT peer fixed rate, protected by conf_mutex */ |
---|
| 627 | + int vht_num_rates; |
---|
| 628 | + u8 vht_pfr; |
---|
| 629 | + u32 tid_conf_changed[ATH10K_TID_MAX]; |
---|
| 630 | + int noack[ATH10K_TID_MAX]; |
---|
| 631 | + int retry_long[ATH10K_TID_MAX]; |
---|
| 632 | + int ampdu[ATH10K_TID_MAX]; |
---|
| 633 | + u8 rate_ctrl[ATH10K_TID_MAX]; |
---|
| 634 | + u32 rate_code[ATH10K_TID_MAX]; |
---|
| 635 | + int rtscts[ATH10K_TID_MAX]; |
---|
| 636 | + u32 tids_rst; |
---|
551 | 637 | }; |
---|
552 | 638 | |
---|
553 | 639 | struct ath10k_vif_iter { |
---|
.. | .. |
---|
591 | 677 | bool fw_stats_done; |
---|
592 | 678 | |
---|
593 | 679 | unsigned long htt_stats_mask; |
---|
| 680 | + unsigned long reset_htt_stats; |
---|
594 | 681 | struct delayed_work htt_stats_dwork; |
---|
595 | 682 | struct ath10k_dfs_stats dfs_stats; |
---|
596 | 683 | struct ath_dfs_pool_stats dfs_pool_stats; |
---|
.. | .. |
---|
607 | 694 | u32 reg_addr; |
---|
608 | 695 | u32 nf_cal_period; |
---|
609 | 696 | void *cal_data; |
---|
| 697 | + u32 enable_extd_tx_stats; |
---|
| 698 | + u8 fw_dbglog_mode; |
---|
610 | 699 | }; |
---|
611 | 700 | |
---|
612 | 701 | enum ath10k_state { |
---|
.. | .. |
---|
733 | 822 | |
---|
734 | 823 | /* Firmware load is done externally, not by bmi */ |
---|
735 | 824 | ATH10K_FW_FEATURE_NON_BMI = 19, |
---|
| 825 | + |
---|
| 826 | + /* Firmware sends only one chan_info event per channel */ |
---|
| 827 | + ATH10K_FW_FEATURE_SINGLE_CHAN_INFO_PER_CHANNEL = 20, |
---|
| 828 | + |
---|
| 829 | + /* Firmware allows setting peer fixed rate */ |
---|
| 830 | + ATH10K_FW_FEATURE_PEER_FIXED_RATE = 21, |
---|
736 | 831 | |
---|
737 | 832 | /* keep last */ |
---|
738 | 833 | ATH10K_FW_FEATURE_COUNT, |
---|
.. | .. |
---|
861 | 956 | const struct firmware *board; |
---|
862 | 957 | const void *board_data; |
---|
863 | 958 | size_t board_len; |
---|
| 959 | + const struct firmware *ext_board; |
---|
| 960 | + const void *ext_board_data; |
---|
| 961 | + size_t ext_board_len; |
---|
864 | 962 | |
---|
865 | 963 | struct ath10k_fw_file fw_file; |
---|
866 | 964 | }; |
---|
.. | .. |
---|
880 | 978 | u32 reserved2; |
---|
881 | 979 | }; |
---|
882 | 980 | |
---|
| 981 | +enum ath10k_dev_type { |
---|
| 982 | + ATH10K_DEV_TYPE_LL, |
---|
| 983 | + ATH10K_DEV_TYPE_HL, |
---|
| 984 | +}; |
---|
| 985 | + |
---|
| 986 | +struct ath10k_bus_params { |
---|
| 987 | + u32 chip_id; |
---|
| 988 | + enum ath10k_dev_type dev_type; |
---|
| 989 | + bool link_can_suspend; |
---|
| 990 | + bool hl_msdu_ids; |
---|
| 991 | +}; |
---|
| 992 | + |
---|
883 | 993 | struct ath10k { |
---|
884 | 994 | struct ath_common ath_common; |
---|
885 | 995 | struct ieee80211_hw *hw; |
---|
886 | 996 | struct ieee80211_ops *ops; |
---|
887 | 997 | struct device *dev; |
---|
| 998 | + struct msa_region { |
---|
| 999 | + dma_addr_t paddr; |
---|
| 1000 | + u32 mem_size; |
---|
| 1001 | + void *vaddr; |
---|
| 1002 | + } msa; |
---|
888 | 1003 | u8 mac_addr[ETH_ALEN]; |
---|
889 | 1004 | |
---|
890 | 1005 | enum ath10k_hw_rev hw_rev; |
---|
891 | 1006 | u16 dev_id; |
---|
892 | 1007 | u32 chip_id; |
---|
| 1008 | + enum ath10k_dev_type dev_type; |
---|
893 | 1009 | u32 target_version; |
---|
894 | 1010 | u8 fw_version_major; |
---|
895 | 1011 | u32 fw_version_minor; |
---|
.. | .. |
---|
902 | 1018 | u32 hw_eeprom_rd; |
---|
903 | 1019 | u32 ht_cap_info; |
---|
904 | 1020 | u32 vht_cap_info; |
---|
| 1021 | + u32 vht_supp_mcs; |
---|
905 | 1022 | u32 num_rf_chains; |
---|
906 | 1023 | u32 max_spatial_stream; |
---|
907 | 1024 | /* protected by conf_mutex */ |
---|
| 1025 | + u32 low_2ghz_chan; |
---|
| 1026 | + u32 high_2ghz_chan; |
---|
908 | 1027 | u32 low_5ghz_chan; |
---|
909 | 1028 | u32 high_5ghz_chan; |
---|
910 | 1029 | bool ani_enabled; |
---|
| 1030 | + u32 sys_cap_info; |
---|
911 | 1031 | |
---|
| 1032 | + /* protected by data_lock */ |
---|
| 1033 | + bool hw_rfkill_on; |
---|
| 1034 | + |
---|
| 1035 | + /* protected by conf_mutex */ |
---|
| 1036 | + u8 ps_state_enable; |
---|
| 1037 | + |
---|
| 1038 | + bool nlo_enabled; |
---|
912 | 1039 | bool p2p; |
---|
913 | 1040 | |
---|
914 | 1041 | struct { |
---|
.. | .. |
---|
917 | 1044 | } hif; |
---|
918 | 1045 | |
---|
919 | 1046 | struct completion target_suspend; |
---|
| 1047 | + struct completion driver_recovery; |
---|
920 | 1048 | |
---|
921 | 1049 | const struct ath10k_hw_regs *regs; |
---|
922 | 1050 | const struct ath10k_hw_ce_regs *hw_ce_regs; |
---|
.. | .. |
---|
946 | 1074 | u32 subsystem_device; |
---|
947 | 1075 | |
---|
948 | 1076 | bool bmi_ids_valid; |
---|
| 1077 | + bool qmi_ids_valid; |
---|
| 1078 | + u32 qmi_board_id; |
---|
| 1079 | + u32 qmi_chip_id; |
---|
949 | 1080 | u8 bmi_board_id; |
---|
| 1081 | + u8 bmi_eboard_id; |
---|
950 | 1082 | u8 bmi_chip_id; |
---|
| 1083 | + bool ext_bid_supported; |
---|
951 | 1084 | |
---|
952 | 1085 | char bdf_ext[ATH10K_SMBIOS_BDF_EXT_STR_LENGTH]; |
---|
953 | 1086 | } id; |
---|
.. | .. |
---|
1005 | 1138 | |
---|
1006 | 1139 | int last_wmi_vdev_start_status; |
---|
1007 | 1140 | struct completion vdev_setup_done; |
---|
| 1141 | + struct completion vdev_delete_done; |
---|
| 1142 | + struct completion peer_stats_info_complete; |
---|
1008 | 1143 | |
---|
1009 | 1144 | struct workqueue_struct *workqueue; |
---|
1010 | 1145 | /* Auxiliary workqueue */ |
---|
1011 | 1146 | struct workqueue_struct *workqueue_aux; |
---|
1012 | | - |
---|
| 1147 | + struct workqueue_struct *workqueue_tx_complete; |
---|
1013 | 1148 | /* prevents concurrent FW reconfiguration */ |
---|
1014 | 1149 | struct mutex conf_mutex; |
---|
1015 | 1150 | |
---|
| 1151 | + /* protects coredump data */ |
---|
| 1152 | + struct mutex dump_mutex; |
---|
| 1153 | + |
---|
1016 | 1154 | /* protects shared structure data */ |
---|
1017 | 1155 | spinlock_t data_lock; |
---|
1018 | | - /* protects: ar->txqs, artxq->list */ |
---|
1019 | | - spinlock_t txqs_lock; |
---|
1020 | 1156 | |
---|
1021 | | - struct list_head txqs; |
---|
1022 | 1157 | struct list_head arvifs; |
---|
1023 | 1158 | struct list_head peers; |
---|
1024 | 1159 | struct ath10k_peer *peer_map[ATH10K_MAX_NUM_PEER_IDS]; |
---|
.. | .. |
---|
1050 | 1185 | |
---|
1051 | 1186 | struct work_struct register_work; |
---|
1052 | 1187 | struct work_struct restart_work; |
---|
| 1188 | + struct work_struct bundle_tx_work; |
---|
| 1189 | + struct work_struct tx_complete_work; |
---|
1053 | 1190 | |
---|
1054 | 1191 | /* cycle count is reported twice for each visited channel during scan. |
---|
1055 | 1192 | * access protected by data_lock |
---|
.. | .. |
---|
1101 | 1238 | |
---|
1102 | 1239 | struct { |
---|
1103 | 1240 | /* protected by data_lock */ |
---|
| 1241 | + u32 rx_crc_err_drop; |
---|
1104 | 1242 | u32 fw_crash_counter; |
---|
1105 | 1243 | u32 fw_warm_reset_counter; |
---|
1106 | 1244 | u32 fw_cold_reset_counter; |
---|
.. | .. |
---|
1129 | 1267 | |
---|
1130 | 1268 | u32 ampdu_reference; |
---|
1131 | 1269 | |
---|
| 1270 | + const u8 *wmi_key_cipher; |
---|
1132 | 1271 | void *ce_priv; |
---|
1133 | 1272 | |
---|
1134 | 1273 | u32 sta_tid_stats_mask; |
---|
.. | .. |
---|
1137 | 1276 | enum ath10k_radar_confirmation_state radar_conf_state; |
---|
1138 | 1277 | struct ath10k_radar_found_info last_radar_info; |
---|
1139 | 1278 | struct work_struct radar_confirmation_work; |
---|
| 1279 | + struct ath10k_bus_params bus_param; |
---|
| 1280 | + struct completion peer_delete_done; |
---|
| 1281 | + |
---|
| 1282 | + bool coex_support; |
---|
| 1283 | + int coex_gpio_pin; |
---|
1140 | 1284 | |
---|
1141 | 1285 | /* must be last */ |
---|
1142 | | - u8 drv_priv[0] __aligned(sizeof(void *)); |
---|
| 1286 | + u8 drv_priv[] __aligned(sizeof(void *)); |
---|
1143 | 1287 | }; |
---|
1144 | 1288 | |
---|
1145 | 1289 | static inline bool ath10k_peer_stats_enabled(struct ath10k *ar) |
---|
.. | .. |
---|
1168 | 1312 | const struct ath10k_fw_components *fw_components); |
---|
1169 | 1313 | int ath10k_wait_for_suspend(struct ath10k *ar, u32 suspend_opt); |
---|
1170 | 1314 | void ath10k_core_stop(struct ath10k *ar); |
---|
1171 | | -int ath10k_core_register(struct ath10k *ar, u32 chip_id); |
---|
| 1315 | +int ath10k_core_register(struct ath10k *ar, |
---|
| 1316 | + const struct ath10k_bus_params *bus_params); |
---|
1172 | 1317 | void ath10k_core_unregister(struct ath10k *ar); |
---|
| 1318 | +int ath10k_core_fetch_board_file(struct ath10k *ar, int bd_ie_type); |
---|
| 1319 | +int ath10k_core_check_dt(struct ath10k *ar); |
---|
| 1320 | +void ath10k_core_free_board_files(struct ath10k *ar); |
---|
1173 | 1321 | |
---|
1174 | 1322 | #endif /* _CORE_H_ */ |
---|