mwifiex/mxm_wifiex/wlan_src/mlinux/moal_eth_ioctl.h
Sherry Sun 1ad6227f5d mxm_wifiex: update to mxm5x17293 release
changes:
    1. WCSWREL-199: Fixed the build error on kernel higher than L5.12
    2. WSW-16639: Improve the throughput by avoiding skb copy in amsdu deaggreation
    3. WSW-15903: By default enabled pmqos=1 module param on IMX8 only and disable this for other platforms like X86
    4. WSFD-411: Generate fw_dump files in HAL layer instead of driver
    5. WSW-17154: Fixed the issue of driver crash seen with AGO+AGO restart stress test
    6. WSFD-416: Added WPA3 R3 support using embedded supplicant
    7. WSW-16171: Fixed the issue of DUT failed to roam to other AP2, when low RSSI hits on connected AP1
    8. WSW-17323: Fixed the issue of not activating Channel 13 using DE or JP country codes
    9. WSW-16630: APUT is not switching back from 20/40MHz to 20MHz channel bandwidth in the presence of 20MHz testbed AP
    10. WCECCB-37: Added support for UNII-4 / upper 5 GHz channels
    11. WSW-17368: Fixed the issue of System shutdown after switching AC power to battery
    12. WSW-17447: Added RTT support enablement for Android
    13. WSW-17453: Fixed the issue of 0x107 Command timeout for scan(iwlist)
    14. WSW-17019: Fixed the issue of Wifi hang with timeout cmd id 0x20 due to interference from another device doing DPD
    15. WSW-14: Added Support for IMX Linux Kernel 5.15.0
    16. WSW-17450: Disable host based Link layer stats so that fw based stats will be used

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

690 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_TRANSITION_CHANNEL "transchan"
#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_ */