| .. | .. |
|---|
| 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__ */ |
|---|