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