mirror of
https://github.com/nxp-imx/mwifiex.git
synced 2025-01-16 00:35:33 +00:00
bd8827d169
The sdk release is from NXP offial web: https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth/ 88w8997-wi-fi-dual-band-with-bluetooth-5-for-a-v-streaming-and-digital-tv:88W8997?tab=Design_Tools_Tab The release file is: PCIE-WLAN-UART-BT-8997-U16-X86-W16.68.10.p16-16.26.10.p16-C4X16640_V4-MGPL The sdk version is: W16.68.10.p16 Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
791 lines
22 KiB
C
Executable file
791 lines
22 KiB
C
Executable file
/** @file mlanconfig.h
|
|
*
|
|
* @brief This file contains definitions for application
|
|
*
|
|
* Copyright (C) 2008-2019, Marvell International Ltd.
|
|
*
|
|
* This software file (the "File") is distributed by Marvell International
|
|
* Ltd. under the terms of the GNU General Public License Version 2, June 1991
|
|
* (the "License"). You may use, redistribute and/or modify this File in
|
|
* accordance with the terms and conditions of the License, a copy of which
|
|
* is available by writing to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
|
|
* worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
|
*
|
|
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE EXPRESSLY DISCLAIMED. The License provides additional details about
|
|
* this warranty disclaimer.
|
|
*
|
|
*/
|
|
/************************************************************************
|
|
Change log:
|
|
11/26/2008: initial version
|
|
************************************************************************/
|
|
#ifndef _MLANCONFIG_H_
|
|
#define _MLANCONFIG_H_
|
|
|
|
/** Include header files */
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/ioctl.h>
|
|
#include <errno.h>
|
|
#include <linux/if.h>
|
|
#include <linux/wireless.h>
|
|
#include <sys/types.h>
|
|
#include <linux/if_ether.h>
|
|
#include <time.h>
|
|
|
|
#if (BYTE_ORDER == LITTLE_ENDIAN)
|
|
#undef BIG_ENDIAN_SUPPORT
|
|
#endif
|
|
|
|
/** Type definition: boolean */
|
|
typedef enum { FALSE, TRUE } boolean;
|
|
|
|
/**
|
|
* This macro specifies the attribute pack used for structure packing
|
|
*/
|
|
#ifndef __ATTRIB_PACK__
|
|
#define __ATTRIB_PACK__ __attribute__((packed))
|
|
#endif
|
|
|
|
/** 16 bits byte swap */
|
|
#define swap_byte_16(x) \
|
|
((t_u16)((((t_u16)(x) & 0x00ffU) << 8) | \
|
|
(((t_u16)(x) & 0xff00U) >> 8)))
|
|
|
|
/** 32 bits byte swap */
|
|
#define swap_byte_32(x) \
|
|
((t_u32)((((t_u32)(x) & 0x000000ffUL) << 24) | \
|
|
(((t_u32)(x) & 0x0000ff00UL) << 8) | \
|
|
(((t_u32)(x) & 0x00ff0000UL) >> 8) | \
|
|
(((t_u32)(x) & 0xff000000UL) >> 24)))
|
|
|
|
/** Convert to correct endian format */
|
|
#ifdef BIG_ENDIAN_SUPPORT
|
|
/** CPU to little-endian convert for 16-bit */
|
|
#define cpu_to_le16(x) swap_byte_16(x)
|
|
/** CPU to little-endian convert for 32-bit */
|
|
#define cpu_to_le32(x) swap_byte_32(x)
|
|
/** Little-endian to CPU convert for 16-bit */
|
|
#define le16_to_cpu(x) swap_byte_16(x)
|
|
/** Little-endian to CPU convert for 32-bit */
|
|
#define le32_to_cpu(x) swap_byte_32(x)
|
|
#else
|
|
/** Do nothing */
|
|
#define cpu_to_le16(x) (x)
|
|
/** Do nothing */
|
|
#define cpu_to_le32(x) (x)
|
|
/** Do nothing */
|
|
#define le16_to_cpu(x) (x)
|
|
/** Do nothing */
|
|
#define le32_to_cpu(x) (x)
|
|
#endif
|
|
|
|
/** Character, 1 byte */
|
|
typedef char t_s8;
|
|
/** Unsigned character, 1 byte */
|
|
typedef unsigned char t_u8;
|
|
|
|
/** Short integer */
|
|
typedef signed short t_s16;
|
|
/** Unsigned short integer */
|
|
typedef unsigned short t_u16;
|
|
|
|
/** Integer */
|
|
typedef signed int t_s32;
|
|
/** Unsigned integer */
|
|
typedef unsigned int t_u32;
|
|
|
|
/** Long long integer */
|
|
typedef signed long long t_s64;
|
|
/** Unsigned long long integer */
|
|
typedef unsigned long long t_u64;
|
|
|
|
/** Void pointer (4-bytes) */
|
|
typedef void t_void;
|
|
|
|
/** Success */
|
|
#define MLAN_STATUS_SUCCESS (0)
|
|
/** Failure */
|
|
#define MLAN_STATUS_FAILURE (-1)
|
|
|
|
t_s8 *mlan_config_get_line(FILE * fp, t_s8 *s, t_s32 size, int *line);
|
|
int get_priv_ioctl(char *ioctl_name, int *ioctl_val, int *subioctl_val);
|
|
int fparse_for_hex(FILE * fp, t_u8 *dst);
|
|
|
|
/**
|
|
* Hex or Decimal to Integer
|
|
* @param num string to convert into decimal or hex
|
|
*/
|
|
#define A2HEXDECIMAL(num) \
|
|
(strncasecmp("0x", (num), 2)?(unsigned int) strtoll((num),NULL,0):a2hex((num)))
|
|
|
|
/** Convert character to integer */
|
|
#define CHAR2INT(x) (((x) >= 'A') ? ((x) - 'A' + 10) : ((x) - '0'))
|
|
|
|
/** Convert TLV header from little endian format to CPU format */
|
|
#define endian_convert_tlv_header_in(x) \
|
|
{ \
|
|
(x)->tag = le16_to_cpu((x)->tag); \
|
|
(x)->length = le16_to_cpu((x)->length); \
|
|
}
|
|
|
|
/** Convert TLV header to little endian format from CPU format */
|
|
#define endian_convert_tlv_header_out(x) \
|
|
{ \
|
|
(x)->tag = cpu_to_le16((x)->tag); \
|
|
(x)->length = cpu_to_le16((x)->length); \
|
|
}
|
|
/** Private command ID to pass custom IE list */
|
|
#define CUSTOM_IE_CFG (SIOCDEVPRIVATE + 13)
|
|
/* TLV Definitions */
|
|
/** TLV header */
|
|
#define TLVHEADER /** Tag */ \
|
|
t_u16 tag; \
|
|
/** Length */ \
|
|
t_u16 length
|
|
|
|
/** Maximum IE buffer length */
|
|
#define MAX_IE_BUFFER_LEN 256
|
|
|
|
/** TLV: Management IE list */
|
|
#define MRVL_MGMT_IE_LIST_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x69) //0x0169
|
|
|
|
/** TLV: Max Management IE */
|
|
#define MRVL_MAX_MGMT_IE_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0xaa) //0x01aa
|
|
|
|
/** custom IE info */
|
|
typedef struct _custom_ie_info {
|
|
/** size of buffer */
|
|
t_u16 buf_size;
|
|
/** no of buffers of buf_size */
|
|
t_u16 buf_count;
|
|
} __ATTRIB_PACK__ custom_ie_info;
|
|
|
|
/** TLV buffer : custom IE */
|
|
typedef struct _tlvbuf_max_mgmt_ie {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** No of tuples */
|
|
t_u16 count;
|
|
/** custom IE info tuples */
|
|
custom_ie_info info[0];
|
|
} __ATTRIB_PACK__ tlvbuf_max_mgmt_ie;
|
|
|
|
/** custom IE */
|
|
typedef struct _custom_ie {
|
|
/** IE Index */
|
|
t_u16 ie_index;
|
|
/** Mgmt Subtype Mask */
|
|
t_u16 mgmt_subtype_mask;
|
|
/** IE Length */
|
|
t_u16 ie_length;
|
|
/** IE buffer */
|
|
t_u8 ie_buffer[0];
|
|
} __ATTRIB_PACK__ custom_ie;
|
|
|
|
/** TLV buffer : custom IE */
|
|
typedef struct _tlvbuf_custom_ie {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** custom IE data */
|
|
custom_ie ie_data[0];
|
|
} __ATTRIB_PACK__ tlvbuf_custom_ie;
|
|
|
|
/** Maximum length of lines in configuration file */
|
|
#define MAX_CONFIG_LINE 1024
|
|
/** Ethernet address length */
|
|
#define ETH_ALEN 6
|
|
/** MAC BROADCAST */
|
|
#define MAC_BROADCAST 0x1FF
|
|
/** MAC MULTICAST */
|
|
#define MAC_MULTICAST 0x1FE
|
|
|
|
/** pkt_header */
|
|
typedef struct _pkt_header {
|
|
/** pkt_len */
|
|
t_u32 pkt_len;
|
|
/** pkt_type */
|
|
t_u32 TxPktType;
|
|
/** tx control */
|
|
t_u32 TxControl;
|
|
} pkt_header;
|
|
|
|
/** wlan_802_11_header packet from FW with length */
|
|
typedef struct _wlan_mgmt_frame_tx {
|
|
/** Packet Length */
|
|
t_u16 frm_len;
|
|
/** Frame Control */
|
|
t_u16 frm_ctl;
|
|
/** Duration ID */
|
|
t_u16 duration_id;
|
|
/** Address1 */
|
|
t_u8 addr1[ETH_ALEN];
|
|
/** Address2 */
|
|
t_u8 addr2[ETH_ALEN];
|
|
/** Address3 */
|
|
t_u8 addr3[ETH_ALEN];
|
|
/** Sequence Control */
|
|
t_u16 seq_ctl;
|
|
/** Address4 */
|
|
t_u8 addr4[ETH_ALEN];
|
|
/** Frame payload */
|
|
t_u8 payload[0];
|
|
} __ATTRIB_PACK__ wlan_mgmt_frame_tx;
|
|
|
|
/** frame tx ioctl number */
|
|
#define FRAME_TX_IOCTL (SIOCDEVPRIVATE + 12)
|
|
|
|
/** band BG */
|
|
#define BAND_BG 0
|
|
/** band A */
|
|
#define BAND_A 1
|
|
/** secondary channel is above */
|
|
#define SECOND_CHANNEL_ABOVE 0x1
|
|
/** secondary channel is below */
|
|
#define SECOND_CHANNEL_BELOW 0x3
|
|
/** NO PERIODIC SWITCH */
|
|
#define NO_PERIODIC_SWITCH 0
|
|
/** Enable periodic channel switch */
|
|
#define ENABLE_PERIODIC_SWITCH 1
|
|
/** Min channel value for BG band */
|
|
#define MIN_BG_CHANNEL 1
|
|
/** Max channel value for BG band */
|
|
#define MAX_BG_CHANNEL 14
|
|
/** Max channel value for A band */
|
|
#define MIN_A_CHANNEL 36
|
|
/** Max channel value for A band */
|
|
#define MAX_A_CHANNEL 252
|
|
|
|
/** Host Command ioctl number */
|
|
#define TDLS_IOCTL (SIOCDEVPRIVATE + 5)
|
|
/** TDLS action definitions */
|
|
/** Action ID for TDLS config */
|
|
#define ACTION_TDLS_CONFIG 0x0000
|
|
/** Action ID for TDLS setinfo request */
|
|
#define ACTION_TDLS_SETINFO 0x0001
|
|
/** Action ID for TDLS Discovery request */
|
|
#define ACTION_TDLS_DISCOVERY 0x0002
|
|
/** Action ID for TDLS setup request */
|
|
#define ACTION_TDLS_SETUP 0x0003
|
|
/** Action ID for TDLS Teardown request */
|
|
#define ACTION_TDLS_TEARDOWN 0x0004
|
|
/** Action ID for TDLS power mode */
|
|
#define ACTION_TDLS_POWER_MODE 0x0005
|
|
/**Action ID for init TDLS Channel Switch*/
|
|
#define ACTION_TDLS_INIT_CHAN_SWITCH 0x06
|
|
/** Action ID for stop TDLS Channel Switch */
|
|
#define ACTION_TDLS_STOP_CHAN_SWITCH 0x07
|
|
/** Action ID for configure CS related parameters */
|
|
#define ACTION_TDLS_CS_PARAMS 0x08
|
|
/** Action ID for TDLS Disable Channel switch */
|
|
#define ACTION_TDLS_CS_DISABLE 0x09
|
|
/** Action ID for TDLS Link status */
|
|
#define ACTION_TDLS_LINK_STATUS 0x000A
|
|
/** Action ID for TDLS CS immediate return */
|
|
#define ACTION_TDLS_DEBUG_CS_RET_IM 0xFFF7
|
|
/** Action ID for TDLS Stop RX */
|
|
#define ACTION_TDLS_DEBUG_STOP_RX 0xFFF8
|
|
/** Action ID for TDLS Allow weak security */
|
|
#define ACTION_TDLS_DEBUG_ALLOW_WEAK_SECURITY 0xFFF9
|
|
/** Action ID for TDLS Ignore key lifetime expiry */
|
|
#define ACTION_TDLS_DEBUG_IGNORE_KEY_EXPIRY 0xFFFA
|
|
/** Action ID for TDLS Higher/Lower mac Test */
|
|
#define ACTION_TDLS_DEBUG_HIGHER_LOWER_MAC 0xFFFB
|
|
/** Action ID for TDLS Prohibited Test */
|
|
#define ACTION_TDLS_DEBUG_SETUP_PROHIBITED 0xFFFC
|
|
/** Action ID for TDLS Existing link Test */
|
|
#define ACTION_TDLS_DEBUG_SETUP_SAME_LINK 0xFFFD
|
|
/** Action ID for TDLS Fail Setup Confirm */
|
|
#define ACTION_TDLS_DEBUG_FAIL_SETUP_CONFIRM 0xFFFE
|
|
/** Action ID for TDLS WRONG BSS Test */
|
|
#define ACTION_TDLS_DEBUG_WRONG_BSS 0xFFFF
|
|
|
|
/** TLV type : Rates */
|
|
#define TLV_TYPE_RATES 0x0001
|
|
/** TLV type : Domain */
|
|
#define TLV_TYPE_DOMAIN 0x0007
|
|
/** TLV type : Supported channels */
|
|
#define TLV_TYPE_SUPPORTED_CHANNELS 0x0024
|
|
/** TLV type : HT Capabilities */
|
|
#define TLV_TYPE_HT_CAP 0x002d
|
|
/** TLV type : Qos Info */
|
|
#define TLV_TYPE_QOSINFO 0x002e
|
|
/** TLV type : RSN IE */
|
|
#define TLV_TYPE_RSN_IE 0x0030
|
|
/** TLV type : extended supported rates */
|
|
#define TLV_EXTENDED_SUPPORTED_RATES 0x0032
|
|
/** TLV type : timeout interval */
|
|
#define TLV_TIMEOUT_INTERVAL 0x0038
|
|
/** TLV type : Regulatory classes */
|
|
#define TLV_TYPE_REGULATORY_CLASSES 0x003b
|
|
/** TLV type : HT Information */
|
|
#define TLV_TYPE_HT_INFO 0x003d
|
|
/** TLV type : 20/40 BSS Coexistence */
|
|
#define TLV_TYPE_2040BSS_COEXISTENCE 0x0048
|
|
/** TLv Type : Link identifier */
|
|
#define TLV_LINK_IDENTIFIER 0x0065
|
|
/** TLV type : Extended capabilities */
|
|
#define TLV_TYPE_EXTCAP 0x007f
|
|
|
|
/** TLV type : VHT capabilities */
|
|
#define TLV_TYPE_VHT_CAP 0x00BF
|
|
/** TLV type : VHT operations */
|
|
#define TLV_TYPE_VHT_OPER 0x00C0
|
|
/** Length of Basic MCS MAP */
|
|
#define VHT_MCS_MAP_LEN 2
|
|
|
|
/** Country code length */
|
|
#define COUNTRY_CODE_LEN 3
|
|
/** Length of Group Cipher Suite */
|
|
#define GROUP_CIPHER_SUITE_LEN 4
|
|
/** Length of Pairwise Cipher Suite */
|
|
#define PAIRWISE_CIPHER_SUITE_LEN 4
|
|
/** Length of AKM Suite */
|
|
#define AKM_SUITE_LEN 4
|
|
/** PMKID length */
|
|
#define PMKID_LEN 16
|
|
/** Maximum number of pairwise_cipher_suite */
|
|
#define MAX_PAIRWISE_CIPHER_SUITE_COUNT 2
|
|
/** Maximum number of AKM suite */
|
|
#define MAX_AKM_SUITE_COUNT 2
|
|
/** Maximum number of PMKID list count */
|
|
#define MAX_PMKID_COUNT 2
|
|
/** Length of MCS set */
|
|
#define MCS_SET_LEN 16
|
|
/** Version in RSN IE */
|
|
#define VERSION_RSN_IE 0x0001
|
|
|
|
/** tdls setinfo */
|
|
typedef struct _tdls_setinfo {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** (TLV + capInfo) length */
|
|
t_u16 tlv_len;
|
|
/** Capability Info */
|
|
t_u16 cap_info;
|
|
/** tdls info */
|
|
t_u8 tlv_buffer[0];
|
|
} __ATTRIB_PACK__ tdls_setinfo;
|
|
|
|
/** tdls discovery */
|
|
typedef struct _tdls_discovery {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Peer MAC address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
} __ATTRIB_PACK__ tdls_discovery;
|
|
|
|
/** tdls link status */
|
|
typedef struct _tdls_links_status {
|
|
/** Action */
|
|
t_u16 action;
|
|
} __ATTRIB_PACK__ tdls_link_status;
|
|
|
|
/** tdls discovery response */
|
|
typedef struct _tdls_discovery_resp {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** payload length */
|
|
t_u16 payload_len;
|
|
/** peer mac Address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
/** RSSI */
|
|
signed char rssi;
|
|
/** Cap Info */
|
|
t_u16 cap_info;
|
|
/** TLV buffer */
|
|
t_u8 tlv_buffer[0];
|
|
} __ATTRIB_PACK__ tdls_discovery_resp;
|
|
|
|
/** tdls each link rate information */
|
|
typedef struct _tdls_link_rate_info {
|
|
/** Tx Data Rate */
|
|
t_u8 tx_data_rate;
|
|
/** Tx Rate HT info*/
|
|
t_u8 tx_rate_htinfo;
|
|
} __ATTRIB_PACK__ tdls_link_rate_info;
|
|
|
|
/** tdls each link status */
|
|
typedef struct _tdls_each_link_status {
|
|
/** peer mac Address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
/** Link Flags */
|
|
t_u8 link_flags;
|
|
/** Traffic Status */
|
|
t_u8 traffic_status;
|
|
/** Tx Failure Count */
|
|
t_u8 tx_fail_count;
|
|
/** Channel Number */
|
|
t_u32 active_channel;
|
|
/** Last Data RSSI in dBm */
|
|
t_s16 data_rssi_last;
|
|
/** Last Data NF in dBm */
|
|
t_s16 data_nf_last;
|
|
/** AVG DATA RSSI in dBm */
|
|
t_s16 data_rssi_avg;
|
|
/** AVG DATA NF in dBm */
|
|
t_s16 data_nf_avg;
|
|
union {
|
|
/** tdls rate info */
|
|
tdls_link_rate_info rate_info;
|
|
/** final rate value*/
|
|
t_u16 final_data_rate;
|
|
} u;
|
|
/** Security Method */
|
|
t_u8 security_method;
|
|
/** Key Lifetime */
|
|
t_u32 key_lifetime;
|
|
/** Key Length */
|
|
t_u8 key_length;
|
|
/** actual key */
|
|
t_u8 key[0];
|
|
} __ATTRIB_PACK__ tdls_each_link_status;
|
|
|
|
/** tdls link status response */
|
|
typedef struct _tdls_link_status_resp {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** payload length */
|
|
t_u16 payload_len;
|
|
/** number of links */
|
|
t_u8 active_links;
|
|
/** structure for link status */
|
|
tdls_each_link_status link_stats[1];
|
|
} __ATTRIB_PACK__ tdls_link_status_resp;
|
|
|
|
/** tdls setup */
|
|
typedef struct _tdls_setup {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Peer MAC address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
/** Time to wait for response from peer*/
|
|
t_u32 wait_time;
|
|
/** Key Life Time */
|
|
t_u32 key_life_time;
|
|
} __ATTRIB_PACK__ tdls_setup;
|
|
|
|
/** tdls tear down */
|
|
typedef struct _tdls_tear_down {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Peer MAC address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
/** Reason code */
|
|
t_u16 reason_code;
|
|
} __ATTRIB_PACK__ tdls_teardown;
|
|
|
|
/** tdls power mode */
|
|
typedef struct _tdls_power_mode {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Peer MAC address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
/** Power mode */
|
|
t_u16 power_mode;
|
|
} __ATTRIB_PACK__ tdls_powermode;
|
|
|
|
/** tdls channel switch info */
|
|
typedef struct _tdls_channel_switch {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** peer mac Address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
/** Channel Switch primary channel no */
|
|
t_u8 primary_channel;
|
|
/** Channel Switch secondary channel offset */
|
|
t_u8 secondary_channel_offset;
|
|
/** Channel Switch Band */
|
|
t_u8 band;
|
|
/** Channel Switch time*/
|
|
t_u16 switch_time;
|
|
/** Channel Switch timeout*/
|
|
t_u16 switch_timeout;
|
|
/** Channel Regulatory class*/
|
|
t_u8 regulatory_class;
|
|
/** Channel Switch periodicity*/
|
|
t_u8 periodicity;
|
|
} __ATTRIB_PACK__ tdls_channel_switch;
|
|
|
|
/** tdls stop channel switch */
|
|
typedef struct _tdls_stop_chan_switch {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Peer MAC address */
|
|
t_u8 peer_mac[ETH_ALEN];
|
|
} __ATTRIB_PACK__ tdls_stop_chan_switch;
|
|
|
|
/** tdls disable channel switch */
|
|
typedef struct _tdls_disable_cs {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Data*/
|
|
t_u16 data;
|
|
} __ATTRIB_PACK__ tdls_disable_cs, tdls_config;
|
|
|
|
/** tdls channel switch parameters */
|
|
typedef struct _tdls_cs_params {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** unit time, multiples of 10ms */
|
|
t_u8 unit_time;
|
|
/** threshold for other link */
|
|
t_u8 threshold_otherlink;
|
|
/** threshold for direct link */
|
|
t_u8 threshold_directlink;
|
|
} __ATTRIB_PACK__ tdls_cs_params;
|
|
|
|
/** tdls debug */
|
|
typedef struct _tdls_debug {
|
|
/** Action */
|
|
t_u16 action;
|
|
/** Data */
|
|
t_u8 data[0];
|
|
} __ATTRIB_PACK__ tdls_debug;
|
|
|
|
/** TLV header */
|
|
#define TLVHEADER /** Tag */ \
|
|
t_u16 tag; \
|
|
/** Length */ \
|
|
t_u16 length
|
|
|
|
/** Length of TLV header */
|
|
#define TLVHEADER_LEN 4
|
|
|
|
/** Data structure for subband set */
|
|
typedef struct _IEEEtypes_SubbandSet_t {
|
|
/** First channel */
|
|
t_u8 first_chan;
|
|
/** Number of channels */
|
|
t_u8 no_of_chan;
|
|
/** Maximum Tx power */
|
|
t_u8 max_tx_pwr;
|
|
} __ATTRIB_PACK__ IEEEtypes_SubbandSet_t, *pIEEEtypes_SubbandSet_t;
|
|
|
|
/** tlvbuf_DomainParamSet_t */
|
|
typedef struct _tlvbuf_DomainParamSet {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** Country code */
|
|
t_u8 country_code[COUNTRY_CODE_LEN];
|
|
/** Set of subbands */
|
|
IEEEtypes_SubbandSet_t sub_band[0];
|
|
} __ATTRIB_PACK__ tlvbuf_DomainParamSet_t;
|
|
|
|
/** Data structure of WMM QoS information */
|
|
typedef struct _IEEEtypes_WmmQosInfo_t {
|
|
#ifdef BIG_ENDIAN_SUPPORT
|
|
/** QoS UAPSD */
|
|
t_u8 qos_uapsd:1;
|
|
/** Reserved */
|
|
t_u8 reserved:3;
|
|
/** Parameter set count */
|
|
t_u8 para_set_count:4;
|
|
#else
|
|
/** Parameter set count */
|
|
t_u8 para_set_count:4;
|
|
/** Reserved */
|
|
t_u8 reserved:3;
|
|
/** QoS UAPSD */
|
|
t_u8 qos_uapsd:1;
|
|
#endif /* BIG_ENDIAN_SUPPORT */
|
|
} __ATTRIB_PACK__ IEEEtypes_WmmQosInfo_t;
|
|
|
|
/** Qos Info TLV */
|
|
typedef struct _tlvbuf_QosInfo_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** QosInfo */
|
|
union {
|
|
/** QosInfo bitfield */
|
|
IEEEtypes_WmmQosInfo_t qos_info;
|
|
/** QosInfo byte */
|
|
t_u8 qos_info_byte;
|
|
} u;
|
|
} __ATTRIB_PACK__ tlvbuf_QosInfo_t;
|
|
|
|
/** HT Capabilities Data */
|
|
typedef struct _HTCap_t {
|
|
/** HT Capabilities Info field */
|
|
t_u16 ht_cap_info;
|
|
/** A-MPDU Parameters field */
|
|
t_u8 ampdu_param;
|
|
/** Supported MCS Set field */
|
|
t_u8 supported_mcs_set[16];
|
|
/** HT Extended Capabilities field */
|
|
t_u16 ht_ext_cap;
|
|
/** Transmit Beamforming Capabilities field */
|
|
t_u32 tx_bf_cap;
|
|
/** Antenna Selection Capability field */
|
|
t_u8 asel;
|
|
} __ATTRIB_PACK__ HTCap_t, *pHTCap_t;
|
|
|
|
/** HT Information Data */
|
|
typedef struct _HTInfo_t {
|
|
/** Primary channel */
|
|
t_u8 pri_chan;
|
|
/** Field 2 */
|
|
t_u8 field2;
|
|
/** Field 3 */
|
|
t_u16 field3;
|
|
/** Field 4 */
|
|
t_u16 field4;
|
|
/** Bitmap indicating MCSs supported by all HT STAs in the BSS */
|
|
t_u8 basic_mcs_set[16];
|
|
} __ATTRIB_PACK__ HTInfo_t, *pHTInfo_t;
|
|
|
|
/** 20/40 BSS Coexistence Data */
|
|
typedef struct _BSSCo2040_t {
|
|
/** 20/40 BSS Coexistence value */
|
|
t_u8 bss_co_2040_value;
|
|
} __ATTRIB_PACK__ BSSCo2040_t, *pBSSCo2040_t;
|
|
|
|
/** HT Capabilities element */
|
|
typedef struct _tlvbuf_HTCap_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** HTCap struct */
|
|
HTCap_t ht_cap;
|
|
} __ATTRIB_PACK__ tlvbuf_HTCap_t;
|
|
|
|
/** HT Information element */
|
|
typedef struct _tlvbuf_HTInfo_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
|
|
/** HTInfo struct */
|
|
HTInfo_t ht_info;
|
|
} __ATTRIB_PACK__ tlvbuf_HTInfo_t;
|
|
|
|
/** VHT MCS rate set field, refer to 802.11ac */
|
|
typedef struct _VHT_MCS_set {
|
|
t_u16 rx_mcs_map;
|
|
t_u16 rx_max_rate; /* bit 29-31 reserved */
|
|
t_u16 tx_mcs_map;
|
|
t_u16 tx_max_rate; /* bit 61-63 reserved */
|
|
} __ATTRIB_PACK__ VHT_MCS_set_t, *pVHT_MCS_set_t;
|
|
|
|
typedef struct _VHT_capa {
|
|
t_u32 vht_cap_info;
|
|
VHT_MCS_set_t mcs_sets;
|
|
} __ATTRIB_PACK__ VHT_capa_t, *pVHT_capa_t;
|
|
|
|
/** VHT Capabilities IE */
|
|
typedef struct _IEEEtypes_VHTCap_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** VHTInfo struct */
|
|
VHT_capa_t vht_cap;
|
|
} __ATTRIB_PACK__ tlvbuf_VHTCap_t, *ptlvbuf_VHTCap_t;
|
|
|
|
/** VHT Operations IE */
|
|
typedef struct _IEEEtypes_VHTOprat_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** VHTOpra struct */
|
|
t_u8 chan_width;
|
|
t_u8 chan_cf1;
|
|
t_u8 chan_cf2;
|
|
/** Basic MCS set map, each 2 bits stands for a Nss */
|
|
t_u8 basic_mcs_map[VHT_MCS_MAP_LEN];
|
|
} __ATTRIB_PACK__ tlvbuf_VHTOpra_t, *ptlvbuf_VHTOpra_t;
|
|
|
|
/** 20/40 BSS Coexistence element */
|
|
typedef struct _tlvbuf_2040BSSCo_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
|
|
/** BSSCo2040_t struct */
|
|
BSSCo2040_t bss_co_2040;
|
|
} __ATTRIB_PACK__ tlvbuf_2040BSSCo_t;
|
|
|
|
/** Extended Capabilities element */
|
|
typedef struct _tlvbuf_ExtCap_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** ExtCap_t struct */
|
|
t_u8 ext_cap[0];
|
|
} __ATTRIB_PACK__ tlvbuf_ExtCap_t;
|
|
|
|
/** tlvbuf_RatesParamSet_t */
|
|
typedef struct _tlvbuf_RatesParamSet_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** Rates */
|
|
t_u8 rates[0];
|
|
} __ATTRIB_PACK__ tlvbuf_RatesParamSet_t;
|
|
|
|
/* IEEE Supported Channel sub-band description (7.3.2.19) */
|
|
/* Sub-band description used in the supported channels element. */
|
|
typedef struct _IEEEtypes_SupportChan_Subband_t {
|
|
t_u8 start_chan;/**< Starting channel in the subband */
|
|
t_u8 num_chans; /**< Number of channels in the subband */
|
|
|
|
} __ATTRIB_PACK__ IEEEtypes_SupportChan_Subband_t;
|
|
|
|
/* IEEE Supported Channel element (7.3.2.19) */
|
|
/**
|
|
* Sent in association requests. Details the sub-bands and number
|
|
* of channels supported in each subband
|
|
*/
|
|
typedef struct _tlvbuf_SupportedChannels_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/**< IEEE Element ID = 36 */
|
|
/** Configured sub-bands information in the element */
|
|
IEEEtypes_SupportChan_Subband_t subband[0];
|
|
} __ATTRIB_PACK__ tlvbuf_SupportedChannels_t;
|
|
|
|
/* IEEE Supported Regulatory Classes description (7.3.2.54) */
|
|
typedef struct _IEEEtypes_RegulatoryClass_t {
|
|
/** current regulatory class */
|
|
t_u8 cur_regulatory_class;
|
|
/** supported regulatory class list */
|
|
t_u8 regulatory_classes_list[0];
|
|
|
|
} __ATTRIB_PACK__ IEEEtypes_RegulatoryClass_t;
|
|
|
|
/* IEEE Supported Regulatory Classes TLV (7.3.2.54) */
|
|
typedef struct _tlvbuf_RegulatoryClass_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/**< IEEE Element ID = 59 */
|
|
/** supported regulatory class */
|
|
IEEEtypes_RegulatoryClass_t regulatory_class;
|
|
} __ATTRIB_PACK__ tlvbuf_RegulatoryClass_t;
|
|
|
|
/** tlvbuf_RsnParamSet_t */
|
|
typedef struct _tlvbuf_RsnParamSet_t {
|
|
/** Header */
|
|
TLVHEADER;
|
|
/** Version */
|
|
t_u16 version;
|
|
/** Group Cipher Suite */
|
|
t_u8 group_cipher_suite[4];
|
|
/** Pairwise Cipher Suite count */
|
|
t_u16 pairwise_cipher_count;
|
|
/** Pairwise Cipher Suite */
|
|
t_u8 pairwise_cipher_suite[0];
|
|
/** AKM Suite Sount */
|
|
t_u16 akm_suite_count;
|
|
/** AKM Suite */
|
|
t_u8 akm_suite[0];
|
|
/** RSN Capability */
|
|
t_u16 rsn_capability;
|
|
/** PMKID Count */
|
|
t_u16 pmkid_count;
|
|
/** PMKID list */
|
|
t_u8 pmkid_list[0];
|
|
} __ATTRIB_PACK__ tlvbuf_RsnParamSet_t;
|
|
|
|
extern t_s32 sockfd; /**< socket */
|
|
extern t_s8 dev_name[IFNAMSIZ + 1]; /**< device name */
|
|
|
|
#endif /* _MLANCONFIG_H_ */
|