1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (c) 2012 - 2018 Microchip Technology Inc., and its subsidiaries. 4 * All rights reserved. 5 */ 6 7 #ifndef WILC_FW_H 8 #define WILC_FW_H 9 10 #include <linux/ieee80211.h> 11 12 #define WILC_MAX_NUM_STA 9 13 #define WILC_MAX_RATES_SUPPORTED 12 14 #define WILC_MAX_NUM_PMKIDS 16 15 #define WILC_MAX_NUM_SCANNED_CH 14 16 17 struct wilc_assoc_resp { 18 __le16 capab_info; 19 __le16 status_code; 20 __le16 aid; 21 } __packed; 22 23 struct wilc_pmkid { 24 u8 bssid[ETH_ALEN]; 25 u8 pmkid[WLAN_PMKID_LEN]; 26 } __packed; 27 28 struct wilc_pmkid_attr { 29 u8 numpmkid; 30 struct wilc_pmkid pmkidlist[WILC_MAX_NUM_PMKIDS]; 31 } __packed; 32 33 struct wilc_reg_frame { 34 u8 reg; 35 u8 reg_id; 36 __le16 frame_type; 37 } __packed; 38 39 struct wilc_drv_handler { 40 __le32 handler; 41 u8 mode; 42 } __packed; 43 44 struct wilc_sta_wpa_ptk { 45 u8 mac_addr[ETH_ALEN]; 46 u8 key_len; 47 u8 key[]; 48 } __packed; 49 50 struct wilc_ap_wpa_ptk { 51 u8 mac_addr[ETH_ALEN]; 52 u8 index; 53 u8 key_len; 54 u8 key[]; 55 } __packed; 56 57 struct wilc_gtk_key { 58 u8 mac_addr[ETH_ALEN]; 59 u8 rsc[8]; 60 u8 index; 61 u8 key_len; 62 u8 key[]; 63 } __packed; 64 65 struct wilc_op_mode { 66 __le32 mode; 67 } __packed; 68 69 struct wilc_noa_opp_enable { 70 u8 ct_window; 71 u8 cnt; 72 __le32 duration; 73 __le32 interval; 74 __le32 start_time; 75 } __packed; 76 77 struct wilc_noa_opp_disable { 78 u8 cnt; 79 __le32 duration; 80 __le32 interval; 81 __le32 start_time; 82 } __packed; 83 84 struct wilc_join_bss_param { 85 char ssid[IEEE80211_MAX_SSID_LEN]; 86 u8 ssid_terminator; 87 u8 bss_type; 88 u8 ch; 89 __le16 cap_info; 90 u8 sa[ETH_ALEN]; 91 u8 bssid[ETH_ALEN]; 92 __le16 beacon_period; 93 u8 dtim_period; 94 u8 supp_rates[WILC_MAX_RATES_SUPPORTED + 1]; 95 u8 wmm_cap; 96 u8 uapsd_cap; 97 u8 ht_capable; 98 u8 rsn_found; 99 u8 rsn_grp_policy; 100 u8 mode_802_11i; 101 u8 p_suites[3]; 102 u8 akm_suites[3]; 103 u8 rsn_cap[2]; 104 u8 noa_enabled; 105 __le32 tsf_lo; 106 u8 idx; 107 u8 opp_enabled; 108 union { 109 struct wilc_noa_opp_disable opp_dis; 110 struct wilc_noa_opp_enable opp_en; 111 }; 112 } __packed; 113 114 struct wilc_external_auth_param { 115 u8 action; 116 u8 bssid[ETH_ALEN]; 117 u8 ssid[IEEE80211_MAX_SSID_LEN]; 118 u8 ssid_len; 119 __le32 key_mgmt_suites; 120 __le16 status; 121 } __packed; 122 #endif 123