.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: ISC */ |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (c) 2012-2017 Qualcomm Atheros, Inc. |
---|
3 | | - * Copyright (c) 2018, The Linux Foundation. All rights reserved. |
---|
4 | | - * |
---|
5 | | - * Permission to use, copy, modify, and/or distribute this software for any |
---|
6 | | - * purpose with or without fee is hereby granted, provided that the above |
---|
7 | | - * copyright notice and this permission notice appear in all copies. |
---|
8 | | - * |
---|
9 | | - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
---|
10 | | - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
---|
11 | | - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
---|
12 | | - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
---|
13 | | - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
---|
14 | | - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
---|
15 | | - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
---|
| 4 | + * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. |
---|
16 | 5 | */ |
---|
17 | 6 | |
---|
18 | 7 | #ifndef __WIL6210_H__ |
---|
.. | .. |
---|
38 | 27 | extern bool debug_fw; |
---|
39 | 28 | extern bool disable_ap_sme; |
---|
40 | 29 | extern bool ftm_mode; |
---|
| 30 | +extern bool drop_if_ring_full; |
---|
| 31 | +extern uint max_assoc_sta; |
---|
41 | 32 | |
---|
42 | 33 | struct wil6210_priv; |
---|
43 | 34 | struct wil6210_vif; |
---|
.. | .. |
---|
81 | 72 | |
---|
82 | 73 | #define WIL_TX_Q_LEN_DEFAULT (4000) |
---|
83 | 74 | #define WIL_RX_RING_SIZE_ORDER_DEFAULT (10) |
---|
| 75 | +#define WIL_RX_RING_SIZE_ORDER_TALYN_DEFAULT (11) |
---|
84 | 76 | #define WIL_TX_RING_SIZE_ORDER_DEFAULT (12) |
---|
85 | 77 | #define WIL_BCAST_RING_SIZE_ORDER_DEFAULT (7) |
---|
86 | 78 | #define WIL_BCAST_MCS0_LIMIT (1024) /* limit for MCS0 frame size */ |
---|
.. | .. |
---|
88 | 80 | #define WIL_RING_SIZE_ORDER_MIN (5) |
---|
89 | 81 | #define WIL_RING_SIZE_ORDER_MAX (15) |
---|
90 | 82 | #define WIL6210_MAX_TX_RINGS (24) /* HW limit */ |
---|
91 | | -#define WIL6210_MAX_CID (8) /* HW limit */ |
---|
| 83 | +#define WIL6210_MAX_CID (20) /* max number of stations */ |
---|
| 84 | +#define WIL6210_RX_DESC_MAX_CID (8) /* HW limit */ |
---|
92 | 85 | #define WIL6210_NAPI_BUDGET (16) /* arbitrary */ |
---|
93 | 86 | #define WIL_MAX_AMPDU_SIZE (64 * 1024) /* FW/HW limit */ |
---|
94 | 87 | #define WIL_MAX_AGG_WSIZE (32) /* FW/HW limit */ |
---|
95 | 88 | #define WIL_MAX_AMPDU_SIZE_128 (128 * 1024) /* FW/HW limit */ |
---|
96 | 89 | #define WIL_MAX_AGG_WSIZE_64 (64) /* FW/HW limit */ |
---|
97 | 90 | #define WIL6210_MAX_STATUS_RINGS (8) |
---|
| 91 | +#define WIL_WMI_CALL_GENERAL_TO_MS 100 |
---|
98 | 92 | |
---|
99 | 93 | /* Hardware offload block adds the following: |
---|
100 | 94 | * 26 bytes - 3-address QoS data header |
---|
.. | .. |
---|
181 | 175 | |
---|
182 | 176 | /* registers - FW addresses */ |
---|
183 | 177 | #define RGF_USER_USAGE_1 (0x880004) |
---|
| 178 | +#define RGF_USER_USAGE_2 (0x880008) |
---|
184 | 179 | #define RGF_USER_USAGE_6 (0x880018) |
---|
185 | 180 | #define BIT_USER_OOB_MODE BIT(31) |
---|
186 | 181 | #define BIT_USER_OOB_R2_MODE BIT(30) |
---|
.. | .. |
---|
330 | 325 | #define BIT_BOOT_FROM_ROM BIT(31) |
---|
331 | 326 | |
---|
332 | 327 | /* eDMA */ |
---|
| 328 | +#define RGF_SCM_PTRS_SUBQ_RD_PTR (0x8b4000) |
---|
| 329 | +#define RGF_SCM_PTRS_COMPQ_RD_PTR (0x8b4100) |
---|
| 330 | +#define RGF_DMA_SCM_SUBQ_CONS (0x8b60ec) |
---|
| 331 | +#define RGF_DMA_SCM_COMPQ_PROD (0x8b616c) |
---|
| 332 | + |
---|
333 | 333 | #define RGF_INT_COUNT_ON_SPECIAL_EVT (0x8b62d8) |
---|
334 | 334 | |
---|
335 | 335 | #define RGF_INT_CTRL_INT_GEN_CFG_0 (0x8bc000) |
---|
.. | .. |
---|
363 | 363 | #define REVISION_ID_SPARROW_D0 (0x3) |
---|
364 | 364 | |
---|
365 | 365 | #define RGF_OTP_MAC_TALYN_MB (0x8a0304) |
---|
| 366 | +#define RGF_OTP_OEM_MAC (0x8a0334) |
---|
366 | 367 | #define RGF_OTP_MAC (0x8a0620) |
---|
367 | 368 | |
---|
368 | 369 | /* Talyn-MB */ |
---|
.. | .. |
---|
553 | 554 | bool is_rx; |
---|
554 | 555 | u8 desc_rdy_pol; /* Expected descriptor ready bit polarity */ |
---|
555 | 556 | struct wil_ring_rx_data rx_data; |
---|
| 557 | + u32 invalid_buff_id_cnt; /* relevant only for RX */ |
---|
556 | 558 | }; |
---|
557 | 559 | |
---|
558 | 560 | #define WIL_STA_TID_NUM (16) |
---|
559 | | -#define WIL_MCS_MAX (12) /* Maximum MCS supported */ |
---|
| 561 | +#define WIL_MCS_MAX (15) /* Maximum MCS supported */ |
---|
560 | 562 | |
---|
561 | 563 | struct wil_net_stats { |
---|
562 | 564 | unsigned long rx_packets; |
---|
.. | .. |
---|
577 | 579 | unsigned long rx_amsdu_error; /* eDMA specific */ |
---|
578 | 580 | unsigned long rx_csum_err; |
---|
579 | 581 | u16 last_mcs_rx; |
---|
| 582 | + u8 last_cb_mode_rx; |
---|
580 | 583 | u64 rx_per_mcs[WIL_MCS_MAX + 1]; |
---|
| 584 | + u32 ft_roams; /* relevant in STA mode */ |
---|
581 | 585 | }; |
---|
582 | 586 | |
---|
583 | 587 | /** |
---|
.. | .. |
---|
600 | 604 | struct wil_ctx *ctx); |
---|
601 | 605 | int (*tx_ring_tso)(struct wil6210_priv *wil, struct wil6210_vif *vif, |
---|
602 | 606 | struct wil_ring *ring, struct sk_buff *skb); |
---|
| 607 | + int (*tx_ring_modify)(struct wil6210_vif *vif, int ring_id, |
---|
| 608 | + int cid, int tid); |
---|
603 | 609 | irqreturn_t (*irq_tx)(int irq, void *cookie); |
---|
604 | 610 | /* RX ops */ |
---|
605 | 611 | int (*rx_init)(struct wil6210_priv *wil, uint ring_order); |
---|
.. | .. |
---|
644 | 650 | wil_status_suspending, /* suspend in progress */ |
---|
645 | 651 | wil_status_suspended, /* suspend completed, device is suspended */ |
---|
646 | 652 | wil_status_resuming, /* resume in progress */ |
---|
647 | | - wil_status_collecting_dumps, /* crashdump collection in progress */ |
---|
648 | 653 | wil_status_last /* keep last */ |
---|
649 | 654 | }; |
---|
650 | 655 | |
---|
.. | .. |
---|
713 | 718 | wil_sta_unused = 0, |
---|
714 | 719 | wil_sta_conn_pending = 1, |
---|
715 | 720 | wil_sta_connected = 2, |
---|
| 721 | +}; |
---|
| 722 | + |
---|
| 723 | +enum wil_rekey_state { |
---|
| 724 | + WIL_REKEY_IDLE = 0, |
---|
| 725 | + WIL_REKEY_M3_RECEIVED = 1, |
---|
| 726 | + WIL_REKEY_WAIT_M4_SENT = 2, |
---|
716 | 727 | }; |
---|
717 | 728 | |
---|
718 | 729 | /** |
---|
.. | .. |
---|
823 | 834 | enum wil6210_vif_status { |
---|
824 | 835 | wil_vif_fwconnecting, |
---|
825 | 836 | wil_vif_fwconnected, |
---|
| 837 | + wil_vif_ft_roam, |
---|
826 | 838 | wil_vif_status_last /* keep last */ |
---|
827 | 839 | }; |
---|
828 | 840 | |
---|
.. | .. |
---|
834 | 846 | DECLARE_BITMAP(status, wil_vif_status_last); |
---|
835 | 847 | u32 privacy; /* secure connection? */ |
---|
836 | 848 | u16 channel; /* relevant in AP mode */ |
---|
| 849 | + u8 wmi_edmg_channel; /* relevant in AP mode */ |
---|
837 | 850 | u8 hidden_ssid; /* relevant in AP mode */ |
---|
838 | 851 | u32 ap_isolate; /* no intra-BSS communication */ |
---|
839 | 852 | bool pbss; |
---|
| 853 | + int bi; |
---|
| 854 | + u8 *proberesp, *proberesp_ies, *assocresp_ies; |
---|
| 855 | + size_t proberesp_len, proberesp_ies_len, assocresp_ies_len; |
---|
| 856 | + u8 ssid[IEEE80211_MAX_SSID_LEN]; |
---|
| 857 | + size_t ssid_len; |
---|
| 858 | + u8 gtk_index; |
---|
| 859 | + u8 gtk[WMI_MAX_KEY_LEN]; |
---|
| 860 | + size_t gtk_len; |
---|
840 | 861 | int bcast_ring; |
---|
841 | 862 | struct cfg80211_bss *bss; /* connected bss, relevant in STA mode */ |
---|
842 | 863 | int locally_generated_disc; /* relevant in STA mode */ |
---|
.. | .. |
---|
853 | 874 | int net_queue_stopped; /* netif_tx_stop_all_queues invoked */ |
---|
854 | 875 | bool fw_stats_ready; /* per-cid statistics are ready inside sta_info */ |
---|
855 | 876 | u64 fw_stats_tsf; /* measurement timestamp */ |
---|
| 877 | + |
---|
| 878 | + /* PTK rekey race prevention, this is relevant to station mode only */ |
---|
| 879 | + enum wil_rekey_state ptk_rekey_state; |
---|
| 880 | + struct work_struct enable_tx_key_worker; |
---|
856 | 881 | }; |
---|
857 | 882 | |
---|
858 | 883 | /** |
---|
.. | .. |
---|
886 | 911 | struct wmi_link_stats_global stats; |
---|
887 | 912 | }; |
---|
888 | 913 | |
---|
| 914 | +struct wil_brd_info { |
---|
| 915 | + u32 file_addr; |
---|
| 916 | + u32 file_max_size; |
---|
| 917 | +}; |
---|
| 918 | + |
---|
889 | 919 | struct wil6210_priv { |
---|
890 | 920 | struct pci_dev *pdev; |
---|
891 | 921 | u32 bar_size; |
---|
.. | .. |
---|
900 | 930 | const char *hw_name; |
---|
901 | 931 | const char *wil_fw_name; |
---|
902 | 932 | char *board_file; |
---|
903 | | - u32 brd_file_addr; |
---|
904 | | - u32 brd_file_max_size; |
---|
| 933 | + u32 num_of_brd_entries; |
---|
| 934 | + struct wil_brd_info *brd_info; |
---|
905 | 935 | DECLARE_BITMAP(hw_capa, hw_capa_last); |
---|
906 | 936 | DECLARE_BITMAP(fw_capabilities, WMI_FW_CAPABILITY_MAX); |
---|
907 | 937 | DECLARE_BITMAP(platform_capa, WIL_PLATFORM_CAPA_MAX); |
---|
.. | .. |
---|
913 | 943 | struct wil6210_vif *vifs[WIL_MAX_VIFS]; |
---|
914 | 944 | struct mutex vif_mutex; /* protects access to VIF entries */ |
---|
915 | 945 | atomic_t connected_vifs; |
---|
| 946 | + u32 max_assoc_sta; /* max sta's supported by the driver and the FW */ |
---|
| 947 | + |
---|
916 | 948 | /* profile */ |
---|
917 | 949 | struct cfg80211_chan_def monitor_chandef; |
---|
918 | 950 | u32 monitor_flags; |
---|
.. | .. |
---|
946 | 978 | */ |
---|
947 | 979 | spinlock_t wmi_ev_lock; |
---|
948 | 980 | spinlock_t net_queue_lock; /* guarding stop/wake netif queue */ |
---|
| 981 | + spinlock_t eap_lock; /* guarding access to eap rekey fields */ |
---|
949 | 982 | struct napi_struct napi_rx; |
---|
950 | 983 | struct napi_struct napi_tx; |
---|
951 | 984 | struct net_device napi_ndev; /* dummy net_device serving all VIFs */ |
---|
.. | .. |
---|
967 | 1000 | struct wil_txrx_ops txrx_ops; |
---|
968 | 1001 | |
---|
969 | 1002 | struct mutex mutex; /* for wil6210_priv access in wil_{up|down} */ |
---|
| 1003 | + /* for synchronizing device memory access while reset or suspend */ |
---|
| 1004 | + struct rw_semaphore mem_lock; |
---|
970 | 1005 | /* statistics */ |
---|
971 | 1006 | atomic_t isr_count_rx, isr_count_tx; |
---|
972 | 1007 | /* debugfs */ |
---|
.. | .. |
---|
1024 | 1059 | |
---|
1025 | 1060 | u32 max_agg_wsize; |
---|
1026 | 1061 | u32 max_ampdu_size; |
---|
| 1062 | + u8 multicast_to_unicast; |
---|
| 1063 | + s32 cqm_rssi_thold; |
---|
1027 | 1064 | }; |
---|
1028 | 1065 | |
---|
1029 | 1066 | #define wil_to_wiphy(i) (i->wiphy) |
---|
.. | .. |
---|
1035 | 1072 | #define vif_to_wil(v) (v->wil) |
---|
1036 | 1073 | #define vif_to_ndev(v) (v->ndev) |
---|
1037 | 1074 | #define vif_to_wdev(v) (&v->wdev) |
---|
| 1075 | +#define GET_MAX_VIFS(wil) min_t(int, (wil)->max_vifs, WIL_MAX_VIFS) |
---|
1038 | 1076 | |
---|
1039 | 1077 | static inline struct wil6210_vif *wdev_to_vif(struct wil6210_priv *wil, |
---|
1040 | 1078 | struct wireless_dev *wdev) |
---|
.. | .. |
---|
1107 | 1145 | wil_w(wil, reg, wil_r(wil, reg) & ~val); |
---|
1108 | 1146 | } |
---|
1109 | 1147 | |
---|
| 1148 | +/** |
---|
| 1149 | + * wil_cid_valid - check cid is valid |
---|
| 1150 | + */ |
---|
| 1151 | +static inline bool wil_cid_valid(struct wil6210_priv *wil, int cid) |
---|
| 1152 | +{ |
---|
| 1153 | + return (cid >= 0 && cid < wil->max_assoc_sta && cid < WIL6210_MAX_CID); |
---|
| 1154 | +} |
---|
| 1155 | + |
---|
1110 | 1156 | void wil_get_board_file(struct wil6210_priv *wil, char *buf, size_t len); |
---|
1111 | 1157 | |
---|
1112 | 1158 | #if defined(CONFIG_DYNAMIC_DEBUG) |
---|
.. | .. |
---|
1151 | 1197 | size_t count); |
---|
1152 | 1198 | void wil_memcpy_toio_32(volatile void __iomem *dst, const void *src, |
---|
1153 | 1199 | size_t count); |
---|
| 1200 | +int wil_mem_access_lock(struct wil6210_priv *wil); |
---|
| 1201 | +void wil_mem_access_unlock(struct wil6210_priv *wil); |
---|
1154 | 1202 | |
---|
1155 | 1203 | struct wil6210_vif * |
---|
1156 | 1204 | wil_vif_alloc(struct wil6210_priv *wil, const char *name, |
---|
.. | .. |
---|
1180 | 1228 | void wil_refresh_fw_capabilities(struct wil6210_priv *wil); |
---|
1181 | 1229 | void wil_mbox_ring_le2cpus(struct wil6210_mbox_ring *r); |
---|
1182 | 1230 | int wil_find_cid(struct wil6210_priv *wil, u8 mid, const u8 *mac); |
---|
| 1231 | +int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx); |
---|
1183 | 1232 | void wil_set_ethtoolops(struct net_device *ndev); |
---|
1184 | 1233 | |
---|
1185 | 1234 | struct fw_map *wil_find_fw_mapping(const char *section); |
---|
.. | .. |
---|
1206 | 1255 | int wmi_echo(struct wil6210_priv *wil); |
---|
1207 | 1256 | int wmi_set_ie(struct wil6210_vif *vif, u8 type, u16 ie_len, const void *ie); |
---|
1208 | 1257 | int wmi_rx_chain_add(struct wil6210_priv *wil, struct wil_ring *vring); |
---|
| 1258 | +int wmi_update_ft_ies(struct wil6210_vif *vif, u16 ie_len, const void *ie); |
---|
1209 | 1259 | int wmi_rxon(struct wil6210_priv *wil, bool on); |
---|
1210 | 1260 | int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_m, u32 *t_r); |
---|
1211 | | -int wmi_disconnect_sta(struct wil6210_vif *vif, const u8 *mac, |
---|
1212 | | - u16 reason, bool full_disconnect, bool del_sta); |
---|
| 1261 | +int wmi_get_all_temperatures(struct wil6210_priv *wil, |
---|
| 1262 | + struct wmi_temp_sense_all_done_event |
---|
| 1263 | + *sense_all_evt); |
---|
| 1264 | +int wmi_disconnect_sta(struct wil6210_vif *vif, const u8 *mac, u16 reason, |
---|
| 1265 | + bool del_sta); |
---|
1213 | 1266 | int wmi_addba(struct wil6210_priv *wil, u8 mid, |
---|
1214 | 1267 | u8 ringid, u8 size, u16 timeout); |
---|
1215 | 1268 | int wmi_delba_tx(struct wil6210_priv *wil, u8 mid, u8 ringid, u16 reason); |
---|
1216 | | -int wmi_delba_rx(struct wil6210_priv *wil, u8 mid, u8 cidxtid, u16 reason); |
---|
| 1269 | +int wmi_delba_rx(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, u16 reason); |
---|
1217 | 1270 | int wmi_addba_rx_resp(struct wil6210_priv *wil, |
---|
1218 | 1271 | u8 mid, u8 cid, u8 tid, u8 token, |
---|
1219 | 1272 | u16 status, bool amsdu, u16 agg_wsize, u16 timeout); |
---|
.. | .. |
---|
1226 | 1279 | const u8 *mac, enum nl80211_iftype iftype); |
---|
1227 | 1280 | int wmi_port_delete(struct wil6210_priv *wil, u8 mid); |
---|
1228 | 1281 | int wmi_link_stats_cfg(struct wil6210_vif *vif, u32 type, u8 cid, u32 interval); |
---|
1229 | | -int wil_addba_rx_request(struct wil6210_priv *wil, u8 mid, |
---|
1230 | | - u8 cidxtid, u8 dialog_token, __le16 ba_param_set, |
---|
| 1282 | +int wil_addba_rx_request(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, |
---|
| 1283 | + u8 dialog_token, __le16 ba_param_set, |
---|
1231 | 1284 | __le16 ba_timeout, __le16 ba_seq_ctrl); |
---|
1232 | 1285 | int wil_addba_tx_request(struct wil6210_priv *wil, u8 ringid, u16 wsize); |
---|
1233 | 1286 | |
---|
.. | .. |
---|
1264 | 1317 | int wil_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, |
---|
1265 | 1318 | struct cfg80211_mgmt_tx_params *params, |
---|
1266 | 1319 | u64 *cookie); |
---|
| 1320 | +void wil_cfg80211_ap_recovery(struct wil6210_priv *wil); |
---|
1267 | 1321 | int wil_cfg80211_iface_combinations_from_fw( |
---|
1268 | 1322 | struct wil6210_priv *wil, |
---|
1269 | 1323 | const struct wil_fw_record_concurrency *conc); |
---|
.. | .. |
---|
1286 | 1340 | |
---|
1287 | 1341 | int wmi_set_mac_address(struct wil6210_priv *wil, void *addr); |
---|
1288 | 1342 | int wmi_pcp_start(struct wil6210_vif *vif, int bi, u8 wmi_nettype, u8 chan, |
---|
1289 | | - u8 hidden_ssid, u8 is_go); |
---|
| 1343 | + u8 edmg_chan, u8 hidden_ssid, u8 is_go); |
---|
1290 | 1344 | int wmi_pcp_stop(struct wil6210_vif *vif); |
---|
1291 | 1345 | int wmi_led_cfg(struct wil6210_priv *wil, bool enable); |
---|
1292 | 1346 | int wmi_abort_scan(struct wil6210_vif *vif); |
---|
.. | .. |
---|
1294 | 1348 | void wil_abort_scan_all_vifs(struct wil6210_priv *wil, bool sync); |
---|
1295 | 1349 | void wil6210_bus_request(struct wil6210_priv *wil, u32 kbps); |
---|
1296 | 1350 | void wil6210_disconnect(struct wil6210_vif *vif, const u8 *bssid, |
---|
1297 | | - u16 reason_code, bool from_event); |
---|
| 1351 | + u16 reason_code); |
---|
| 1352 | +void wil6210_disconnect_complete(struct wil6210_vif *vif, const u8 *bssid, |
---|
| 1353 | + u16 reason_code); |
---|
1298 | 1354 | void wil_probe_client_flush(struct wil6210_vif *vif); |
---|
1299 | 1355 | void wil_probe_client_worker(struct work_struct *work); |
---|
1300 | 1356 | void wil_disconnect_worker(struct work_struct *work); |
---|
| 1357 | +void wil_enable_tx_key_worker(struct work_struct *work); |
---|
1301 | 1358 | |
---|
1302 | 1359 | void wil_init_txrx_ops(struct wil6210_priv *wil); |
---|
1303 | 1360 | |
---|
.. | .. |
---|
1314 | 1371 | struct wil_ring *ring, bool check_stop); |
---|
1315 | 1372 | netdev_tx_t wil_start_xmit(struct sk_buff *skb, struct net_device *ndev); |
---|
1316 | 1373 | int wil_tx_complete(struct wil6210_vif *vif, int ringid); |
---|
| 1374 | +void wil_tx_complete_handle_eapol(struct wil6210_vif *vif, |
---|
| 1375 | + struct sk_buff *skb); |
---|
1317 | 1376 | void wil6210_unmask_irq_tx(struct wil6210_priv *wil); |
---|
1318 | 1377 | void wil6210_unmask_irq_tx_edma(struct wil6210_priv *wil); |
---|
1319 | 1378 | |
---|
.. | .. |
---|
1321 | 1380 | void wil_rx_handle(struct wil6210_priv *wil, int *quota); |
---|
1322 | 1381 | void wil6210_unmask_irq_rx(struct wil6210_priv *wil); |
---|
1323 | 1382 | void wil6210_unmask_irq_rx_edma(struct wil6210_priv *wil); |
---|
| 1383 | +void wil_set_crypto_rx(u8 key_index, enum wmi_key_usage key_usage, |
---|
| 1384 | + struct wil_sta_info *cs, |
---|
| 1385 | + struct key_params *params); |
---|
1324 | 1386 | |
---|
1325 | 1387 | int wil_iftype_nl2wmi(enum nl80211_iftype type); |
---|
1326 | 1388 | |
---|
.. | .. |
---|
1356 | 1418 | int wmi_mgmt_tx(struct wil6210_vif *vif, const u8 *buf, size_t len); |
---|
1357 | 1419 | int wmi_mgmt_tx_ext(struct wil6210_vif *vif, const u8 *buf, size_t len, |
---|
1358 | 1420 | u8 channel, u16 duration_ms); |
---|
| 1421 | +int wmi_rbufcap_cfg(struct wil6210_priv *wil, bool enable, u16 threshold); |
---|
| 1422 | + |
---|
| 1423 | +int wil_wmi2spec_ch(u8 wmi_ch, u8 *spec_ch); |
---|
| 1424 | +int wil_spec2wmi_ch(u8 spec_ch, u8 *wmi_ch); |
---|
| 1425 | +void wil_update_supported_bands(struct wil6210_priv *wil); |
---|
1359 | 1426 | |
---|
1360 | 1427 | int reverse_memcmp(const void *cs, const void *ct, size_t count); |
---|
1361 | 1428 | |
---|
.. | .. |
---|
1372 | 1439 | u8 tid, u8 token, u16 status, bool amsdu, |
---|
1373 | 1440 | u16 agg_wsize, u16 timeout); |
---|
1374 | 1441 | |
---|
| 1442 | +void update_supported_bands(struct wil6210_priv *wil); |
---|
| 1443 | + |
---|
| 1444 | +void wil_clear_fw_log_addr(struct wil6210_priv *wil); |
---|
| 1445 | +int wmi_set_cqm_rssi_config(struct wil6210_priv *wil, |
---|
| 1446 | + s32 rssi_thold, u32 rssi_hyst); |
---|
1375 | 1447 | #endif /* __WIL6210_H__ */ |
---|