162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * This file function prototypes, data structure 462306a36Sopenharmony_ci * and definitions for all the host/station commands 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef _LBS_HOST_H_ 862306a36Sopenharmony_ci#define _LBS_HOST_H_ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include "types.h" 1162306a36Sopenharmony_ci#include "defs.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define DEFAULT_AD_HOC_CHANNEL 6 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define CMD_OPTION_WAITFORRSP 0x0002 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* Host command IDs */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/* 2062306a36Sopenharmony_ci * Return command are almost always the same as the host command, but with 2162306a36Sopenharmony_ci * bit 15 set high. There are a few exceptions, though... 2262306a36Sopenharmony_ci */ 2362306a36Sopenharmony_ci#define CMD_RET(cmd) (0x8000 | cmd) 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci/* Return command convention exceptions: */ 2662306a36Sopenharmony_ci#define CMD_RET_802_11_ASSOCIATE 0x8012 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* Command codes */ 2962306a36Sopenharmony_ci#define CMD_GET_HW_SPEC 0x0003 3062306a36Sopenharmony_ci#define CMD_EEPROM_UPDATE 0x0004 3162306a36Sopenharmony_ci#define CMD_802_11_RESET 0x0005 3262306a36Sopenharmony_ci#define CMD_802_11_SCAN 0x0006 3362306a36Sopenharmony_ci#define CMD_802_11_GET_LOG 0x000b 3462306a36Sopenharmony_ci#define CMD_MAC_MULTICAST_ADR 0x0010 3562306a36Sopenharmony_ci#define CMD_802_11_AUTHENTICATE 0x0011 3662306a36Sopenharmony_ci#define CMD_802_11_EEPROM_ACCESS 0x0059 3762306a36Sopenharmony_ci#define CMD_802_11_ASSOCIATE 0x0050 3862306a36Sopenharmony_ci#define CMD_802_11_SET_WEP 0x0013 3962306a36Sopenharmony_ci#define CMD_802_11_GET_STAT 0x0014 4062306a36Sopenharmony_ci#define CMD_802_3_GET_STAT 0x0015 4162306a36Sopenharmony_ci#define CMD_802_11_SNMP_MIB 0x0016 4262306a36Sopenharmony_ci#define CMD_MAC_REG_MAP 0x0017 4362306a36Sopenharmony_ci#define CMD_BBP_REG_MAP 0x0018 4462306a36Sopenharmony_ci#define CMD_MAC_REG_ACCESS 0x0019 4562306a36Sopenharmony_ci#define CMD_BBP_REG_ACCESS 0x001a 4662306a36Sopenharmony_ci#define CMD_RF_REG_ACCESS 0x001b 4762306a36Sopenharmony_ci#define CMD_802_11_RADIO_CONTROL 0x001c 4862306a36Sopenharmony_ci#define CMD_802_11_RF_CHANNEL 0x001d 4962306a36Sopenharmony_ci#define CMD_802_11_RF_TX_POWER 0x001e 5062306a36Sopenharmony_ci#define CMD_802_11_RSSI 0x001f 5162306a36Sopenharmony_ci#define CMD_802_11_RF_ANTENNA 0x0020 5262306a36Sopenharmony_ci#define CMD_802_11_PS_MODE 0x0021 5362306a36Sopenharmony_ci#define CMD_802_11_DATA_RATE 0x0022 5462306a36Sopenharmony_ci#define CMD_RF_REG_MAP 0x0023 5562306a36Sopenharmony_ci#define CMD_802_11_DEAUTHENTICATE 0x0024 5662306a36Sopenharmony_ci#define CMD_802_11_REASSOCIATE 0x0025 5762306a36Sopenharmony_ci#define CMD_MAC_CONTROL 0x0028 5862306a36Sopenharmony_ci#define CMD_802_11_AD_HOC_START 0x002b 5962306a36Sopenharmony_ci#define CMD_802_11_AD_HOC_JOIN 0x002c 6062306a36Sopenharmony_ci#define CMD_802_11_QUERY_TKIP_REPLY_CNTRS 0x002e 6162306a36Sopenharmony_ci#define CMD_802_11_ENABLE_RSN 0x002f 6262306a36Sopenharmony_ci#define CMD_802_11_SET_AFC 0x003c 6362306a36Sopenharmony_ci#define CMD_802_11_GET_AFC 0x003d 6462306a36Sopenharmony_ci#define CMD_802_11_DEEP_SLEEP 0x003e 6562306a36Sopenharmony_ci#define CMD_802_11_AD_HOC_STOP 0x0040 6662306a36Sopenharmony_ci#define CMD_802_11_HOST_SLEEP_CFG 0x0043 6762306a36Sopenharmony_ci#define CMD_802_11_WAKEUP_CONFIRM 0x0044 6862306a36Sopenharmony_ci#define CMD_802_11_HOST_SLEEP_ACTIVATE 0x0045 6962306a36Sopenharmony_ci#define CMD_802_11_BEACON_STOP 0x0049 7062306a36Sopenharmony_ci#define CMD_802_11_MAC_ADDRESS 0x004d 7162306a36Sopenharmony_ci#define CMD_802_11_LED_GPIO_CTRL 0x004e 7262306a36Sopenharmony_ci#define CMD_802_11_BAND_CONFIG 0x0058 7362306a36Sopenharmony_ci#define CMD_GSPI_BUS_CONFIG 0x005a 7462306a36Sopenharmony_ci#define CMD_802_11D_DOMAIN_INFO 0x005b 7562306a36Sopenharmony_ci#define CMD_802_11_KEY_MATERIAL 0x005e 7662306a36Sopenharmony_ci#define CMD_802_11_SLEEP_PARAMS 0x0066 7762306a36Sopenharmony_ci#define CMD_802_11_INACTIVITY_TIMEOUT 0x0067 7862306a36Sopenharmony_ci#define CMD_802_11_SLEEP_PERIOD 0x0068 7962306a36Sopenharmony_ci#define CMD_802_11_TPC_CFG 0x0072 8062306a36Sopenharmony_ci#define CMD_802_11_PA_CFG 0x0073 8162306a36Sopenharmony_ci#define CMD_802_11_FW_WAKE_METHOD 0x0074 8262306a36Sopenharmony_ci#define CMD_802_11_SUBSCRIBE_EVENT 0x0075 8362306a36Sopenharmony_ci#define CMD_802_11_RATE_ADAPT_RATESET 0x0076 8462306a36Sopenharmony_ci#define CMD_802_11_TX_RATE_QUERY 0x007f 8562306a36Sopenharmony_ci#define CMD_GET_TSF 0x0080 8662306a36Sopenharmony_ci#define CMD_BT_ACCESS 0x0087 8762306a36Sopenharmony_ci#define CMD_FWT_ACCESS 0x0095 8862306a36Sopenharmony_ci#define CMD_802_11_MONITOR_MODE 0x0098 8962306a36Sopenharmony_ci#define CMD_MESH_ACCESS 0x009b 9062306a36Sopenharmony_ci#define CMD_MESH_CONFIG_OLD 0x00a3 9162306a36Sopenharmony_ci#define CMD_MESH_CONFIG 0x00ac 9262306a36Sopenharmony_ci#define CMD_SET_BOOT2_VER 0x00a5 9362306a36Sopenharmony_ci#define CMD_FUNC_INIT 0x00a9 9462306a36Sopenharmony_ci#define CMD_FUNC_SHUTDOWN 0x00aa 9562306a36Sopenharmony_ci#define CMD_802_11_BEACON_CTRL 0x00b0 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci/* For the IEEE Power Save */ 9862306a36Sopenharmony_ci#define PS_MODE_ACTION_ENTER_PS 0x0030 9962306a36Sopenharmony_ci#define PS_MODE_ACTION_EXIT_PS 0x0031 10062306a36Sopenharmony_ci#define PS_MODE_ACTION_SLEEP_CONFIRMED 0x0034 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci#define CMD_ENABLE_RSN 0x0001 10362306a36Sopenharmony_ci#define CMD_DISABLE_RSN 0x0000 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci#define CMD_ACT_GET 0x0000 10662306a36Sopenharmony_ci#define CMD_ACT_SET 0x0001 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci/* Define action or option for CMD_802_11_SET_WEP */ 10962306a36Sopenharmony_ci#define CMD_ACT_ADD 0x0002 11062306a36Sopenharmony_ci#define CMD_ACT_REMOVE 0x0004 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci#define CMD_TYPE_WEP_40_BIT 0x01 11362306a36Sopenharmony_ci#define CMD_TYPE_WEP_104_BIT 0x02 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci#define CMD_NUM_OF_WEP_KEYS 4 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci#define CMD_WEP_KEY_INDEX_MASK 0x3fff 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci/* Define action or option for CMD_802_11_SCAN */ 12062306a36Sopenharmony_ci#define CMD_BSS_TYPE_BSS 0x0001 12162306a36Sopenharmony_ci#define CMD_BSS_TYPE_IBSS 0x0002 12262306a36Sopenharmony_ci#define CMD_BSS_TYPE_ANY 0x0003 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci/* Define action or option for CMD_802_11_SCAN */ 12562306a36Sopenharmony_ci#define CMD_SCAN_TYPE_ACTIVE 0x0000 12662306a36Sopenharmony_ci#define CMD_SCAN_TYPE_PASSIVE 0x0001 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci#define CMD_SCAN_RADIO_TYPE_BG 0 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci#define CMD_SCAN_PROBE_DELAY_TIME 0 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci/* Define action or option for CMD_MAC_CONTROL */ 13362306a36Sopenharmony_ci#define CMD_ACT_MAC_RX_ON 0x0001 13462306a36Sopenharmony_ci#define CMD_ACT_MAC_TX_ON 0x0002 13562306a36Sopenharmony_ci#define CMD_ACT_MAC_LOOPBACK_ON 0x0004 13662306a36Sopenharmony_ci#define CMD_ACT_MAC_WEP_ENABLE 0x0008 13762306a36Sopenharmony_ci#define CMD_ACT_MAC_INT_ENABLE 0x0010 13862306a36Sopenharmony_ci#define CMD_ACT_MAC_MULTICAST_ENABLE 0x0020 13962306a36Sopenharmony_ci#define CMD_ACT_MAC_BROADCAST_ENABLE 0x0040 14062306a36Sopenharmony_ci#define CMD_ACT_MAC_PROMISCUOUS_ENABLE 0x0080 14162306a36Sopenharmony_ci#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100 14262306a36Sopenharmony_ci#define CMD_ACT_MAC_STRICT_PROTECTION_ENABLE 0x0400 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci/* Event flags for CMD_802_11_SUBSCRIBE_EVENT */ 14562306a36Sopenharmony_ci#define CMD_SUBSCRIBE_RSSI_LOW 0x0001 14662306a36Sopenharmony_ci#define CMD_SUBSCRIBE_SNR_LOW 0x0002 14762306a36Sopenharmony_ci#define CMD_SUBSCRIBE_FAILCOUNT 0x0004 14862306a36Sopenharmony_ci#define CMD_SUBSCRIBE_BCNMISS 0x0008 14962306a36Sopenharmony_ci#define CMD_SUBSCRIBE_RSSI_HIGH 0x0010 15062306a36Sopenharmony_ci#define CMD_SUBSCRIBE_SNR_HIGH 0x0020 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci#define RADIO_PREAMBLE_LONG 0x00 15362306a36Sopenharmony_ci#define RADIO_PREAMBLE_SHORT 0x02 15462306a36Sopenharmony_ci#define RADIO_PREAMBLE_AUTO 0x04 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci/* Define action or option for CMD_802_11_RF_CHANNEL */ 15762306a36Sopenharmony_ci#define CMD_OPT_802_11_RF_CHANNEL_GET 0x00 15862306a36Sopenharmony_ci#define CMD_OPT_802_11_RF_CHANNEL_SET 0x01 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci/* Define action or option for CMD_802_11_DATA_RATE */ 16162306a36Sopenharmony_ci#define CMD_ACT_SET_TX_AUTO 0x0000 16262306a36Sopenharmony_ci#define CMD_ACT_SET_TX_FIX_RATE 0x0001 16362306a36Sopenharmony_ci#define CMD_ACT_GET_TX_RATE 0x0002 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci/* Options for CMD_802_11_FW_WAKE_METHOD */ 16662306a36Sopenharmony_ci#define CMD_WAKE_METHOD_UNCHANGED 0x0000 16762306a36Sopenharmony_ci#define CMD_WAKE_METHOD_COMMAND_INT 0x0001 16862306a36Sopenharmony_ci#define CMD_WAKE_METHOD_GPIO 0x0002 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci/* Object IDs for CMD_802_11_SNMP_MIB */ 17162306a36Sopenharmony_ci#define SNMP_MIB_OID_BSS_TYPE 0x0000 17262306a36Sopenharmony_ci#define SNMP_MIB_OID_OP_RATE_SET 0x0001 17362306a36Sopenharmony_ci#define SNMP_MIB_OID_BEACON_PERIOD 0x0002 /* Reserved on v9+ */ 17462306a36Sopenharmony_ci#define SNMP_MIB_OID_DTIM_PERIOD 0x0003 /* Reserved on v9+ */ 17562306a36Sopenharmony_ci#define SNMP_MIB_OID_ASSOC_TIMEOUT 0x0004 /* Reserved on v9+ */ 17662306a36Sopenharmony_ci#define SNMP_MIB_OID_RTS_THRESHOLD 0x0005 17762306a36Sopenharmony_ci#define SNMP_MIB_OID_SHORT_RETRY_LIMIT 0x0006 17862306a36Sopenharmony_ci#define SNMP_MIB_OID_LONG_RETRY_LIMIT 0x0007 17962306a36Sopenharmony_ci#define SNMP_MIB_OID_FRAG_THRESHOLD 0x0008 18062306a36Sopenharmony_ci#define SNMP_MIB_OID_11D_ENABLE 0x0009 18162306a36Sopenharmony_ci#define SNMP_MIB_OID_11H_ENABLE 0x000A 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci/* Define action or option for CMD_BT_ACCESS */ 18462306a36Sopenharmony_cienum cmd_bt_access_opts { 18562306a36Sopenharmony_ci /* The bt commands start at 5 instead of 1 because the old dft commands 18662306a36Sopenharmony_ci * are mapped to 1-4. These old commands are no longer maintained and 18762306a36Sopenharmony_ci * should not be called. 18862306a36Sopenharmony_ci */ 18962306a36Sopenharmony_ci CMD_ACT_BT_ACCESS_ADD = 5, 19062306a36Sopenharmony_ci CMD_ACT_BT_ACCESS_DEL, 19162306a36Sopenharmony_ci CMD_ACT_BT_ACCESS_LIST, 19262306a36Sopenharmony_ci CMD_ACT_BT_ACCESS_RESET, 19362306a36Sopenharmony_ci CMD_ACT_BT_ACCESS_SET_INVERT, 19462306a36Sopenharmony_ci CMD_ACT_BT_ACCESS_GET_INVERT 19562306a36Sopenharmony_ci}; 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci/* Define action or option for CMD_FWT_ACCESS */ 19862306a36Sopenharmony_cienum cmd_fwt_access_opts { 19962306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_ADD = 1, 20062306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_DEL, 20162306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_LOOKUP, 20262306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_LIST, 20362306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_LIST_ROUTE, 20462306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_LIST_NEIGHBOR, 20562306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_RESET, 20662306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_CLEANUP, 20762306a36Sopenharmony_ci CMD_ACT_FWT_ACCESS_TIME, 20862306a36Sopenharmony_ci}; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci/* Define action or option for CMD_802_11_HOST_SLEEP_CFG */ 21162306a36Sopenharmony_cienum cmd_wol_cfg_opts { 21262306a36Sopenharmony_ci CMD_ACT_ACTION_NONE = 0, 21362306a36Sopenharmony_ci CMD_ACT_SET_WOL_RULE, 21462306a36Sopenharmony_ci CMD_ACT_GET_WOL_RULE, 21562306a36Sopenharmony_ci CMD_ACT_RESET_WOL_RULE, 21662306a36Sopenharmony_ci}; 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci/* Define action or option for CMD_MESH_ACCESS */ 21962306a36Sopenharmony_cienum cmd_mesh_access_opts { 22062306a36Sopenharmony_ci CMD_ACT_MESH_GET_TTL = 1, 22162306a36Sopenharmony_ci CMD_ACT_MESH_SET_TTL, 22262306a36Sopenharmony_ci CMD_ACT_MESH_GET_STATS, 22362306a36Sopenharmony_ci CMD_ACT_MESH_GET_ANYCAST, 22462306a36Sopenharmony_ci CMD_ACT_MESH_SET_ANYCAST, 22562306a36Sopenharmony_ci CMD_ACT_MESH_SET_LINK_COSTS, 22662306a36Sopenharmony_ci CMD_ACT_MESH_GET_LINK_COSTS, 22762306a36Sopenharmony_ci CMD_ACT_MESH_SET_BCAST_RATE, 22862306a36Sopenharmony_ci CMD_ACT_MESH_GET_BCAST_RATE, 22962306a36Sopenharmony_ci CMD_ACT_MESH_SET_RREQ_DELAY, 23062306a36Sopenharmony_ci CMD_ACT_MESH_GET_RREQ_DELAY, 23162306a36Sopenharmony_ci CMD_ACT_MESH_SET_ROUTE_EXP, 23262306a36Sopenharmony_ci CMD_ACT_MESH_GET_ROUTE_EXP, 23362306a36Sopenharmony_ci CMD_ACT_MESH_SET_AUTOSTART_ENABLED, 23462306a36Sopenharmony_ci CMD_ACT_MESH_GET_AUTOSTART_ENABLED, 23562306a36Sopenharmony_ci CMD_ACT_MESH_SET_GET_PRB_RSP_LIMIT = 17, 23662306a36Sopenharmony_ci}; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci/* Define actions and types for CMD_MESH_CONFIG */ 23962306a36Sopenharmony_cienum cmd_mesh_config_actions { 24062306a36Sopenharmony_ci CMD_ACT_MESH_CONFIG_STOP = 0, 24162306a36Sopenharmony_ci CMD_ACT_MESH_CONFIG_START, 24262306a36Sopenharmony_ci CMD_ACT_MESH_CONFIG_SET, 24362306a36Sopenharmony_ci CMD_ACT_MESH_CONFIG_GET, 24462306a36Sopenharmony_ci}; 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_cienum cmd_mesh_config_types { 24762306a36Sopenharmony_ci CMD_TYPE_MESH_SET_BOOTFLAG = 1, 24862306a36Sopenharmony_ci CMD_TYPE_MESH_SET_BOOTTIME, 24962306a36Sopenharmony_ci CMD_TYPE_MESH_SET_DEF_CHANNEL, 25062306a36Sopenharmony_ci CMD_TYPE_MESH_SET_MESH_IE, 25162306a36Sopenharmony_ci CMD_TYPE_MESH_GET_DEFAULTS, 25262306a36Sopenharmony_ci CMD_TYPE_MESH_GET_MESH_IE, /* GET_DEFAULTS is superset of GET_MESHIE */ 25362306a36Sopenharmony_ci}; 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci/* Card Event definition */ 25662306a36Sopenharmony_ci#define MACREG_INT_CODE_TX_PPA_FREE 0 25762306a36Sopenharmony_ci#define MACREG_INT_CODE_TX_DMA_DONE 1 25862306a36Sopenharmony_ci#define MACREG_INT_CODE_LINK_LOST_W_SCAN 2 25962306a36Sopenharmony_ci#define MACREG_INT_CODE_LINK_LOST_NO_SCAN 3 26062306a36Sopenharmony_ci#define MACREG_INT_CODE_LINK_SENSED 4 26162306a36Sopenharmony_ci#define MACREG_INT_CODE_CMD_FINISHED 5 26262306a36Sopenharmony_ci#define MACREG_INT_CODE_MIB_CHANGED 6 26362306a36Sopenharmony_ci#define MACREG_INT_CODE_INIT_DONE 7 26462306a36Sopenharmony_ci#define MACREG_INT_CODE_DEAUTHENTICATED 8 26562306a36Sopenharmony_ci#define MACREG_INT_CODE_DISASSOCIATED 9 26662306a36Sopenharmony_ci#define MACREG_INT_CODE_PS_AWAKE 10 26762306a36Sopenharmony_ci#define MACREG_INT_CODE_PS_SLEEP 11 26862306a36Sopenharmony_ci#define MACREG_INT_CODE_MIC_ERR_MULTICAST 13 26962306a36Sopenharmony_ci#define MACREG_INT_CODE_MIC_ERR_UNICAST 14 27062306a36Sopenharmony_ci#define MACREG_INT_CODE_WM_AWAKE 15 27162306a36Sopenharmony_ci#define MACREG_INT_CODE_DEEP_SLEEP_AWAKE 16 27262306a36Sopenharmony_ci#define MACREG_INT_CODE_ADHOC_BCN_LOST 17 27362306a36Sopenharmony_ci#define MACREG_INT_CODE_HOST_AWAKE 18 27462306a36Sopenharmony_ci#define MACREG_INT_CODE_STOP_TX 19 27562306a36Sopenharmony_ci#define MACREG_INT_CODE_START_TX 20 27662306a36Sopenharmony_ci#define MACREG_INT_CODE_CHANNEL_SWITCH 21 27762306a36Sopenharmony_ci#define MACREG_INT_CODE_MEASUREMENT_RDY 22 27862306a36Sopenharmony_ci#define MACREG_INT_CODE_WMM_CHANGE 23 27962306a36Sopenharmony_ci#define MACREG_INT_CODE_BG_SCAN_REPORT 24 28062306a36Sopenharmony_ci#define MACREG_INT_CODE_RSSI_LOW 25 28162306a36Sopenharmony_ci#define MACREG_INT_CODE_SNR_LOW 26 28262306a36Sopenharmony_ci#define MACREG_INT_CODE_MAX_FAIL 27 28362306a36Sopenharmony_ci#define MACREG_INT_CODE_RSSI_HIGH 28 28462306a36Sopenharmony_ci#define MACREG_INT_CODE_SNR_HIGH 29 28562306a36Sopenharmony_ci#define MACREG_INT_CODE_MESH_AUTO_STARTED 35 28662306a36Sopenharmony_ci#define MACREG_INT_CODE_FIRMWARE_READY 48 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci/* 802.11-related definitions */ 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci/* TxPD descriptor */ 29262306a36Sopenharmony_cistruct txpd { 29362306a36Sopenharmony_ci /* union to cope up with later FW revisions */ 29462306a36Sopenharmony_ci union { 29562306a36Sopenharmony_ci /* Current Tx packet status */ 29662306a36Sopenharmony_ci __le32 tx_status; 29762306a36Sopenharmony_ci struct { 29862306a36Sopenharmony_ci /* BSS type: client, AP, etc. */ 29962306a36Sopenharmony_ci u8 bss_type; 30062306a36Sopenharmony_ci /* BSS number */ 30162306a36Sopenharmony_ci u8 bss_num; 30262306a36Sopenharmony_ci /* Reserved */ 30362306a36Sopenharmony_ci __le16 reserved; 30462306a36Sopenharmony_ci } bss; 30562306a36Sopenharmony_ci } u; 30662306a36Sopenharmony_ci /* Tx control */ 30762306a36Sopenharmony_ci __le32 tx_control; 30862306a36Sopenharmony_ci __le32 tx_packet_location; 30962306a36Sopenharmony_ci /* Tx packet length */ 31062306a36Sopenharmony_ci __le16 tx_packet_length; 31162306a36Sopenharmony_ci struct_group_attr(tx_dest_addr, __packed, 31262306a36Sopenharmony_ci /* First 2 byte of destination MAC address */ 31362306a36Sopenharmony_ci u8 tx_dest_addr_high[2]; 31462306a36Sopenharmony_ci /* Last 4 byte of destination MAC address */ 31562306a36Sopenharmony_ci u8 tx_dest_addr_low[4]; 31662306a36Sopenharmony_ci ); 31762306a36Sopenharmony_ci /* Pkt Priority */ 31862306a36Sopenharmony_ci u8 priority; 31962306a36Sopenharmony_ci /* Pkt Trasnit Power control */ 32062306a36Sopenharmony_ci u8 powermgmt; 32162306a36Sopenharmony_ci /* Amount of time the packet has been queued (units = 2ms) */ 32262306a36Sopenharmony_ci u8 pktdelay_2ms; 32362306a36Sopenharmony_ci /* reserved */ 32462306a36Sopenharmony_ci u8 reserved1; 32562306a36Sopenharmony_ci} __packed; 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ci/* RxPD Descriptor */ 32862306a36Sopenharmony_cistruct rxpd { 32962306a36Sopenharmony_ci /* union to cope up with later FW revisions */ 33062306a36Sopenharmony_ci union { 33162306a36Sopenharmony_ci /* Current Rx packet status */ 33262306a36Sopenharmony_ci __le16 status; 33362306a36Sopenharmony_ci struct { 33462306a36Sopenharmony_ci /* BSS type: client, AP, etc. */ 33562306a36Sopenharmony_ci u8 bss_type; 33662306a36Sopenharmony_ci /* BSS number */ 33762306a36Sopenharmony_ci u8 bss_num; 33862306a36Sopenharmony_ci } __packed bss; 33962306a36Sopenharmony_ci } __packed u; 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci /* SNR */ 34262306a36Sopenharmony_ci u8 snr; 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci /* Tx control */ 34562306a36Sopenharmony_ci u8 rx_control; 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci /* Pkt length */ 34862306a36Sopenharmony_ci __le16 pkt_len; 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci /* Noise Floor */ 35162306a36Sopenharmony_ci u8 nf; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci /* Rx Packet Rate */ 35462306a36Sopenharmony_ci u8 rx_rate; 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci /* Pkt addr */ 35762306a36Sopenharmony_ci __le32 pkt_ptr; 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci /* Next Rx RxPD addr */ 36062306a36Sopenharmony_ci __le32 next_rxpd_ptr; 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ci /* Pkt Priority */ 36362306a36Sopenharmony_ci u8 priority; 36462306a36Sopenharmony_ci u8 reserved[3]; 36562306a36Sopenharmony_ci} __packed; 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_cistruct cmd_header { 36862306a36Sopenharmony_ci __le16 command; 36962306a36Sopenharmony_ci __le16 size; 37062306a36Sopenharmony_ci __le16 seqnum; 37162306a36Sopenharmony_ci __le16 result; 37262306a36Sopenharmony_ci} __packed; 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci/* Generic structure to hold all key types. */ 37562306a36Sopenharmony_cistruct enc_key { 37662306a36Sopenharmony_ci u16 len; 37762306a36Sopenharmony_ci u16 flags; /* KEY_INFO_* from defs.h */ 37862306a36Sopenharmony_ci u16 type; /* KEY_TYPE_* from defs.h */ 37962306a36Sopenharmony_ci u8 key[32]; 38062306a36Sopenharmony_ci}; 38162306a36Sopenharmony_ci 38262306a36Sopenharmony_ci/* lbs_offset_value */ 38362306a36Sopenharmony_cistruct lbs_offset_value { 38462306a36Sopenharmony_ci u32 offset; 38562306a36Sopenharmony_ci u32 value; 38662306a36Sopenharmony_ci} __packed; 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ci#define MAX_11D_TRIPLETS 83 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_cistruct mrvl_ie_domain_param_set { 39162306a36Sopenharmony_ci struct mrvl_ie_header header; 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ci u8 country_code[IEEE80211_COUNTRY_STRING_LEN]; 39462306a36Sopenharmony_ci struct ieee80211_country_ie_triplet triplet[MAX_11D_TRIPLETS]; 39562306a36Sopenharmony_ci} __packed; 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_cistruct cmd_ds_802_11d_domain_info { 39862306a36Sopenharmony_ci struct cmd_header hdr; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci __le16 action; 40162306a36Sopenharmony_ci struct mrvl_ie_domain_param_set domain; 40262306a36Sopenharmony_ci} __packed; 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ci/* 40562306a36Sopenharmony_ci * Define data structure for CMD_GET_HW_SPEC 40662306a36Sopenharmony_ci * This structure defines the response for the GET_HW_SPEC command 40762306a36Sopenharmony_ci */ 40862306a36Sopenharmony_cistruct cmd_ds_get_hw_spec { 40962306a36Sopenharmony_ci struct cmd_header hdr; 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci /* HW Interface version number */ 41262306a36Sopenharmony_ci __le16 hwifversion; 41362306a36Sopenharmony_ci /* HW version number */ 41462306a36Sopenharmony_ci __le16 version; 41562306a36Sopenharmony_ci /* Max number of TxPD FW can handle */ 41662306a36Sopenharmony_ci __le16 nr_txpd; 41762306a36Sopenharmony_ci /* Max no of Multicast address */ 41862306a36Sopenharmony_ci __le16 nr_mcast_adr; 41962306a36Sopenharmony_ci /* MAC address */ 42062306a36Sopenharmony_ci u8 permanentaddr[6]; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci /* region Code */ 42362306a36Sopenharmony_ci __le16 regioncode; 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_ci /* Number of antenna used */ 42662306a36Sopenharmony_ci __le16 nr_antenna; 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci /* FW release number, example 0x01030304 = 2.3.4p1 */ 42962306a36Sopenharmony_ci __le32 fwrelease; 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci /* Base Address of TxPD queue */ 43262306a36Sopenharmony_ci __le32 wcb_base; 43362306a36Sopenharmony_ci /* Read Pointer of RxPd queue */ 43462306a36Sopenharmony_ci __le32 rxpd_rdptr; 43562306a36Sopenharmony_ci 43662306a36Sopenharmony_ci /* Write Pointer of RxPd queue */ 43762306a36Sopenharmony_ci __le32 rxpd_wrptr; 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci /*FW/HW capability */ 44062306a36Sopenharmony_ci __le32 fwcapinfo; 44162306a36Sopenharmony_ci} __packed; 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_cistruct cmd_ds_802_11_subscribe_event { 44462306a36Sopenharmony_ci struct cmd_header hdr; 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_ci __le16 action; 44762306a36Sopenharmony_ci __le16 events; 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_ci /* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a 45062306a36Sopenharmony_ci * number of TLVs. From the v5.1 manual, those TLVs would add up to 45162306a36Sopenharmony_ci * 40 bytes. However, future firmware might add additional TLVs, so I 45262306a36Sopenharmony_ci * bump this up a bit. 45362306a36Sopenharmony_ci */ 45462306a36Sopenharmony_ci uint8_t tlv[128]; 45562306a36Sopenharmony_ci} __packed; 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ci/* 45862306a36Sopenharmony_ci * This scan handle Country Information IE(802.11d compliant) 45962306a36Sopenharmony_ci * Define data structure for CMD_802_11_SCAN 46062306a36Sopenharmony_ci */ 46162306a36Sopenharmony_cistruct cmd_ds_802_11_scan { 46262306a36Sopenharmony_ci struct cmd_header hdr; 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci uint8_t bsstype; 46562306a36Sopenharmony_ci uint8_t bssid[ETH_ALEN]; 46662306a36Sopenharmony_ci uint8_t tlvbuffer[]; 46762306a36Sopenharmony_ci} __packed; 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_cistruct cmd_ds_802_11_scan_rsp { 47062306a36Sopenharmony_ci struct cmd_header hdr; 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ci __le16 bssdescriptsize; 47362306a36Sopenharmony_ci uint8_t nr_sets; 47462306a36Sopenharmony_ci uint8_t bssdesc_and_tlvbuffer[]; 47562306a36Sopenharmony_ci} __packed; 47662306a36Sopenharmony_ci 47762306a36Sopenharmony_cistruct cmd_ds_802_11_get_log { 47862306a36Sopenharmony_ci struct cmd_header hdr; 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci __le32 mcasttxframe; 48162306a36Sopenharmony_ci __le32 failed; 48262306a36Sopenharmony_ci __le32 retry; 48362306a36Sopenharmony_ci __le32 multiretry; 48462306a36Sopenharmony_ci __le32 framedup; 48562306a36Sopenharmony_ci __le32 rtssuccess; 48662306a36Sopenharmony_ci __le32 rtsfailure; 48762306a36Sopenharmony_ci __le32 ackfailure; 48862306a36Sopenharmony_ci __le32 rxfrag; 48962306a36Sopenharmony_ci __le32 mcastrxframe; 49062306a36Sopenharmony_ci __le32 fcserror; 49162306a36Sopenharmony_ci __le32 txframe; 49262306a36Sopenharmony_ci __le32 wepundecryptable; 49362306a36Sopenharmony_ci} __packed; 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_cistruct cmd_ds_mac_control { 49662306a36Sopenharmony_ci struct cmd_header hdr; 49762306a36Sopenharmony_ci __le16 action; 49862306a36Sopenharmony_ci u16 reserved; 49962306a36Sopenharmony_ci} __packed; 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_cistruct cmd_ds_mac_multicast_adr { 50262306a36Sopenharmony_ci struct cmd_header hdr; 50362306a36Sopenharmony_ci __le16 action; 50462306a36Sopenharmony_ci __le16 nr_of_adrs; 50562306a36Sopenharmony_ci u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE]; 50662306a36Sopenharmony_ci} __packed; 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_cistruct cmd_ds_802_11_authenticate { 50962306a36Sopenharmony_ci struct cmd_header hdr; 51062306a36Sopenharmony_ci 51162306a36Sopenharmony_ci u8 bssid[ETH_ALEN]; 51262306a36Sopenharmony_ci u8 authtype; 51362306a36Sopenharmony_ci u8 reserved[10]; 51462306a36Sopenharmony_ci} __packed; 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_cistruct cmd_ds_802_11_deauthenticate { 51762306a36Sopenharmony_ci struct cmd_header hdr; 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_ci u8 macaddr[ETH_ALEN]; 52062306a36Sopenharmony_ci __le16 reasoncode; 52162306a36Sopenharmony_ci} __packed; 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_cistruct cmd_ds_802_11_associate { 52462306a36Sopenharmony_ci struct cmd_header hdr; 52562306a36Sopenharmony_ci 52662306a36Sopenharmony_ci u8 bssid[6]; 52762306a36Sopenharmony_ci __le16 capability; 52862306a36Sopenharmony_ci __le16 listeninterval; 52962306a36Sopenharmony_ci __le16 bcnperiod; 53062306a36Sopenharmony_ci u8 dtimperiod; 53162306a36Sopenharmony_ci /* 512 permitted - enough for required and most optional IEs */ 53262306a36Sopenharmony_ci u8 iebuf[]; 53362306a36Sopenharmony_ci} __packed; 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_cistruct cmd_ds_802_11_associate_response { 53662306a36Sopenharmony_ci struct cmd_header hdr; 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ci __le16 capability; 53962306a36Sopenharmony_ci __le16 statuscode; 54062306a36Sopenharmony_ci __le16 aid; 54162306a36Sopenharmony_ci /* max 512 */ 54262306a36Sopenharmony_ci u8 iebuf[]; 54362306a36Sopenharmony_ci} __packed; 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_cistruct cmd_ds_802_11_set_wep { 54662306a36Sopenharmony_ci struct cmd_header hdr; 54762306a36Sopenharmony_ci 54862306a36Sopenharmony_ci /* ACT_ADD, ACT_REMOVE or ACT_ENABLE */ 54962306a36Sopenharmony_ci __le16 action; 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci /* key Index selected for Tx */ 55262306a36Sopenharmony_ci __le16 keyindex; 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_ci /* 40, 128bit or TXWEP */ 55562306a36Sopenharmony_ci uint8_t keytype[4]; 55662306a36Sopenharmony_ci uint8_t keymaterial[4][16]; 55762306a36Sopenharmony_ci} __packed; 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_cistruct cmd_ds_802_11_snmp_mib { 56062306a36Sopenharmony_ci struct cmd_header hdr; 56162306a36Sopenharmony_ci 56262306a36Sopenharmony_ci __le16 action; 56362306a36Sopenharmony_ci __le16 oid; 56462306a36Sopenharmony_ci __le16 bufsize; 56562306a36Sopenharmony_ci u8 value[128]; 56662306a36Sopenharmony_ci} __packed; 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_cistruct cmd_ds_reg_access { 56962306a36Sopenharmony_ci struct cmd_header hdr; 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_ci __le16 action; 57262306a36Sopenharmony_ci __le16 offset; 57362306a36Sopenharmony_ci union { 57462306a36Sopenharmony_ci u8 bbp_rf; /* for BBP and RF registers */ 57562306a36Sopenharmony_ci __le32 mac; /* for MAC registers */ 57662306a36Sopenharmony_ci } value; 57762306a36Sopenharmony_ci} __packed; 57862306a36Sopenharmony_ci 57962306a36Sopenharmony_cistruct cmd_ds_802_11_radio_control { 58062306a36Sopenharmony_ci struct cmd_header hdr; 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci __le16 action; 58362306a36Sopenharmony_ci __le16 control; 58462306a36Sopenharmony_ci} __packed; 58562306a36Sopenharmony_ci 58662306a36Sopenharmony_cistruct cmd_ds_802_11_beacon_control { 58762306a36Sopenharmony_ci struct cmd_header hdr; 58862306a36Sopenharmony_ci 58962306a36Sopenharmony_ci __le16 action; 59062306a36Sopenharmony_ci __le16 beacon_enable; 59162306a36Sopenharmony_ci __le16 beacon_period; 59262306a36Sopenharmony_ci} __packed; 59362306a36Sopenharmony_ci 59462306a36Sopenharmony_cistruct cmd_ds_802_11_sleep_params { 59562306a36Sopenharmony_ci struct cmd_header hdr; 59662306a36Sopenharmony_ci 59762306a36Sopenharmony_ci /* ACT_GET/ACT_SET */ 59862306a36Sopenharmony_ci __le16 action; 59962306a36Sopenharmony_ci 60062306a36Sopenharmony_ci /* Sleep clock error in ppm */ 60162306a36Sopenharmony_ci __le16 error; 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ci /* Wakeup offset in usec */ 60462306a36Sopenharmony_ci __le16 offset; 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_ci /* Clock stabilization time in usec */ 60762306a36Sopenharmony_ci __le16 stabletime; 60862306a36Sopenharmony_ci 60962306a36Sopenharmony_ci /* control periodic calibration */ 61062306a36Sopenharmony_ci uint8_t calcontrol; 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ci /* control the use of external sleep clock */ 61362306a36Sopenharmony_ci uint8_t externalsleepclk; 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ci /* reserved field, should be set to zero */ 61662306a36Sopenharmony_ci __le16 reserved; 61762306a36Sopenharmony_ci} __packed; 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_cistruct cmd_ds_802_11_rf_channel { 62062306a36Sopenharmony_ci struct cmd_header hdr; 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci __le16 action; 62362306a36Sopenharmony_ci __le16 channel; 62462306a36Sopenharmony_ci __le16 rftype; /* unused */ 62562306a36Sopenharmony_ci __le16 reserved; /* unused */ 62662306a36Sopenharmony_ci u8 channellist[32]; /* unused */ 62762306a36Sopenharmony_ci} __packed; 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_cistruct cmd_ds_802_11_rssi { 63062306a36Sopenharmony_ci struct cmd_header hdr; 63162306a36Sopenharmony_ci 63262306a36Sopenharmony_ci /* 63362306a36Sopenharmony_ci * request: number of beacons (N) to average the SNR and NF over 63462306a36Sopenharmony_ci * response: SNR of most recent beacon 63562306a36Sopenharmony_ci */ 63662306a36Sopenharmony_ci __le16 n_or_snr; 63762306a36Sopenharmony_ci 63862306a36Sopenharmony_ci /* 63962306a36Sopenharmony_ci * The following fields are only set in the response. 64062306a36Sopenharmony_ci * In the request these are reserved and should be set to 0. 64162306a36Sopenharmony_ci */ 64262306a36Sopenharmony_ci __le16 nf; /* most recent beacon noise floor */ 64362306a36Sopenharmony_ci __le16 avg_snr; /* average SNR weighted by N from request */ 64462306a36Sopenharmony_ci __le16 avg_nf; /* average noise floor weighted by N from request */ 64562306a36Sopenharmony_ci} __packed; 64662306a36Sopenharmony_ci 64762306a36Sopenharmony_cistruct cmd_ds_802_11_mac_address { 64862306a36Sopenharmony_ci struct cmd_header hdr; 64962306a36Sopenharmony_ci 65062306a36Sopenharmony_ci __le16 action; 65162306a36Sopenharmony_ci u8 macadd[ETH_ALEN]; 65262306a36Sopenharmony_ci} __packed; 65362306a36Sopenharmony_ci 65462306a36Sopenharmony_cistruct cmd_ds_802_11_rf_tx_power { 65562306a36Sopenharmony_ci struct cmd_header hdr; 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci __le16 action; 65862306a36Sopenharmony_ci __le16 curlevel; 65962306a36Sopenharmony_ci s8 maxlevel; 66062306a36Sopenharmony_ci s8 minlevel; 66162306a36Sopenharmony_ci} __packed; 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ci/* MONITOR_MODE only exists in OLPC v5 firmware */ 66462306a36Sopenharmony_cistruct cmd_ds_802_11_monitor_mode { 66562306a36Sopenharmony_ci struct cmd_header hdr; 66662306a36Sopenharmony_ci 66762306a36Sopenharmony_ci __le16 action; 66862306a36Sopenharmony_ci __le16 mode; 66962306a36Sopenharmony_ci} __packed; 67062306a36Sopenharmony_ci 67162306a36Sopenharmony_cistruct cmd_ds_set_boot2_ver { 67262306a36Sopenharmony_ci struct cmd_header hdr; 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci __le16 action; 67562306a36Sopenharmony_ci __le16 version; 67662306a36Sopenharmony_ci} __packed; 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_cistruct cmd_ds_802_11_fw_wake_method { 67962306a36Sopenharmony_ci struct cmd_header hdr; 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_ci __le16 action; 68262306a36Sopenharmony_ci __le16 method; 68362306a36Sopenharmony_ci} __packed; 68462306a36Sopenharmony_ci 68562306a36Sopenharmony_cistruct cmd_ds_802_11_ps_mode { 68662306a36Sopenharmony_ci struct cmd_header hdr; 68762306a36Sopenharmony_ci 68862306a36Sopenharmony_ci __le16 action; 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci /* 69162306a36Sopenharmony_ci * Interval for keepalive in PS mode: 69262306a36Sopenharmony_ci * 0x0000 = don't change 69362306a36Sopenharmony_ci * 0x001E = firmware default 69462306a36Sopenharmony_ci * 0xFFFF = disable 69562306a36Sopenharmony_ci */ 69662306a36Sopenharmony_ci __le16 nullpktinterval; 69762306a36Sopenharmony_ci 69862306a36Sopenharmony_ci /* 69962306a36Sopenharmony_ci * Number of DTIM intervals to wake up for: 70062306a36Sopenharmony_ci * 0 = don't change 70162306a36Sopenharmony_ci * 1 = firmware default 70262306a36Sopenharmony_ci * 5 = max 70362306a36Sopenharmony_ci */ 70462306a36Sopenharmony_ci __le16 multipledtim; 70562306a36Sopenharmony_ci 70662306a36Sopenharmony_ci __le16 reserved; 70762306a36Sopenharmony_ci __le16 locallisteninterval; 70862306a36Sopenharmony_ci 70962306a36Sopenharmony_ci /* 71062306a36Sopenharmony_ci * AdHoc awake period (FW v9+ only): 71162306a36Sopenharmony_ci * 0 = don't change 71262306a36Sopenharmony_ci * 1 = always awake (IEEE standard behavior) 71362306a36Sopenharmony_ci * 2 - 31 = sleep for (n - 1) periods and awake for 1 period 71462306a36Sopenharmony_ci * 32 - 254 = invalid 71562306a36Sopenharmony_ci * 255 = sleep at each ATIM 71662306a36Sopenharmony_ci */ 71762306a36Sopenharmony_ci __le16 adhoc_awake_period; 71862306a36Sopenharmony_ci} __packed; 71962306a36Sopenharmony_ci 72062306a36Sopenharmony_cistruct cmd_confirm_sleep { 72162306a36Sopenharmony_ci struct cmd_header hdr; 72262306a36Sopenharmony_ci 72362306a36Sopenharmony_ci __le16 action; 72462306a36Sopenharmony_ci __le16 nullpktinterval; 72562306a36Sopenharmony_ci __le16 multipledtim; 72662306a36Sopenharmony_ci __le16 reserved; 72762306a36Sopenharmony_ci __le16 locallisteninterval; 72862306a36Sopenharmony_ci} __packed; 72962306a36Sopenharmony_ci 73062306a36Sopenharmony_cistruct cmd_ds_802_11_data_rate { 73162306a36Sopenharmony_ci struct cmd_header hdr; 73262306a36Sopenharmony_ci 73362306a36Sopenharmony_ci __le16 action; 73462306a36Sopenharmony_ci __le16 reserved; 73562306a36Sopenharmony_ci u8 rates[MAX_RATES]; 73662306a36Sopenharmony_ci} __packed; 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_cistruct cmd_ds_802_11_rate_adapt_rateset { 73962306a36Sopenharmony_ci struct cmd_header hdr; 74062306a36Sopenharmony_ci __le16 action; 74162306a36Sopenharmony_ci __le16 enablehwauto; 74262306a36Sopenharmony_ci __le16 bitmap; 74362306a36Sopenharmony_ci} __packed; 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_cistruct cmd_ds_802_11_ad_hoc_start { 74662306a36Sopenharmony_ci struct cmd_header hdr; 74762306a36Sopenharmony_ci 74862306a36Sopenharmony_ci u8 ssid[IEEE80211_MAX_SSID_LEN]; 74962306a36Sopenharmony_ci u8 bsstype; 75062306a36Sopenharmony_ci __le16 beaconperiod; 75162306a36Sopenharmony_ci u8 dtimperiod; /* Reserved on v9 and later */ 75262306a36Sopenharmony_ci struct ieee_ie_ibss_param_set ibss; 75362306a36Sopenharmony_ci u8 reserved1[4]; 75462306a36Sopenharmony_ci struct ieee_ie_ds_param_set ds; 75562306a36Sopenharmony_ci u8 reserved2[4]; 75662306a36Sopenharmony_ci __le16 probedelay; /* Reserved on v9 and later */ 75762306a36Sopenharmony_ci __le16 capability; 75862306a36Sopenharmony_ci u8 rates[MAX_RATES]; 75962306a36Sopenharmony_ci u8 tlv_memory_size_pad[100]; 76062306a36Sopenharmony_ci} __packed; 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_cistruct cmd_ds_802_11_ad_hoc_result { 76362306a36Sopenharmony_ci struct cmd_header hdr; 76462306a36Sopenharmony_ci 76562306a36Sopenharmony_ci u8 pad[3]; 76662306a36Sopenharmony_ci u8 bssid[ETH_ALEN]; 76762306a36Sopenharmony_ci} __packed; 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_cistruct adhoc_bssdesc { 77062306a36Sopenharmony_ci u8 bssid[ETH_ALEN]; 77162306a36Sopenharmony_ci u8 ssid[IEEE80211_MAX_SSID_LEN]; 77262306a36Sopenharmony_ci u8 type; 77362306a36Sopenharmony_ci __le16 beaconperiod; 77462306a36Sopenharmony_ci u8 dtimperiod; 77562306a36Sopenharmony_ci __le64 timestamp; 77662306a36Sopenharmony_ci __le64 localtime; 77762306a36Sopenharmony_ci struct ieee_ie_ds_param_set ds; 77862306a36Sopenharmony_ci u8 reserved1[4]; 77962306a36Sopenharmony_ci struct ieee_ie_ibss_param_set ibss; 78062306a36Sopenharmony_ci u8 reserved2[4]; 78162306a36Sopenharmony_ci __le16 capability; 78262306a36Sopenharmony_ci u8 rates[MAX_RATES]; 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ci /* 78562306a36Sopenharmony_ci * DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the 78662306a36Sopenharmony_ci * Adhoc join command and will cause a binary layout mismatch with 78762306a36Sopenharmony_ci * the firmware 78862306a36Sopenharmony_ci */ 78962306a36Sopenharmony_ci} __packed; 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_cistruct cmd_ds_802_11_ad_hoc_join { 79262306a36Sopenharmony_ci struct cmd_header hdr; 79362306a36Sopenharmony_ci 79462306a36Sopenharmony_ci struct adhoc_bssdesc bss; 79562306a36Sopenharmony_ci __le16 failtimeout; /* Reserved on v9 and later */ 79662306a36Sopenharmony_ci __le16 probedelay; /* Reserved on v9 and later */ 79762306a36Sopenharmony_ci} __packed; 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_cistruct cmd_ds_802_11_ad_hoc_stop { 80062306a36Sopenharmony_ci struct cmd_header hdr; 80162306a36Sopenharmony_ci} __packed; 80262306a36Sopenharmony_ci 80362306a36Sopenharmony_cistruct cmd_ds_802_11_enable_rsn { 80462306a36Sopenharmony_ci struct cmd_header hdr; 80562306a36Sopenharmony_ci 80662306a36Sopenharmony_ci __le16 action; 80762306a36Sopenharmony_ci __le16 enable; 80862306a36Sopenharmony_ci} __packed; 80962306a36Sopenharmony_ci 81062306a36Sopenharmony_cistruct MrvlIEtype_keyParamSet { 81162306a36Sopenharmony_ci /* type ID */ 81262306a36Sopenharmony_ci __le16 type; 81362306a36Sopenharmony_ci 81462306a36Sopenharmony_ci /* length of Payload */ 81562306a36Sopenharmony_ci __le16 length; 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ci /* type of key: WEP=0, TKIP=1, AES=2 */ 81862306a36Sopenharmony_ci __le16 keytypeid; 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_ci /* key control Info specific to a keytypeid */ 82162306a36Sopenharmony_ci __le16 keyinfo; 82262306a36Sopenharmony_ci 82362306a36Sopenharmony_ci /* length of key */ 82462306a36Sopenharmony_ci __le16 keylen; 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_ci /* key material of size keylen */ 82762306a36Sopenharmony_ci u8 key[32]; 82862306a36Sopenharmony_ci} __packed; 82962306a36Sopenharmony_ci 83062306a36Sopenharmony_ci#define MAX_WOL_RULES 16 83162306a36Sopenharmony_ci 83262306a36Sopenharmony_cistruct host_wol_rule { 83362306a36Sopenharmony_ci uint8_t rule_no; 83462306a36Sopenharmony_ci uint8_t rule_ops; 83562306a36Sopenharmony_ci __le16 sig_offset; 83662306a36Sopenharmony_ci __le16 sig_length; 83762306a36Sopenharmony_ci __le16 reserve; 83862306a36Sopenharmony_ci __be32 sig_mask; 83962306a36Sopenharmony_ci __be32 signature; 84062306a36Sopenharmony_ci} __packed; 84162306a36Sopenharmony_ci 84262306a36Sopenharmony_cistruct wol_config { 84362306a36Sopenharmony_ci uint8_t action; 84462306a36Sopenharmony_ci uint8_t pattern; 84562306a36Sopenharmony_ci uint8_t no_rules_in_cmd; 84662306a36Sopenharmony_ci uint8_t result; 84762306a36Sopenharmony_ci struct host_wol_rule rule[MAX_WOL_RULES]; 84862306a36Sopenharmony_ci} __packed; 84962306a36Sopenharmony_ci 85062306a36Sopenharmony_cistruct cmd_ds_host_sleep { 85162306a36Sopenharmony_ci struct cmd_header hdr; 85262306a36Sopenharmony_ci __le32 criteria; 85362306a36Sopenharmony_ci uint8_t gpio; 85462306a36Sopenharmony_ci uint16_t gap; 85562306a36Sopenharmony_ci struct wol_config wol_conf; 85662306a36Sopenharmony_ci} __packed; 85762306a36Sopenharmony_ci 85862306a36Sopenharmony_ci 85962306a36Sopenharmony_ci 86062306a36Sopenharmony_cistruct cmd_ds_802_11_key_material { 86162306a36Sopenharmony_ci struct cmd_header hdr; 86262306a36Sopenharmony_ci 86362306a36Sopenharmony_ci __le16 action; 86462306a36Sopenharmony_ci struct MrvlIEtype_keyParamSet keyParamSet[2]; 86562306a36Sopenharmony_ci} __packed; 86662306a36Sopenharmony_ci 86762306a36Sopenharmony_cistruct cmd_ds_802_11_eeprom_access { 86862306a36Sopenharmony_ci struct cmd_header hdr; 86962306a36Sopenharmony_ci __le16 action; 87062306a36Sopenharmony_ci __le16 offset; 87162306a36Sopenharmony_ci __le16 len; 87262306a36Sopenharmony_ci /* firmware says it returns a maximum of 20 bytes */ 87362306a36Sopenharmony_ci#define LBS_EEPROM_READ_LEN 20 87462306a36Sopenharmony_ci u8 value[LBS_EEPROM_READ_LEN]; 87562306a36Sopenharmony_ci} __packed; 87662306a36Sopenharmony_ci 87762306a36Sopenharmony_cistruct cmd_ds_802_11_tpc_cfg { 87862306a36Sopenharmony_ci struct cmd_header hdr; 87962306a36Sopenharmony_ci 88062306a36Sopenharmony_ci __le16 action; 88162306a36Sopenharmony_ci uint8_t enable; 88262306a36Sopenharmony_ci int8_t P0; 88362306a36Sopenharmony_ci int8_t P1; 88462306a36Sopenharmony_ci int8_t P2; 88562306a36Sopenharmony_ci uint8_t usesnr; 88662306a36Sopenharmony_ci} __packed; 88762306a36Sopenharmony_ci 88862306a36Sopenharmony_ci 88962306a36Sopenharmony_cistruct cmd_ds_802_11_pa_cfg { 89062306a36Sopenharmony_ci struct cmd_header hdr; 89162306a36Sopenharmony_ci 89262306a36Sopenharmony_ci __le16 action; 89362306a36Sopenharmony_ci uint8_t enable; 89462306a36Sopenharmony_ci int8_t P0; 89562306a36Sopenharmony_ci int8_t P1; 89662306a36Sopenharmony_ci int8_t P2; 89762306a36Sopenharmony_ci} __packed; 89862306a36Sopenharmony_ci 89962306a36Sopenharmony_ci 90062306a36Sopenharmony_cistruct cmd_ds_802_11_led_ctrl { 90162306a36Sopenharmony_ci struct cmd_header hdr; 90262306a36Sopenharmony_ci 90362306a36Sopenharmony_ci __le16 action; 90462306a36Sopenharmony_ci __le16 numled; 90562306a36Sopenharmony_ci u8 data[256]; 90662306a36Sopenharmony_ci} __packed; 90762306a36Sopenharmony_ci 90862306a36Sopenharmony_ci/* Automatic Frequency Control */ 90962306a36Sopenharmony_cistruct cmd_ds_802_11_afc { 91062306a36Sopenharmony_ci struct cmd_header hdr; 91162306a36Sopenharmony_ci 91262306a36Sopenharmony_ci __le16 afc_auto; 91362306a36Sopenharmony_ci union { 91462306a36Sopenharmony_ci struct { 91562306a36Sopenharmony_ci __le16 threshold; 91662306a36Sopenharmony_ci __le16 period; 91762306a36Sopenharmony_ci }; 91862306a36Sopenharmony_ci struct { 91962306a36Sopenharmony_ci __le16 timing_offset; /* signed */ 92062306a36Sopenharmony_ci __le16 carrier_offset; /* signed */ 92162306a36Sopenharmony_ci }; 92262306a36Sopenharmony_ci }; 92362306a36Sopenharmony_ci} __packed; 92462306a36Sopenharmony_ci 92562306a36Sopenharmony_cistruct cmd_tx_rate_query { 92662306a36Sopenharmony_ci __le16 txrate; 92762306a36Sopenharmony_ci} __packed; 92862306a36Sopenharmony_ci 92962306a36Sopenharmony_cistruct cmd_ds_get_tsf { 93062306a36Sopenharmony_ci __le64 tsfvalue; 93162306a36Sopenharmony_ci} __packed; 93262306a36Sopenharmony_ci 93362306a36Sopenharmony_cistruct cmd_ds_bt_access { 93462306a36Sopenharmony_ci struct cmd_header hdr; 93562306a36Sopenharmony_ci 93662306a36Sopenharmony_ci __le16 action; 93762306a36Sopenharmony_ci __le32 id; 93862306a36Sopenharmony_ci u8 addr1[ETH_ALEN]; 93962306a36Sopenharmony_ci u8 addr2[ETH_ALEN]; 94062306a36Sopenharmony_ci} __packed; 94162306a36Sopenharmony_ci 94262306a36Sopenharmony_cistruct cmd_ds_fwt_access { 94362306a36Sopenharmony_ci struct cmd_header hdr; 94462306a36Sopenharmony_ci 94562306a36Sopenharmony_ci __le16 action; 94662306a36Sopenharmony_ci __le32 id; 94762306a36Sopenharmony_ci u8 valid; 94862306a36Sopenharmony_ci u8 da[ETH_ALEN]; 94962306a36Sopenharmony_ci u8 dir; 95062306a36Sopenharmony_ci u8 ra[ETH_ALEN]; 95162306a36Sopenharmony_ci __le32 ssn; 95262306a36Sopenharmony_ci __le32 dsn; 95362306a36Sopenharmony_ci __le32 metric; 95462306a36Sopenharmony_ci u8 rate; 95562306a36Sopenharmony_ci u8 hopcount; 95662306a36Sopenharmony_ci u8 ttl; 95762306a36Sopenharmony_ci __le32 expiration; 95862306a36Sopenharmony_ci u8 sleepmode; 95962306a36Sopenharmony_ci __le32 snr; 96062306a36Sopenharmony_ci __le32 references; 96162306a36Sopenharmony_ci u8 prec[ETH_ALEN]; 96262306a36Sopenharmony_ci} __packed; 96362306a36Sopenharmony_ci 96462306a36Sopenharmony_cistruct cmd_ds_mesh_config { 96562306a36Sopenharmony_ci struct cmd_header hdr; 96662306a36Sopenharmony_ci 96762306a36Sopenharmony_ci __le16 action; 96862306a36Sopenharmony_ci __le16 channel; 96962306a36Sopenharmony_ci __le16 type; 97062306a36Sopenharmony_ci __le16 length; 97162306a36Sopenharmony_ci u8 data[128]; /* last position reserved */ 97262306a36Sopenharmony_ci} __packed; 97362306a36Sopenharmony_ci 97462306a36Sopenharmony_cistruct cmd_ds_mesh_access { 97562306a36Sopenharmony_ci struct cmd_header hdr; 97662306a36Sopenharmony_ci 97762306a36Sopenharmony_ci __le16 action; 97862306a36Sopenharmony_ci __le32 data[32]; /* last position reserved */ 97962306a36Sopenharmony_ci} __packed; 98062306a36Sopenharmony_ci 98162306a36Sopenharmony_ci/* Number of stats counters returned by the firmware */ 98262306a36Sopenharmony_ci#define MESH_STATS_NUM 8 98362306a36Sopenharmony_ci#endif 984