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