482 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * NXP Wireless LAN device driver: ioctl data structures & APIs4 *5 * Copyright 2011-2020 NXP6 */7 8#ifndef _MWIFIEX_IOCTL_H_9#define _MWIFIEX_IOCTL_H_10 11#include <net/lib80211.h>12 13enum {14 MWIFIEX_SCAN_TYPE_UNCHANGED = 0,15 MWIFIEX_SCAN_TYPE_ACTIVE,16 MWIFIEX_SCAN_TYPE_PASSIVE17};18 19struct mwifiex_user_scan {20 u32 scan_cfg_len;21 u8 scan_cfg_buf[1];22};23 24#define MWIFIEX_PROMISC_MODE 125#define MWIFIEX_MULTICAST_MODE 226#define MWIFIEX_ALL_MULTI_MODE 427#define MWIFIEX_MAX_MULTICAST_LIST_SIZE 3228 29struct mwifiex_multicast_list {30 u32 mode;31 u32 num_multicast_addr;32 u8 mac_list[MWIFIEX_MAX_MULTICAST_LIST_SIZE][ETH_ALEN];33};34 35struct mwifiex_chan_freq {36 u32 channel;37 u32 freq;38};39 40struct mwifiex_ssid_bssid {41 struct cfg80211_ssid ssid;42 u8 bssid[ETH_ALEN];43};44 45enum {46 BAND_B = 1,47 BAND_G = 2,48 BAND_A = 4,49 BAND_GN = 8,50 BAND_AN = 16,51 BAND_AAC = 32,52};53 54#define MWIFIEX_WPA_PASSHPHRASE_LEN 6455struct wpa_param {56 u8 pairwise_cipher_wpa;57 u8 pairwise_cipher_wpa2;58 u8 group_cipher;59 u32 length;60 u8 passphrase[MWIFIEX_WPA_PASSHPHRASE_LEN];61};62 63struct wep_key {64 u8 key_index;65 u8 is_default;66 u16 length;67 u8 key[WLAN_KEY_LEN_WEP104];68};69 70#define KEY_MGMT_ON_HOST 0x0371#define MWIFIEX_AUTH_MODE_AUTO 0xFF72#define BAND_CONFIG_BG 0x0073#define BAND_CONFIG_A 0x0174#define MWIFIEX_SEC_CHAN_BELOW 0x3075#define MWIFIEX_SEC_CHAN_ABOVE 0x1076#define MWIFIEX_SUPPORTED_RATES 1477#define MWIFIEX_SUPPORTED_RATES_EXT 3278#define MWIFIEX_TDLS_SUPPORTED_RATES 879#define MWIFIEX_TDLS_DEF_QOS_CAPAB 0xf80#define MWIFIEX_PRIO_BK 281#define MWIFIEX_PRIO_VI 582#define MWIFIEX_SUPPORTED_CHANNELS 283#define MWIFIEX_OPERATING_CLASSES 1684 85struct mwifiex_uap_bss_param {86 u8 channel;87 u8 band_cfg;88 u16 rts_threshold;89 u16 frag_threshold;90 u8 retry_limit;91 struct mwifiex_802_11_ssid ssid;92 u8 bcast_ssid_ctl;93 u8 radio_ctl;94 u8 dtim_period;95 u16 beacon_period;96 u16 auth_mode;97 u16 protocol;98 u16 key_mgmt;99 u16 key_mgmt_operation;100 struct wpa_param wpa_cfg;101 struct wep_key wep_cfg[NUM_WEP_KEYS];102 struct ieee80211_ht_cap ht_cap;103 struct ieee80211_vht_cap vht_cap;104 u8 rates[MWIFIEX_SUPPORTED_RATES];105 u32 sta_ao_timer;106 u32 ps_sta_ao_timer;107 u8 qos_info;108 u8 power_constraint;109 struct mwifiex_types_wmm_info wmm_info;110 u8 mac_addr[ETH_ALEN];111};112 113enum {114 ADHOC_IDLE,115 ADHOC_STARTED,116 ADHOC_JOINED,117 ADHOC_COALESCED118};119 120struct mwifiex_ds_get_stats {121 u32 mcast_tx_frame;122 u32 failed;123 u32 retry;124 u32 multi_retry;125 u32 frame_dup;126 u32 rts_success;127 u32 rts_failure;128 u32 ack_failure;129 u32 rx_frag;130 u32 mcast_rx_frame;131 u32 fcs_error;132 u32 tx_frame;133 u32 wep_icv_error[4];134 u32 bcn_rcv_cnt;135 u32 bcn_miss_cnt;136};137 138#define MWIFIEX_MAX_VER_STR_LEN 128139 140struct mwifiex_ver_ext {141 u32 version_str_sel;142 char version_str[MWIFIEX_MAX_VER_STR_LEN];143};144 145struct mwifiex_bss_info {146 u32 bss_mode;147 struct cfg80211_ssid ssid;148 u32 bss_chan;149 u8 country_code[3];150 u32 media_connected;151 u32 max_power_level;152 u32 min_power_level;153 u32 adhoc_state;154 signed int bcn_nf_last;155 u32 wep_status;156 u32 is_hs_configured;157 u32 is_deep_sleep;158 u8 bssid[ETH_ALEN];159};160 161struct mwifiex_sta_info {162 u8 peer_mac[ETH_ALEN];163 struct station_parameters *params;164};165 166#define MAX_NUM_TID 8167 168#define MAX_RX_WINSIZE 64169 170struct mwifiex_ds_rx_reorder_tbl {171 u16 tid;172 u8 ta[ETH_ALEN];173 u32 start_win;174 u32 win_size;175 u32 buffer[MAX_RX_WINSIZE];176};177 178struct mwifiex_ds_tx_ba_stream_tbl {179 u16 tid;180 u8 ra[ETH_ALEN];181 u8 amsdu;182};183 184#define DBG_CMD_NUM 5185#define MWIFIEX_DBG_SDIO_MP_NUM 10186 187struct tdls_peer_info {188 u8 peer_addr[ETH_ALEN];189};190 191struct mwifiex_debug_info {192 unsigned int debug_mask;193 u32 int_counter;194 u32 packets_out[MAX_NUM_TID];195 u32 tx_buf_size;196 u32 curr_tx_buf_size;197 u32 tx_tbl_num;198 struct mwifiex_ds_tx_ba_stream_tbl199 tx_tbl[MWIFIEX_MAX_TX_BASTREAM_SUPPORTED];200 u32 rx_tbl_num;201 struct mwifiex_ds_rx_reorder_tbl rx_tbl202 [MWIFIEX_MAX_RX_BASTREAM_SUPPORTED];203 u32 tdls_peer_num;204 struct tdls_peer_info tdls_list205 [MWIFIEX_MAX_TDLS_PEER_SUPPORTED];206 u16 ps_mode;207 u32 ps_state;208 u8 is_deep_sleep;209 u8 pm_wakeup_card_req;210 u32 pm_wakeup_fw_try;211 u8 is_hs_configured;212 u8 hs_activated;213 u32 num_cmd_host_to_card_failure;214 u32 num_cmd_sleep_cfm_host_to_card_failure;215 u32 num_tx_host_to_card_failure;216 u32 num_event_deauth;217 u32 num_event_disassoc;218 u32 num_event_link_lost;219 u32 num_cmd_deauth;220 u32 num_cmd_assoc_success;221 u32 num_cmd_assoc_failure;222 u32 num_tx_timeout;223 u8 is_cmd_timedout;224 u16 timeout_cmd_id;225 u16 timeout_cmd_act;226 u16 last_cmd_id[DBG_CMD_NUM];227 u16 last_cmd_act[DBG_CMD_NUM];228 u16 last_cmd_index;229 u16 last_cmd_resp_id[DBG_CMD_NUM];230 u16 last_cmd_resp_index;231 u16 last_event[DBG_CMD_NUM];232 u16 last_event_index;233 u8 data_sent;234 u8 cmd_sent;235 u8 cmd_resp_received;236 u8 event_received;237 u32 last_mp_wr_bitmap[MWIFIEX_DBG_SDIO_MP_NUM];238 u32 last_mp_wr_ports[MWIFIEX_DBG_SDIO_MP_NUM];239 u32 last_mp_wr_len[MWIFIEX_DBG_SDIO_MP_NUM];240 u32 last_mp_curr_wr_port[MWIFIEX_DBG_SDIO_MP_NUM];241 u8 last_sdio_mp_index;242};243 244#define MWIFIEX_KEY_INDEX_UNICAST 0x40000000245#define PN_LEN 16246 247struct mwifiex_ds_encrypt_key {248 u32 key_disable;249 u32 key_index;250 u32 key_len;251 u8 key_material[WLAN_MAX_KEY_LEN];252 u8 mac_addr[ETH_ALEN];253 u32 is_wapi_key;254 u8 pn[PN_LEN]; /* packet number */255 u8 pn_len;256 u8 is_igtk_key;257 u8 is_current_wep_key;258 u8 is_rx_seq_valid;259 u8 is_igtk_def_key;260};261 262struct mwifiex_power_cfg {263 u32 is_power_auto;264 u32 is_power_fixed;265 u32 power_level;266};267 268struct mwifiex_ds_hs_cfg {269 u32 is_invoke_hostcmd;270 /* Bit0: non-unicast data271 * Bit1: unicast data272 * Bit2: mac events273 * Bit3: magic packet274 */275 u32 conditions;276 u32 gpio;277 u32 gap;278};279 280struct mwifiex_ds_wakeup_reason {281 u16 hs_wakeup_reason;282};283 284#define DEEP_SLEEP_ON 1285#define DEEP_SLEEP_OFF 0286#define DEEP_SLEEP_IDLE_TIME 100287#define PS_MODE_AUTO 1288 289struct mwifiex_ds_auto_ds {290 u16 auto_ds;291 u16 idle_time;292};293 294struct mwifiex_ds_pm_cfg {295 union {296 u32 ps_mode;297 struct mwifiex_ds_hs_cfg hs_cfg;298 struct mwifiex_ds_auto_ds auto_deep_sleep;299 u32 sleep_period;300 } param;301};302 303struct mwifiex_11ac_vht_cfg {304 u8 band_config;305 u8 misc_config;306 u32 cap_info;307 u32 mcs_tx_set;308 u32 mcs_rx_set;309};310 311struct mwifiex_ds_11n_tx_cfg {312 u16 tx_htcap;313 u16 tx_htinfo;314 u16 misc_config; /* Needed for 802.11AC cards only */315};316 317struct mwifiex_ds_11n_amsdu_aggr_ctrl {318 u16 enable;319 u16 curr_buf_size;320};321 322struct mwifiex_ds_ant_cfg {323 u32 tx_ant;324 u32 rx_ant;325};326 327#define MWIFIEX_NUM_OF_CMD_BUFFER 50328#define MWIFIEX_SIZE_OF_CMD_BUFFER 2048329 330enum {331 MWIFIEX_IE_TYPE_GEN_IE = 0,332 MWIFIEX_IE_TYPE_ARP_FILTER,333};334 335enum {336 MWIFIEX_REG_MAC = 1,337 MWIFIEX_REG_BBP,338 MWIFIEX_REG_RF,339 MWIFIEX_REG_PMIC,340 MWIFIEX_REG_CAU,341};342 343struct mwifiex_ds_reg_rw {344 u32 type;345 u32 offset;346 u32 value;347};348 349#define MAX_EEPROM_DATA 256350 351struct mwifiex_ds_read_eeprom {352 u16 offset;353 u16 byte_count;354 u8 value[MAX_EEPROM_DATA];355};356 357struct mwifiex_ds_mem_rw {358 u32 addr;359 u32 value;360};361 362#define IEEE_MAX_IE_SIZE 256363 364#define MWIFIEX_IE_HDR_SIZE (sizeof(struct mwifiex_ie) - IEEE_MAX_IE_SIZE)365 366struct mwifiex_ds_misc_gen_ie {367 u32 type;368 u32 len;369 u8 ie_data[IEEE_MAX_IE_SIZE];370};371 372struct mwifiex_ds_misc_cmd {373 u32 len;374 u8 cmd[MWIFIEX_SIZE_OF_CMD_BUFFER];375};376 377#define BITMASK_BCN_RSSI_LOW BIT(0)378#define BITMASK_BCN_RSSI_HIGH BIT(4)379 380enum subsc_evt_rssi_state {381 EVENT_HANDLED,382 RSSI_LOW_RECVD,383 RSSI_HIGH_RECVD384};385 386struct subsc_evt_cfg {387 u8 abs_value;388 u8 evt_freq;389};390 391struct mwifiex_ds_misc_subsc_evt {392 u16 action;393 u16 events;394 struct subsc_evt_cfg bcn_l_rssi_cfg;395 struct subsc_evt_cfg bcn_h_rssi_cfg;396};397 398#define MWIFIEX_MEF_MAX_BYTESEQ 6 /* non-adjustable */399#define MWIFIEX_MEF_MAX_FILTERS 10400 401struct mwifiex_mef_filter {402 u16 repeat;403 u16 offset;404 s8 byte_seq[MWIFIEX_MEF_MAX_BYTESEQ + 1];405 u8 filt_type;406 u8 filt_action;407};408 409struct mwifiex_mef_entry {410 u8 mode;411 u8 action;412 struct mwifiex_mef_filter filter[MWIFIEX_MEF_MAX_FILTERS];413};414 415struct mwifiex_ds_mef_cfg {416 u32 criteria;417 u16 num_entries;418 struct mwifiex_mef_entry *mef_entry;419};420 421#define MWIFIEX_MAX_VSIE_LEN (256)422#define MWIFIEX_MAX_VSIE_NUM (8)423#define MWIFIEX_VSIE_MASK_CLEAR 0x00424#define MWIFIEX_VSIE_MASK_SCAN 0x01425#define MWIFIEX_VSIE_MASK_ASSOC 0x02426#define MWIFIEX_VSIE_MASK_ADHOC 0x04427#define MWIFIEX_VSIE_MASK_BGSCAN 0x08428 429enum {430 MWIFIEX_FUNC_INIT = 1,431 MWIFIEX_FUNC_SHUTDOWN,432};433 434enum COALESCE_OPERATION {435 RECV_FILTER_MATCH_TYPE_EQ = 0x80,436 RECV_FILTER_MATCH_TYPE_NE,437};438 439enum COALESCE_PACKET_TYPE {440 PACKET_TYPE_UNICAST = 1,441 PACKET_TYPE_MULTICAST = 2,442 PACKET_TYPE_BROADCAST = 3443};444 445#define MWIFIEX_COALESCE_MAX_RULES 8446#define MWIFIEX_COALESCE_MAX_BYTESEQ 4 /* non-adjustable */447#define MWIFIEX_COALESCE_MAX_FILTERS 4448#define MWIFIEX_MAX_COALESCING_DELAY 100 /* in msecs */449 450struct filt_field_param {451 u8 operation;452 u8 operand_len;453 u16 offset;454 u8 operand_byte_stream[MWIFIEX_COALESCE_MAX_BYTESEQ];455};456 457struct mwifiex_coalesce_rule {458 u16 max_coalescing_delay;459 u8 num_of_fields;460 u8 pkt_type;461 struct filt_field_param params[MWIFIEX_COALESCE_MAX_FILTERS];462};463 464struct mwifiex_ds_coalesce_cfg {465 u16 num_of_rules;466 struct mwifiex_coalesce_rule rule[MWIFIEX_COALESCE_MAX_RULES];467};468 469struct mwifiex_ds_tdls_oper {470 u16 tdls_action;471 u8 peer_mac[ETH_ALEN];472 u16 capability;473 u8 qos_info;474 u8 *ext_capab;475 u8 ext_capab_len;476 u8 *supp_rates;477 u8 supp_rates_len;478 u8 *ht_capab;479};480 481#endif /* !_MWIFIEX_IOCTL_H_ */482