mwifiex/mxm_wifiex/wlan_src/mlinux/moal_eth_ioctl.h
Sherry Sun 8ffae47921 mxm_wifiex: update to mxm5x17283 release
changes:
1. WCSWREL-191: Fixed the error when loading module param from user config for SD8801
2. WCSWREL-186: Fixed the issue of mlanutl failing on kernel higher than L5.15
3. Fixed low throughput issue for WPA3 SAE
4. Added driver change for WLAN throughput improvement on 8997 SoC
5. Updated README to recommend not to use WEP/TKIP for all chipsets
6. WCSWREL-180: Fix P2P test fail on kernel higher than L5.12
7. WCSWREL-156: kernel_write/kernel_read not allowed by drivers for L5.10 kernel GKI buildou
8. Alternative for pm_qos_add_request/pm_qos_remove_request

Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
Approved-by: Tian Yang <yang.tian@nxp.com>
2021-10-12 12:16:50 +08:00

689 lines
21 KiB
C

/** @file moal_eth_ioctl.h
*
* @brief This file contains definition for private IOCTL call.
*
*
* Copyright 2008-2021 NXP
*
* This software file (the File) is distributed by NXP
* under the terms of the GNU General Public License Version 2, June 1991
* (the License). You may use, redistribute and/or modify the 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:
01/05/2012: initial version
********************************************************/
#if defined(STA_CFG80211) || defined(UAP_CFG80211)
#include "moal_cfg80211.h"
#endif
#ifndef _WOAL_ETH_PRIV_H_
#define _WOAL_ETH_PRIV_H_
/** Command disabled */
#define CMD_DISABLED 0
/** Command enabled */
#define CMD_ENABLED 1
/** Command get */
#define CMD_GET 2
/** 2K bytes */
#define WOAL_2K_BYTES 2000
/** NXP private command identifier string */
#define CMD_NXP "MRVL_CMD"
/** Private command: Version */
#define PRIV_CMD_VERSION "version"
/** Private command: Band cfg */
#define PRIV_CMD_BANDCFG "bandcfg"
/** Private command: Host cmd */
#define PRIV_CMD_HOSTCMD "hostcmd"
/** Private command: Custom IE config*/
#define PRIV_CMD_CUSTOMIE "customie"
/** Private command: HT Tx Cfg */
#define PRIV_CMD_HTTXCFG "httxcfg"
/** Private command: HT Cap Info */
#define PRIV_CMD_HTCAPINFO "htcapinfo"
/** Private command: Add BA para */
#define PRIV_CMD_ADDBAPARA "addbapara"
/** Private command: Aggragation priority table */
#define PRIV_CMD_AGGRPRIOTBL "aggrpriotbl"
/** Private command: Add BA reject cfg */
#define PRIV_CMD_ADDBAREJECT "addbareject"
/** Private command: Delete BA */
#define PRIV_CMD_DELBA "delba"
/** Private command: Reject Addba Req */
#define PRIV_CMD_REJECTADDBAREQ "rejectaddbareq"
/** Private command: 11AC Cfg */
#define PRIV_CMD_VHTCFG "vhtcfg"
/** Private command: 11AC Oper Mode Cfg */
#define PRIV_CMD_OPERMODECFG "opermodecfg"
#define PRIV_CMD_DATARATE "getdatarate"
#define PRIV_CMD_TXRATECFG "txratecfg"
#define PRIV_CMD_GETLOG "getlog"
#define PRIV_CMD_ESUPPMODE "esuppmode"
#define PRIV_CMD_PASSPHRASE "passphrase"
#define PRIV_CMD_DEAUTH "deauth"
#ifdef UAP_SUPPORT
#define PRIV_CMD_AP_DEAUTH "apdeauth"
#define PRIV_CMD_GET_STA_LIST "getstalist"
#define PRIV_CMD_BSS_CONFIG "bssconfig"
#endif
#ifdef WIFI_DIRECT_SUPPORT
#if defined(STA_SUPPORT) && defined(UAP_SUPPORT)
#define PRIV_CMD_BSSROLE "bssrole"
#endif
#endif
#ifdef STA_SUPPORT
#define PRIV_CMD_GETSCANTABLE "getscantable"
#define PRIV_CMD_GETCHANSTATS "getchanstats"
typedef struct _chan_stats {
/** Number of records in the chan_stats */
t_u32 num_in_chan_stats;
/** channel statistics */
ChanStatistics_t stats[];
} chan_stats;
#define PRIV_CMD_SETUSERSCAN "setuserscan"
#define PRIV_CMD_EXTCAPCFG "extcapcfg"
#define PRIV_CMD_CANCELSCAN "cancelscan"
#endif
#define PRIV_CMD_DEEPSLEEP "deepsleep"
#define PRIV_CMD_IPADDR "ipaddr"
#define PRIV_CMD_WPSSESSION "wpssession"
#define PRIV_CMD_OTPUSERDATA "otpuserdata"
#define PRIV_CMD_COUNTRYCODE "countrycode"
#define PRIV_CMD_TCPACKENH "tcpackenh"
#ifdef REASSOCIATION
#define PRIV_CMD_ASSOCESSID "assocessid"
#define PRIV_CMD_ASSOCBSSID "assocessid_bssid"
#endif
#define PRIV_CMD_WAKEUPREASON "wakeupreason"
#ifdef STA_SUPPORT
#define PRIV_CMD_LISTENINTERVAL "listeninterval"
#endif
#ifdef DEBUG_LEVEL1
#define PRIV_CMD_DRVDBG "drvdbg"
#endif
#define PRIV_CMD_HSCFG "hscfg"
#define PRIV_CMD_HSSETPARA "hssetpara"
#define PRIV_CMD_MGMT_FILTER "mgmtfilter"
#define PRIV_CMD_SCANCFG "scancfg"
#define PRIV_CMD_GETNLNUM "getnlnum"
#define PRIV_CMD_AGGRCTRL "aggrctrl"
#ifdef USB
#define PRIV_CMD_USBAGGRCTRL "usbaggrctrl"
#endif
#define PRIV_CMD_SET_BSS_MODE "setbssmode"
#ifdef STA_SUPPORT
#define PRIV_CMD_SET_AP "setap"
#define PRIV_CMD_SET_POWER "setpower"
#define PRIV_CMD_SET_ESSID "setessid"
#define PRIV_CMD_SET_AUTH "setauth"
#define PRIV_CMD_GET_AP "getap"
#define PRIV_CMD_GET_POWER "getpower"
#define PRIV_CMD_PSMODE "psmode"
#endif
#define PRIV_CMD_WARMRESET "warmreset"
#define PRIV_CMD_TXPOWERCFG "txpowercfg"
#define PRIV_CMD_PSCFG "pscfg"
#define PRIV_CMD_BCNTIMEOUTCFG "bcntimeoutcfg"
#define PRIV_CMD_SLEEPPD "sleeppd"
#define PRIV_CMD_TXCONTROL "txcontrol"
#define PRIV_CMD_REGRDWR "regrdwr"
#define PRIV_CMD_RDEEPROM "rdeeprom"
#define PRIV_CMD_MEMRDWR "memrdwr"
#ifdef SDIO
#define PRIV_CMD_SDCMD52RW "sdcmd52rw"
#endif
#define PRIV_CMD_ARPFILTER "arpfilter"
#define PRIV_CMD_HOTSPOTCFG "hotspotcfg"
#define PRIV_CMD_MGMT_FRAME_CTRL "mgmtframectrl"
#define PRIV_CMD_QCONFIG "qconfig"
#define PRIV_CMD_ADDTS "addts"
#define PRIV_CMD_DELTS "delts"
#define PRIV_CMD_QSTATUS "qstatus"
#define PRIV_CMD_TS_STATUS "ts_status"
#define PRIV_CMD_QOS_CFG "qoscfg"
#define PRIV_CMD_MAC_CTRL "macctrl"
#define PRIV_CMD_GETWAP "getwap"
#define PRIV_CMD_REGION_CODE "regioncode"
#define PRIV_CMD_CFPINFO "cfpinfo"
#define PRIV_CMD_FWMACADDR "fwmacaddr"
#define PRIV_CMD_OFFCHANNEL "offchannel"
#define PRIV_CMD_DSCP_MAP "dscpmap"
/** Private command: Verext */
#define PRIV_CMD_VEREXT "verext"
#ifdef CONFIG_USB_SUSPEND
#define PRIV_CMD_USB_SUSPEND "usbsuspend"
#define PRIV_CMD_USB_RESUME "usbresume"
#endif /* CONFIG_USB_SUSPEND */
#if defined(STA_SUPPORT) && defined(STA_WEXT)
#define PRIV_CMD_RADIO_CTRL "radioctrl"
#endif
#define PRIV_CMD_WMM_CFG "wmmcfg"
#define PRIV_CMD_MIN_BA_THRESH_CFG "min_ba_threshold"
#if defined(STA_SUPPORT)
#define PRIV_CMD_11D_CFG "11dcfg"
#define PRIV_CMD_11D_CLR_TBL "11dclrtbl"
#endif
#ifndef OPCHAN
#define PRIV_CMD_WWS_CFG "wwscfg"
#endif
#if defined(REASSOCIATION)
#define PRIV_CMD_REASSOCTRL "reassoctrl"
#endif
#define PRIV_CMD_TXBUF_CFG "txbufcfg"
#ifdef STA_SUPPORT
#define PRIV_CMD_AUTH_TYPE "authtype"
#endif
#define PRIV_CMD_POWER_CONS "powercons"
#define PRIV_CMD_HT_STREAM_CFG "htstreamcfg"
#define PRIV_CMD_MIMO_SWITCH "mimoswitch"
#define PRIV_CMD_THERMAL "thermal"
#define PRIV_CMD_BCN_INTERVAL "bcninterval"
#ifdef STA_SUPPORT
#define PRIV_CMD_GET_SIGNAL "getsignal"
#define PRIV_CMD_SIGNALEXT_CFG "signalextcfg"
#define PRIV_CMD_GET_SIGNAL_EXT_V2 "getsignalextv2"
#define PRIV_CMD_GET_SIGNAL_EXT "getsignalext"
#endif
#if defined(STA_SUPPORT)
#define PRIV_CMD_PMFCFG "pmfcfg"
#endif
#define PRIV_CMD_INACTIVITYTO "inactivityto"
#define PRIV_CMD_AMSDU_AGGR_CTRL "amsduaggrctrl"
#define PRIV_CMD_TX_BF_CAP "httxbfcap"
#ifdef SDIO
#define PRIV_CMD_SDIO_CLOCK "sdioclock"
#endif
#ifdef SDIO
#define PRIV_CMD_MPA_CTRL "mpactrl"
#endif
#define PRIV_CMD_SLEEP_PARAMS "sleepparams"
#define PRIV_CMD_DFS_TESTING "dfstesting"
#define PRIV_CMD_DFS53_CFG "dfs53cfg"
#define PRIV_CMD_CFP_CODE "cfpcode"
#define PRIV_CMD_CWMODE "cwmode"
#define PRIV_CMD_ANT_CFG "antcfg"
#define PRIV_CMD_SYSCLOCK "sysclock"
#define PRIV_CMD_GET_KEY "getkey"
#define PRIV_CMD_ASSOCIATE "associate"
#define PRIV_CMD_TX_BF_CFG "httxbfcfg"
#define PRIV_CMD_PORT_CTRL "port_ctrl"
#define PRIV_CMD_PB_BYPASS "pb_bypass"
#ifdef SDIO
#define PRIV_CMD_SD_CMD53_RW "sdcmd53rw"
#endif
#ifdef RX_PACKET_COALESCE
#define PRIV_CMD_RX_COAL_CFG "rxpktcoal_cfg"
#endif
#ifdef WIFI_DIRECT_SUPPORT
#if defined(UAP_CFG80211)
#define PRIV_CMD_CFG_NOA "cfg_noa"
#define PRIV_CMD_CFG_OPP_PS "cfg_opp_ps"
#endif
#endif
#define PRIV_CMD_CFG_CLOCK_SYNC "clocksync"
#define PRIV_CMD_CFG_GET_TSF_INFO "gettsfinfo"
#define PRIV_CMD_DFS_REPEATER_CFG "dfs_repeater"
#ifdef WIFI_DIRECT_SUPPORT
#if defined(STA_CFG80211) || defined(UAP_CFG80211)
#define PRIV_CMD_MIRACAST_CFG "miracastcfg"
#endif
#endif
#define PRIV_CMD_COEX_RX_WINSIZE "coex_rx_winsize"
#define PRIV_CMD_TX_AGGR_CTRL "txaggrctrl"
#define PRIV_CMD_AUTO_TDLS "autotdls"
#ifdef PCIE
#define PRIV_CMD_PCIE_REG_RW "pcieregrw"
#define PRIV_CMD_PCIE_BAR0_REG_RW "pciebar0regrw"
#endif
#define PRIV_CMD_GET_SENSOR_TEMP "get_sensor_temp"
#define PRIV_CMD_GET_CHNRGPWR "get_chnrgpwr"
#define PRIV_CMD_GET_TXPWR_LIMIT "get_txpwrlimit"
#define PRIV_CMD_GET_CFG_CHAN_LIST "getcfgchanlist"
#if defined(UAP_SUPPORT)
#define PRIV_CMD_EXTEND_CHAN_SWITCH "channel_switch"
#endif
#define PRIV_CMD_TDLS_IDLE_TIME "tdls_idle_time"
#define PRIV_CMD_DYN_BW "dyn_bw"
#if CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
#define PRIV_CMD_DFS_OFFLOAD "dfs_offload"
#endif
#define PRIV_CMD_AUTO_ARP "auto_arp"
#define PRIV_CMD_PER_PKT_CFG "per_pkt_cfg"
#define PRIV_CMD_DEAUTH_CTRL "ctrldeauth"
#define PRIV_CMD_TX_RX_HISTOGRAM "txrxhistogram"
/**Private command ID to set/get independent reset*/
#define PRIV_CMD_IND_RST_CFG "indrstcfg"
#define PRIV_CMD_ARB_CFG "arb"
/**Private command to configure static rx abort config */
#define PRIV_CMD_RX_ABORT_CFG "rx_abort_cfg"
/**Private command to configure dynamic rx abort config */
#define PRIV_CMD_RX_ABORT_CFG_EXT "rx_abort_cfg_ext"
#define TX_AMPDU_RTS_CTS 0
#define TX_AMPDU_CTS_2_SELF 1
#define TX_AMPDU_DISABLE_PROTECTION 2
#define TX_AMPDU_DYNAMIC_RTS_CTS 3
/**Private command to set tx ampdu protection mode */
#define PRIV_CMD_TX_AMPDU_PROT_MODE "tx_ampdu_prot_mode"
/**Private command to configure tx rate adapt config */
#define PRIV_CMD_RATE_ADAPT_CFG "rate_adapt_cfg"
#define CCK_DESENSE_MODE_DISABLED 0
#define CCK_DESENSE_MODE_DYNAMIC 1
#define CCK_DESENSE_MODE_DYN_ENH 2
/**Private command to configure cck desense config */
#define PRIV_CMD_CCK_DESENSE_CFG "cck_desense_cfg"
#define PRIV_CMD_DOT11MC_UNASSOC_FTM_CFG "dot11mc_unassoc_ftm_cfg"
#define PRIV_CMD_HAL_PHY_CFG "hal_phy_cfg"
/** Private command ID for Android default commands */
#define WOAL_ANDROID_DEF_CMD (SIOCDEVPRIVATE + 1)
/** Private command ID to send TLD configuration */
#define WOAL_TDLS_CONFIG (SIOCDEVPRIVATE + 5)
/** Private command ID to pass mgmt frame */
#define WOAL_MGMT_FRAME_TX WOAL_MGMT_FRAME_TX_IOCTL
/** Private command ID to pass custom IE list */
#define WOAL_CUSTOM_IE_CFG (SIOCDEVPRIVATE + 13)
/** Private command ID for Android ICS priv CMDs */
#define WOAL_ANDROID_PRIV_CMD (SIOCDEVPRIVATE + 14)
/** Private command ID to get BSS type */
#define WOAL_GET_BSS_TYPE (SIOCDEVPRIVATE + 15)
/** Private command ID for robustcoex */
#define PRIV_CMD_ROBUSTCOEX "robustcoex"
#define PRIV_CMD_DMCS "dmcs"
#if defined(PCIE)
#define PRIV_CMD_SSU "ssu"
/** ssu_params_ctrl */
typedef struct _ssu_params_cfg {
/* ssu mode */
t_u8 ssu_mode;
/* 0-3; # of FFT samples to skip*/
t_u32 nskip;
/* 0-3: # of FFT samples selected to dump */
t_u32 nsel;
/* 0-3: Down sample ADC input for buffering*/
t_u32 adcdownsample;
/* 0-1: Mask out ADC Data from spectral packet */
t_u32 mask_adc_pkt;
/* 0-1: Enable 16-Bit FFT output data precision in spectral packet */
t_u32 out_16bits;
/* 0-1: Enable power spectrum in dB for spectral packe */
t_u32 spec_pwr_enable;
/* 0-1: Enable spectral packet rate reduction in DB output format */
t_u32 rate_deduction;
/* 0-7: Number of spectral packets over which spectral data is to be
* averaged. */
t_u32 n_pkt_avg;
} __attribute__((packed)) ssu_params_cfg;
#endif
#define PRIV_CMD_BOOTSLEEP "bootsleep"
/** Private command: 11AX Cfg */
#define PRIV_CMD_11AXCFG "11axcfg"
/** Private command: 11AX Cmd */
#define PRIV_CMD_11AXCMDCFG "11axcmd"
/** Private command: Range ext Cmd */
#define PRIV_CMD_RANGE_EXT "range_ext"
/** Private command: TWT Setup Cfg */
#define PRIV_CMD_TWT_SETUP "twt_setup"
/** Private command: TWT Teardown Cfg */
#define PRIV_CMD_TWT_TEARDOWN "twt_teardown"
#define PRIV_CMD_LPM "lpm"
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)
int woal_do_ioctl(struct net_device *dev, struct ifreq *req, void __user *data,
int cmd);
#else
int woal_do_ioctl(struct net_device *dev, struct ifreq *req, int cmd);
#endif
/*
* For android private commands, fixed value of ioctl is used.
* Internally commands are differentiated using strings.
*
* application needs to specify "total_len" of data for copy_from_user
* kernel updates "used_len" during copy_to_user
*/
/** Private command structure from app */
#ifdef USERSPACE_32BIT_OVER_KERNEL_64BIT
typedef struct _android_wifi_priv_cmd {
/** Buffer pointer */
t_u64 buf;
/** buffer updated by driver */
int used_len;
/** buffer sent by application */
int total_len;
} __attribute__((packed)) android_wifi_priv_cmd;
#else
typedef struct _android_wifi_priv_cmd {
/** Buffer pointer */
char *buf;
/** buffer updated by driver */
int used_len;
/** buffer sent by application */
int total_len;
} android_wifi_priv_cmd;
#endif
#ifndef IFNAMSIZ
#define IFNAMSIZ 16
#endif
/* Maximum size of the ESSID and NICKN strings */
#define MW_ESSID_MAX_SIZE 32
/* Modes of operation */
#define MW_MODE_AUTO 0 /* Let the driver decides */
#define MW_MODE_ADHOC 1 /* Single cell network */
#define MW_MODE_INFRA 2 /* Multi cell network, roaming, ... */
#define MW_MODE_MASTER 3 /* Synchronisation master or Access Point */
#define MW_MODE_REPEAT 4 /* Wireless Repeater (forwarder) */
#define MW_MODE_SECOND 5 /* Secondary master/repeater (backup) */
#define MW_MODE_MONITOR 6 /* Passive monitor (listen only) */
#define MW_MODE_MESH 7 /* Mesh (IEEE 802.11s) network */
#define MW_POWER_TYPE 0xF000 /* Type of parameter */
#define MW_POWER_PERIOD 0x1000 /* Value is a period/duration of */
#define MW_POWER_TIMEOUT 0x2000 /* Value is a timeout (to go asleep) */
#define MW_AUTH_INDEX 0x0FFF
#define MW_AUTH_FLAGS 0xF000
#define MW_AUTH_WPA_VERSION 0
#define MW_AUTH_CIPHER_PAIRWISE 1
#define MW_AUTH_CIPHER_GROUP 2
#define MW_AUTH_KEY_MGMT 3
#define MW_AUTH_TKIP_COUNTERMEASURES 4
#define MW_AUTH_DROP_UNENCRYPTED 5
#define MW_AUTH_80211_AUTH_ALG 6
#define MW_AUTH_WPA_ENABLED 7
#define MW_AUTH_RX_UNENCRYPTED_EAPOL 8
#define MW_AUTH_ROAMING_CONTROL 9
#define MW_AUTH_PRIVACY_INVOKED 10
#define MW_AUTH_CIPHER_GROUP_MGMT 11
#define MW_AUTH_MFP 12
#define MW_AUTH_CIPHER_NONE 0x00000001
#define MW_AUTH_CIPHER_WEP40 0x00000002
#define MW_AUTH_CIPHER_TKIP 0x00000004
#define MW_AUTH_CIPHER_CCMP 0x00000008
#define MW_AUTH_CIPHER_WEP104 0x00000010
#define MW_AUTH_CIPHER_AES_CMAC 0x00000020
#define MW_AUTH_ALG_OPEN_SYSTEM 0x00000001
#define MW_AUTH_ALG_SHARED_KEY 0x00000002
#define MW_AUTH_ALG_LEAP 0x00000004
/* Generic format for most parameters that fit in an int */
struct mw_param {
t_s32 value; /* The value of the parameter itself */
t_u8 fixed; /* Hardware should not use auto select */
t_u8 disabled; /* Disable the feature */
t_u16 flags; /* Various specifc flags (if any) */
};
/*
* For all data larger than 16 octets, we need to use a
* pointer to memory allocated in user space.
*/
struct mw_point {
t_u8 *pointer; /* Pointer to the data (in user space) */
t_u16 length; /* number of fields or size in bytes */
t_u16 flags; /* Optional params */
};
/*
* This structure defines the payload of an ioctl, and is used
* below.
*/
union mwreq_data {
/* Config - generic */
char name[IFNAMSIZ];
struct mw_point essid; /* Extended network name */
t_u32 mode; /* Operation mode */
struct mw_param power; /* PM duration/timeout */
struct sockaddr ap_addr; /* Access point address */
struct mw_param param; /* Other small parameters */
struct mw_point data; /* Other large parameters */
};
/* The structure to exchange data for ioctl */
struct mwreq {
union {
char ifrn_name[IFNAMSIZ]; /* if name, e.g. "eth0" */
} ifr_ifrn;
/* Data part */
union mwreq_data u;
};
typedef struct woal_priv_ht_cap_info {
t_u32 ht_cap_info_bg;
t_u32 ht_cap_info_a;
} woal_ht_cap_info;
typedef struct woal_priv_addba {
t_u32 time_out;
t_u32 tx_win_size;
t_u32 rx_win_size;
t_u32 tx_amsdu;
t_u32 rx_amsdu;
} woal_addba;
typedef struct _txrate_setting {
t_u16 preamble : 2; /*BIT1-BIT0:
* For legacy 11b: preamble type
* 00 = long
* 01 = short
* 10/11 = reserved
* For legacy 11g: reserved
* For 11n: Green field PPDU indicator
* 00 = HT-mix
* 01 = HT-GF
* 10/11 = reserved.
* For 11ac: reserved.
* For 11ax:
* 00 = HE-SU
* 01 = HE-EXT-SU
* 10 = HE-MU
* 11 = HE trigger based
*/
t_u16 bandwidth : 3; /* BIT2- BIT4
* For 11n and 11ac traffic: Bandwidth
* 0 = 20Mhz
* 1 = 40Mhz
* 2 = 80 Mhz
* 3 = 160 Mhz
* 4-7 = reserved
* For legacy rate : BW>0 implies non-HT
* duplicates. For HE SU PPDU: 0 = 20Mhz 1 = 40Mhz
* 2 = 80 Mhz
* 3 = 160 Mhz
* 4-7 = reserved
* For HE ER SU PPDU:
* 0 = 242-tone RU
* 1 = upper frequency 106 tone RU within the
* primary 20 Mhz. For HE MU PPDU: 0 = 20Mhz. 1 =
* 40Mhz. 2 = 80Mhz non-preamble puncturing mode 3
* = 160Mhz and 80+80 Mhz non-preamble. 4 = for
* preemble puncturing in 80 Mhz , where in the
* preamble only the secondary 20Mhz is punctured.
* 5 = for preemble puncturing in 80 Mhz ,
* where in the preamble only one of the two
* 20Mhz subchannels in the secondary 40Mhz is
* punctured. 6 = for preemble puncturing in 160
* Mhz or 80 Mhz + 80 Mhz, where in the primary 80
* Mhz of the preamble only the secondary 20 Mhz is
* punctured. 7 = for preemble puncturing in 160
* Mhz or 80 Mhz + 80 Mhz, where in the primary 80
* Mhz of the preamble the primary 40 Mhz is
* present.
*/
t_u16 shortGI : 2; /*BIT5- BIT6
* For legacy: not used
* For 11n: 00 = normal, 01 =shortGI, 10/11 =
* reserved For 11ac: SGI map to VHT-SIG-A2[0]
* VHT-SIG-A2[1] is set to 1 if short guard
* interval is used and NSYM mod 10 = 9, otherwise
* set to 0. For 11ax: 00 = 1xHELTF+GI0.8usec 01 =
* 2xHELTF+GI0.8usec 10 = 2xHELTF+GI1.6usec 11 =
* 4xHELTF+GI0.8 usec if both DCM and STBC are 1
* 4xHELTF+GI3.2 usec otherwise
*/
t_u16 stbc : 1; // BIT7, 0: no STBC; 1: STBC
t_u16 dcm : 1; // BIT8, 0: no DCM; 1: DCM used.
t_u16 adv_coding : 1; // BIT9, 0: BCC; 1: LDPC.
t_u16 doppler : 2; /* BIT11-BIT10,
00: Doppler0
01: Doppler 1 with Mma =10
10: Doppler 1 with Mma =20
*/
t_u16 max_pktext : 2; /*BIT12-BIT13:
* Max packet extension
* 0 - 0 usec
* 1 - 8 usec
* 2 - 16 usec.
*/
t_u16 reserverd : 2; // BIT14-BIT15
} __ATTRIB_PACK__ txrate_setting;
/** data structure for cmd txratecfg */
typedef struct woal_priv_tx_rate_cfg {
/* LG rate: 0, HT rate: 1, VHT rate: 2 */
t_u32 rate_format;
/** Rate/MCS index (0xFF: auto) */
t_u32 rate_index;
/** Data rate */
t_u32 rate;
/** NSS */
t_u32 nss;
/** Rate Setting */
t_u16 rate_setting;
} woal_tx_rate_cfg;
typedef struct woal_priv_esuppmode_cfg {
/* RSN mode */
t_u16 rsn_mode;
/* Pairwise cipher */
t_u8 pairwise_cipher;
/* Group cipher */
t_u8 group_cipher;
} woal_esuppmode_cfg;
mlan_status woal_set_ap_wps_p2p_ie(moal_private *priv, t_u8 *ie, size_t len);
int woal_android_priv_cmd(struct net_device *dev, struct ifreq *req);
#define PRIV_CMD_CLOUD_KEEP_ALIVE "cloud_keep_alive"
/** cloud keep alive parameters */
typedef struct _cloud_keep_alive {
/** id */
t_u8 mkeep_alive_id;
/** enable/disable of this id */
t_u8 enable;
/** enable/disable reset*/
t_u8 reset;
/** Reserved */
t_u8 reserved;
/** Destination MAC address */
t_u8 dst_mac[ETH_ALEN];
/** Source MAC address */
t_u8 src_mac[ETH_ALEN];
/** packet send period */
t_u32 sendInterval;
/** packet retry interval */
t_u32 retryInterval;
/** packet retry count */
t_u8 retryCount;
/** packet length */
t_u8 pkt_len;
/** packet content */
t_u8 pkt[255];
} __ATTRIB_PACK__ cloud_keep_alive;
#define TLV_TYPE_PER_PKT_CFG 0x0001
#define TX_PKT_CTRL MBIT(0)
#define RX_PKT_INFO MBIT(1)
#define FLAG_TX_HISTOGRAM 0x01
#define FLAG_RX_HISTOGRAM 0x02
#define DISABLE_TX_RX_HISTOGRAM 0x00
#define ENABLE_TX_RX_HISTOGRAM 0x01
#define GET_TX_RX_HISTOGRAM 0x02
#define PRIV_CMD_TX_RX_HISTOGRAM "txrxhistogram"
/** TX and RX histogram statistic parameters*/
typedef struct _tx_rx_histogram {
/** Enable or disable get tx/rx histogram statistic */
t_u8 enable;
/** Choose to get TX, RX or both histogram statistic */
t_u8 action;
} __ATTRIB_PACK__ tx_rx_histogram;
/* Enum for different CW mode type */
typedef enum _cw_modes_e {
CWMODE_DISABLE,
CWMODE_TXCONTPKT,
CWMODE_TXCONTWAVE,
} cw_modes_e;
/** wlan_ieee80211_chan */
typedef struct {
/** center freq */
t_u16 center_freq;
/** chan num */
t_u16 hw_value;
/** chan flags */
t_u32 flags;
/** max power */
int max_power;
/** dfs_state */
t_u8 dfs_state;
} __ATTRIB_PACK__ wlan_ieee80211_chan;
/** wlan_ieee80211_chan_list*/
typedef struct {
/** num of chan */
t_u8 num_chan;
/** chan_list */
wlan_ieee80211_chan chan_list[];
} __ATTRIB_PACK__ wlan_ieee80211_chan_list;
#define PRIV_CMD_TP_STATE "tp_state"
#endif /* _WOAL_ETH_PRIV_H_ */