/** @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 #include #include #include #include #include #include #include #include #include #include #include #include #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_ */