brintos

brintos / linux-shallow public Read only

0
0
Text · 9.2 KiB · 516159b Raw
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