144 lines · c
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_H8#define WILC_FW_H9 10#include <linux/ieee80211.h>11 12#define WILC_MAX_NUM_STA 913#define WILC_MAX_RATES_SUPPORTED 1214#define WILC_MAX_NUM_PMKIDS 1615#define WILC_MAX_NUM_SCANNED_CH 1416#define WILC_NVMEM_MAX_NUM_BANK 617#define WILC_NVMEM_BANK_BASE 0x3000000018#define WILC_NVMEM_LOW_BANK_OFFSET 0x102c19#define WILC_NVMEM_HIGH_BANK_OFFSET 0x138020#define WILC_NVMEM_IS_BANK_USED BIT(31)21#define WILC_NVMEM_IS_BANK_INVALID BIT(30)22 23struct wilc_assoc_resp {24 __le16 capab_info;25 __le16 status_code;26 __le16 aid;27} __packed;28 29struct wilc_pmkid {30 u8 bssid[ETH_ALEN];31 u8 pmkid[WLAN_PMKID_LEN];32} __packed;33 34struct wilc_pmkid_attr {35 u8 numpmkid;36 struct wilc_pmkid pmkidlist[WILC_MAX_NUM_PMKIDS];37} __packed;38 39struct wilc_reg_frame {40 u8 reg;41 u8 reg_id;42 __le16 frame_type;43} __packed;44 45struct wilc_drv_handler {46 __le32 handler;47 u8 mode;48} __packed;49 50struct wilc_sta_wpa_ptk {51 u8 mac_addr[ETH_ALEN];52 u8 key_len;53 u8 key[];54} __packed;55 56struct wilc_ap_wpa_ptk {57 u8 mac_addr[ETH_ALEN];58 u8 index;59 u8 key_len;60 u8 key[];61} __packed;62 63struct wilc_wpa_igtk {64 u8 index;65 u8 pn_len;66 u8 pn[6];67 u8 key_len;68 u8 key[];69} __packed;70 71struct wilc_gtk_key {72 u8 mac_addr[ETH_ALEN];73 u8 rsc[8];74 u8 index;75 u8 key_len;76 u8 key[];77} __packed;78 79struct wilc_op_mode {80 __le32 mode;81} __packed;82 83struct wilc_noa_opp_enable {84 u8 ct_window;85 u8 cnt;86 __le32 duration;87 __le32 interval;88 __le32 start_time;89} __packed;90 91struct wilc_noa_opp_disable {92 u8 cnt;93 __le32 duration;94 __le32 interval;95 __le32 start_time;96} __packed;97 98struct wilc_join_bss_param {99 char ssid[IEEE80211_MAX_SSID_LEN];100 u8 ssid_terminator;101 u8 bss_type;102 u8 ch;103 __le16 cap_info;104 u8 sa[ETH_ALEN];105 u8 bssid[ETH_ALEN];106 __le16 beacon_period;107 u8 dtim_period;108 u8 supp_rates[WILC_MAX_RATES_SUPPORTED + 1];109 u8 wmm_cap;110 u8 uapsd_cap;111 u8 ht_capable;112 u8 rsn_found;113 u8 rsn_grp_policy;114 u8 mode_802_11i;115 u8 p_suites[3];116 u8 akm_suites[3];117 u8 rsn_cap[2];118 u8 noa_enabled;119 __le32 tsf_lo;120 u8 idx;121 u8 opp_enabled;122 union {123 struct wilc_noa_opp_disable opp_dis;124 struct wilc_noa_opp_enable opp_en;125 };126} __packed;127 128struct wilc_external_auth_param {129 u8 action;130 u8 bssid[ETH_ALEN];131 u8 ssid[IEEE80211_MAX_SSID_LEN];132 u8 ssid_len;133 __le32 key_mgmt_suites;134 __le16 status;135} __packed;136 137static inline u32 get_bank_offset_from_bank_index(unsigned int i)138{139 return (((i) < 2) ? WILC_NVMEM_LOW_BANK_OFFSET + ((i) * 32) :140 WILC_NVMEM_HIGH_BANK_OFFSET + ((i) - 2) * 16);141}142 143#endif144