diff --git a/drivers/staging/fw-api/fw/htt.h b/drivers/staging/fw-api/fw/htt.h index b1f72a3d06ba..ba5b42d6e3e6 100644 --- a/drivers/staging/fw-api/fw/htt.h +++ b/drivers/staging/fw-api/fw/htt.h @@ -264,9 +264,10 @@ * 3.134 Add qdata_refill flag in rx_peer_metadata_v1a. * 3.135 Add HTT_HOST4_TO_FW_RXBUF_RING def. * 3.136 Add htt_ext_present flag in htt_tx_tcl_global_seq_metadata. + * 3.137 Add more HTT_SDWF_MSDUQ_CFG_IND_ERROR codes. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 136 +#define HTT_CURRENT_VERSION_MINOR 137 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -833,6 +834,11 @@ typedef enum { HTT_STATS_TX_PDEV_WIFI_RADAR_TAG = 200, /* htt_stats_tx_pdev_wifi_radar_tlv */ HTT_STATS_TXBF_OFDMA_BE_PARBW_TAG = 201, /* htt_stats_txbf_ofdma_be_parbw_tlv */ HTT_STATS_RX_PDEV_RSSI_HIST_TAG = 202, /* htt_stats_rx_pdev_rssi_hist_tlv */ + HTT_STATS_TX_VDEV_NSS_TAG = 203, /* htt_stats_tx_vdev_nss_tlv */ + HTT_STATS_PDEV_SPECTRAL_TAG = 204, /* htt_stats_pdev_spectral_tlv */ + HTT_STATS_PDEV_RTT_DELAY_TAG = 205, /* htt_stats_pdev_rtt_delay_tlv */ + HTT_STATS_PDEV_AOA_TAG = 206, /* htt_stats_pdev_aoa_tlv */ + HTT_STATS_PDEV_FTM_TPCCAL_TAG = 207, /* htt_stats_pdev_ftm_tpccal_tlv */ HTT_STATS_MAX_TAG, } htt_stats_tlv_tag_t; @@ -14165,11 +14171,11 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * | VALID_MASK |(4bits) | SET_NUM | HW peer ID / AST index | * | (8bits) | | (4bits) | | * |-----------------+--------+--+--+--+--------------------------------------| - * | RESERVED |E |O | | | - * | (13bits) |A |A |NH| on-Chip PMAC_RXPCU AST index | - * | |V |V | | | + * | RESERVED |C|E |O | | | + * | (12bits) |I|A |A |NH| on-Chip PMAC_RXPCU AST index | + * | |V|V |V | | | * |-----------------+--------------------+-----------------------------------| - * | HTT_MSDU_IDX_ | RESERVED | | + * | HTT_MSDU_IDX_ | CLASSIFY_INFO_IDX | | * | VALID_MASK_EXT | (8bits) | EXT AST index | * | (8bits) | | | * |-----------------+--------------------+-----------------------------------| @@ -14179,11 +14185,13 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * |--------------------------------------------------------------------------| * * Where: + * CIV = CLASSIFY_INFO_IDX_VALID flag, for CLASSIFY_INFO_IDX * EAV = EXT_AST_VALID flag, for "EXT AST index" * OAV = ONCHIP_AST_VALID flag, for "on-Chip PMAC_RXPCU AST index" * NH = Next Hop * The following field definitions describe the format of the rx peer map v3 * messages sent from the target to the host. + * dword 0: * - MSG_TYPE * Bits 7:0 * Purpose: identifies this as a peer map v3 message @@ -14194,10 +14202,12 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * - SW_PEER_ID * Bits 31:16 * Purpose: The peer ID (index) that WAL has allocated for this peer. + * dword 1: * - MAC_ADDR_L32 * Bits 31:0 * Purpose: Identifies which peer node the peer ID is for. * Value: lower 4 bytes of peer node's MAC address + * dword 2: * - MAC_ADDR_U16 * Bits 15:0 * Purpose: Identifies which peer node the peer ID is for. @@ -14206,6 +14216,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * Bits 31:16 * Purpose: The multicast peer ID (index) * Value: set to HTT_INVALID_PEER if not valid + * dword 3: * - HW_PEER_ID / AST_INDEX * Bits 15:0 * Purpose: Identifies the HW peer ID corresponding to the peer MAC @@ -14225,6 +14236,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * - HTT_MSDU_IDX_VALID_MASK * Bits 31:24 * Purpose: Shows MSDU indexes valid mask for AST_INDEX + * dword 4: * - ONCHIP_AST_IDX / RESERVED * Bits 15:0 * Purpose: This field is valid only when split AST feature is enabled. @@ -14232,28 +14244,38 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * If valid, identifies the HW peer ID corresponding to the peer MAC * address, this ast_idx is used for LMAC modules for RXPCU. * - NEXT_HOP - * Bits 16 + * Bit 16 * Purpose: Flag indicates next_hop AST entry used for WDS * (Wireless Distribution System). * - ONCHIP_AST_VALID - * Bits 17 + * Bit 17 * Purpose: Flag indicates valid data behind of the ONCHIP_AST_IDX field * - EXT_AST_VALID - * Bits 18 + * Bit 18 * Purpose: Flag indicates valid data behind of the EXT_AST_INDEX field + * - CLASSIFY_INFO_IDX_VALID + * Bit 19 + * Purpose: If set, indicates that the CLASSIFY_INFO_IDX field is valid; + * else, ignore CLASSIFY_INFO_IDX + * dword 5: * - EXT_AST_INDEX * Bits 15:0 * Purpose: This field describes Extended AST index * Valid if EXT_AST_VALID flag set + * - CLASSIFY_INFO_IDX + * Bits 23:16 + * Purpose: assists TCL-L Block in Boron family of chips to + * start finding the flow from the corresponding + * entry in the FLOW LOOK UP TABLE * - HTT_MSDU_IDX_VALID_MASK_EXT * Bits 31:24 * Purpose: Shows MSDU indexes valid mask for EXT_AST_INDEX */ /* dword 0 */ -#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_M 0xffff0000 -#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_S 16 #define HTT_RX_PEER_MAP_V3_VDEV_ID_M 0x0000ff00 #define HTT_RX_PEER_MAP_V3_VDEV_ID_S 8 +#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_M 0xffff0000 +#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_S 16 /* dword 1 */ #define HTT_RX_PEER_MAP_V3_MAC_ADDR_L32_M 0xffffffff #define HTT_RX_PEER_MAP_V3_MAC_ADDR_L32_S 0 @@ -14263,26 +14285,30 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_M 0xffff0000 #define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_S 16 /* dword 3 */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_M 0xff000000 -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_S 24 -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_M 0x000f0000 -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_S 16 #define HTT_RX_PEER_MAP_V3_HW_PEER_ID_M 0x0000ffff #define HTT_RX_PEER_MAP_V3_HW_PEER_ID_S 0 +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_M 0x000f0000 +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_S 16 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_M 0xff000000 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_S 24 /* dword 4 */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M 0x00040000 -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S 18 -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_M 0x00020000 -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_S 17 -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_M 0x00010000 -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_S 16 -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_M 0x0000ffff -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_M 0x0000ffff +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_M 0x00010000 +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_S 16 +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_M 0x00020000 +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_S 17 +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M 0x00040000 +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S 18 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_M 0x00080000 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S 19 /* dword 5 */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M 0xff000000 -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S 24 #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_M 0x0000ffff #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_M 0x00ff0000 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S 16 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M 0xff000000 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S 24 #define HTT_RX_PEER_MAP_V3_VDEV_ID_SET(word, value) \ do { \ @@ -14364,6 +14390,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG, value); \ + (word) |= (value) << HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S; \ + } while (0) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_GET(word) \ + (((word) & HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S) + #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_EXT_AST_IDX, value); \ @@ -14372,6 +14406,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_EXT_AST_IDX_M) >> HTT_RX_PEER_MAP_V3_EXT_AST_IDX_S) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX, value); \ + (word) |= (value) << HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S; \ + } while (0) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_GET(word) \ + (((word) & HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_M) >> HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S) + #define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST, value); \ @@ -14380,17 +14422,19 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M) >> HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S) -#define HTT_RX_PEER_MAP_V3_MAC_ADDR_OFFSET 4 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_OFFSET 8 /* bytes */ -#define HTT_RX_PEER_MAP_V3_HW_PEER_ID_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_OFFSET 20 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MAC_ADDR_OFFSET 4 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_OFFSET 8 /* bytes */ +#define HTT_RX_PEER_MAP_V3_HW_PEER_ID_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_OFFSET 20 /* bytes */ #define HTT_RX_PEER_MAP_V3_BYTES 32 @@ -23095,15 +23139,18 @@ typedef struct _htt_tx_latency_stats { /* HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND */ typedef enum { - HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_DEACTIVATED_MSDUQ = 0x05, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_REACTIVATED_MSDUQ = 0x06, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_INVALID_SVC_CLASS = 0x07, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_TIDQ_LOCATE_ERROR = 0x08, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_DEACTIVATED_MSDUQ = 0x05, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_REACTIVATED_MSDUQ = 0x06, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_INVALID_SVC_CLASS = 0x07, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_TIDQ_LOCATE_ERROR = 0x08, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_INCORRECT_SVC_CLASS = 0x09, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_DISABLED_SVC_CLASS = 0x0a, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_SVC_CLASS_OUT_OF_RANGE = 0x0b, } HTT_SDWF_MSDUQ_CFG_IND_ERROR_CODE_E; PREPACK struct htt_t2h_sdwf_msduq_cfg_ind { diff --git a/drivers/staging/fw-api/fw/htt_stats.h b/drivers/staging/fw-api/fw/htt_stats.h index f685062a133b..c0eccd71a494 100644 --- a/drivers/staging/fw-api/fw/htt_stats.h +++ b/drivers/staging/fw-api/fw/htt_stats.h @@ -363,7 +363,7 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_FSE_RX = 28, - /** HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS + /** HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX * PARAMS: * - config_param0: [Bit0] : [1] for mac_addr based request * - config_param1: [Bit31 : Bit0] mac_addr31to0 @@ -371,7 +371,10 @@ enum htt_dbg_ext_stats_type { * RESP MSG: * - htt_ctrl_path_txrx_stats_t */ - HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = 29, + HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX = 29, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = + HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX, /** HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT * PARAMS: @@ -393,15 +396,18 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_TXBF_OFDMA = 32, - /** HTT_DBG_EXT_STA_11AX_UL_STATS + /** HTT_DBG_EXT_STATS_STA_11AX_UL * PARAMS: * - No Params * RESP MSG: * - htt_sta_11ax_ul_stats */ - HTT_DBG_EXT_STA_11AX_UL_STATS = 33, + HTT_DBG_EXT_STATS_STA_11AX_UL = 33, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_STA_11AX_UL_STATS = + HTT_DBG_EXT_STATS_STA_11AX_UL, - /** HTT_DBG_EXT_VDEV_RTT_RESP_STATS + /** HTT_DBG_EXT_STATS_VDEV_RTT_RESP * PARAMS: * - config_param0: * [Bit7 : Bit0] vdev_id:8 @@ -409,61 +415,89 @@ enum htt_dbg_ext_stats_type { * RESP MSG: * - */ - HTT_DBG_EXT_VDEV_RTT_RESP_STATS = 34, + HTT_DBG_EXT_STATS_VDEV_RTT_RESP = 34, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEV_RTT_RESP_STATS = + HTT_DBG_EXT_STATS_VDEV_RTT_RESP, - /** HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS + /** HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING * PARAMS: * - No Params * RESP MSG: * - htt_pktlog_and_htt_ring_stats_t */ - HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS = 35, + HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING = 35, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS = + HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING, - /** HTT_DBG_EXT_STATS_DLPAGER_STATS + /** HTT_DBG_EXT_STATS_DLPAGER * PARAMS: * * RESP MSG: * - htt_dlpager_stats_t */ - HTT_DBG_EXT_STATS_DLPAGER_STATS = 36, + HTT_DBG_EXT_STATS_DLPAGER = 36, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_STATS_DLPAGER_STATS = + HTT_DBG_EXT_STATS_DLPAGER, - /** HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS + /** HTT_DBG_EXT_STATS_PHY * PARAMS: * - No Params * RESP MSG: * - htt_phy_counters_and_phy_stats_t */ - HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS = 37, + HTT_DBG_EXT_STATS_PHY = 37, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS = + HTT_DBG_EXT_STATS_PHY, - /** HTT_DBG_EXT_VDEVS_TXRX_STATS + /** HTT_DBG_EXT_STATS_VDEVS_TXRX * PARAMS: * - No Params * RESP MSG: * - htt_vdevs_txrx_stats_t */ - HTT_DBG_EXT_VDEVS_TXRX_STATS = 38, + HTT_DBG_EXT_STATS_VDEVS_TXRX = 38, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEVS_TXRX_STATS = + HTT_DBG_EXT_STATS_VDEVS_TXRX, - HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = 39, + HTT_DBG_EXT_STATS_VDEV_RTT_INITIATOR = 39, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = + HTT_DBG_EXT_STATS_VDEV_RTT_INITIATOR, - /** HTT_DBG_EXT_PDEV_PER_STATS + /** HTT_DBG_EXT_STATS_PDEV_PER * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_per_stats_t */ - HTT_DBG_EXT_PDEV_PER_STATS = 40, + HTT_DBG_EXT_STATS_PDEV_PER = 40, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_PER_STATS = + HTT_DBG_EXT_STATS_PDEV_PER, - HTT_DBG_EXT_AST_ENTRIES = 41, + HTT_DBG_EXT_STATS_AST_ENTRIES = 41, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_AST_ENTRIES = + HTT_DBG_EXT_STATS_AST_ENTRIES, - /** HTT_DBG_EXT_RX_RING_STATS + /** HTT_DBG_EXT_STATS_RX_RING * PARAMS: * - No Params * RESP MSG: * - htt_rx_fw_ring_stats_tlv_v */ - HTT_DBG_EXT_RX_RING_STATS = 42, + HTT_DBG_EXT_STATS_RX_RING = 42, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_RX_RING_STATS = + HTT_DBG_EXT_STATS_RX_RING, - /** HTT_STRM_GEN_MPDUS_STATS, HTT_STRM_GEN_MPDUS_DETAILS_STATS + /** HTT_DBG_EXT_STATS_STRM_GEN_MPDUS, + * HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS * PARAMS: * - No params * RESP MSG: HTT_T2H STREAMING_STATS_IND (not EXT_STATS_CONF) @@ -472,25 +506,36 @@ enum htt_dbg_ext_stats_type { * - HTT_STRM_GEN_MPDUS_DETAILS_STATS: * htt_stats_strm_gen_mpdus_details_tlv_t */ - HTT_STRM_GEN_MPDUS_STATS = 43, - HTT_STRM_GEN_MPDUS_DETAILS_STATS = 44, + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS = 43, + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS = 44, + /* retain the deprecated names as aliases */ + HTT_STRM_GEN_MPDUS_STATS = + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS, + HTT_STRM_GEN_MPDUS_DETAILS_STATS = + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS, - /** HTT_DBG_SOC_ERROR_STATS + /** HTT_DBG_EXT_STATS_SOC_ERROR * PARAMS: * - No Params * RESP MSG: * - htt_dmac_reset_stats_tlv */ - HTT_DBG_SOC_ERROR_STATS = 45, + HTT_DBG_EXT_STATS_SOC_ERROR = 45, + /* retain the deprecated name as an alias */ + HTT_DBG_SOC_ERROR_STATS = + HTT_DBG_EXT_STATS_SOC_ERROR, - /** HTT_DBG_PDEV_PUNCTURE_STATS + /** HTT_DBG_EXT_STATS_PDEV_PUNCTURE * PARAMS: * - param 0: enum from htt_tx_pdev_puncture_stats_upload_t, indicating * the stats to upload * RESP MSG: * - one or more htt_pdev_puncture_stats_tlv, depending on param 0 */ - HTT_DBG_PDEV_PUNCTURE_STATS = 46, + HTT_DBG_EXT_STATS_PDEV_PUNCTURE = 46, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_PUNCTURE_STATS = + HTT_DBG_EXT_STATS_PDEV_PUNCTURE, /** HTT_DBG_EXT_STATS_ML_PEERS_INFO * PARAMS: @@ -504,44 +549,59 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_ML_PEERS_INFO = 47, - /** HTT_DBG_ODD_MANDATORY_STATS + /** HTT_DBG_EXT_STATS_ODD_MANDATORY * params: * None * Response MSG: * htt_odd_mandatory_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_STATS = 48, + HTT_DBG_EXT_STATS_ODD_MANDATORY = 48, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY, - /** HTT_DBG_PDEV_SCHED_ALGO_STATS + /** HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO * PARAMS: * - No Params * RESP MSG: * - htt_pdev_sched_algo_ofdma_stats_tlv */ - HTT_DBG_PDEV_SCHED_ALGO_STATS = 49, + HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO = 49, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_SCHED_ALGO_STATS = + HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO, - /** HTT_DBG_ODD_MANDATORY_MUMIMO_STATS + /** HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO * params: * None * Response MSG: * htt_odd_mandatory_mumimo_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_MUMIMO_STATS = 50, - /** HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO = 50, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_MUMIMO_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO, + /** HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA * params: * None * Response MSG: * htt_odd_mandatory_muofdma_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS = 51, + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA = 51, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA, - /** HTT_DBG_EXT_PHY_PROF_CAL_STATS + /** HTT_DBG_EXT_STATS_PHY_PROF_CAL * params: * None * Response MSG: * htt_stats_latency_prof_cal_data_tlv */ - HTT_DBG_EXT_PHY_PROF_CAL_STATS = 52, + HTT_DBG_EXT_STATS_PHY_PROF_CAL = 52, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PHY_PROF_CAL_STATS = + HTT_DBG_EXT_STATS_PHY_PROF_CAL, /** HTT_DBG_EXT_STATS_PDEV_BW_MGR * PARAMS: @@ -551,94 +611,127 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_PDEV_BW_MGR = 53, - /** HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS + /** HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mbssid_ctrl_frame_stats */ - HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = 54, + HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME = 54, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = + HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME, - /** HTT_DBG_SOC_SSR_STATS + /** HTT_DBG_EXT_STATS_SOC_SSR * Used for non-MLO UMAC recovery stats. * PARAMS: * - No Params * RESP MSG: * - htt_umac_ssr_stats_tlv */ - HTT_DBG_SOC_SSR_STATS = 55, + HTT_DBG_EXT_STATS_SOC_SSR = 55, + /* retain the deprecated name as an alias */ + HTT_DBG_SOC_SSR_STATS = + HTT_DBG_EXT_STATS_SOC_SSR, - /** HTT_DBG_MLO_UMAC_SSR_STATS + /** HTT_DBG_EXT_STATS_MLO_UMAC_SSR * Used for MLO UMAC recovery stats. * PARAMS: * - No Params * RESP MSG: * - htt_mlo_umac_ssr_stats_tlv */ - HTT_DBG_MLO_UMAC_SSR_STATS = 56, + HTT_DBG_EXT_STATS_MLO_UMAC_SSR = 56, + /* retain the deprecated name as an alias */ + HTT_DBG_MLO_UMAC_SSR_STATS = + HTT_DBG_EXT_STATS_MLO_UMAC_SSR, - /** HTT_DBG_PDEV_TDMA_STATS + /** HTT_DBG_EXT_STATS_PDEV_TDMA * PARAMS: * - No Params * RESP MSG: * - htt_pdev_tdma_stats_tlv */ - HTT_DBG_PDEV_TDMA_STATS = 57, + HTT_DBG_EXT_STATS_PDEV_TDMA = 57, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_TDMA_STATS = + HTT_DBG_EXT_STATS_PDEV_TDMA, - /** HTT_DBG_CODEL_STATS + /** HTT_DBG_EXT_STATS_CODEL * PARAMS: * - No Params * RESP MSG: * - htt_codel_svc_class_stats_tlv * - htt_codel_msduq_stats_tlv */ - HTT_DBG_CODEL_STATS = 58, + HTT_DBG_EXT_STATS_CODEL = 58, + /* retain the deprecated name as an alias */ + HTT_DBG_CODEL_STATS = + HTT_DBG_EXT_STATS_CODEL, - /** HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS + /** HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_mpdu_stats_tlv */ - HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = 59, + HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA = 59, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA, - /** HTT_DBG_EXT_STATS_PDEV_UL_TRIGGER + /** HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ - HTT_DBG_ODD_UL_BE_OFDMA_STATS = 60, + HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA = 60, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_UL_BE_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA, - /** HTT_DBG_ODD_BE_TXBF_OFDMA_STATS + /** HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA */ - HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = 61, + HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA = 61, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA, - /** HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS + /** HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ - HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = 62, + HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG = 62, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = + HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG, - /** HTT_DBG_MLO_SCHED_STATS + /** HTT_DBG_EXT_STATS_MLO_SCHED * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mlo_sched_stats_tlv */ - HTT_DBG_MLO_SCHED_STATS = 63, + HTT_DBG_EXT_STATS_MLO_SCHED = 63, + /* retain the deprecated name as an alias */ + HTT_DBG_MLO_SCHED_STATS = + HTT_DBG_EXT_STATS_MLO_SCHED, - /** HTT_DBG_PDEV_MLO_IPC_STATS + /** HTT_DBG_EXT_STATS_PDEV_MLO_IPC * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mlo_ipc_stats_tlv */ - HTT_DBG_PDEV_MLO_IPC_STATS = 64, + HTT_DBG_EXT_STATS_PDEV_MLO_IPC = 64, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_MLO_IPC_STATS = + HTT_DBG_EXT_STATS_PDEV_MLO_IPC, - /** HTT_DBG_EXT_PDEV_RTT_RESP_STATS + /** HTT_DBG_EXT_STATS_PDEV_RTT_RESP * PARAMS: * - No Params * RESP MSG: @@ -647,16 +740,22 @@ enum htt_dbg_ext_stats_type { * - htt_stats_pdev_rtt_tbr_selfgen_queued_stats_tlv * - htt_stats_pdev_rtt_tbr_cmd_result_stats_tlv */ - HTT_DBG_EXT_PDEV_RTT_RESP_STATS = 65, + HTT_DBG_EXT_STATS_PDEV_RTT_RESP = 65, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_RTT_RESP_STATS = + HTT_DBG_EXT_STATS_PDEV_RTT_RESP, - /** HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS + /** HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR * PARAMS: * - No Params * RESP MSG: * - htt_stats_pdev_rtt_init_stats_tlv * - htt_stats_pdev_rtt_hw_stats_tlv */ - HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS = 66, + HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR = 66, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS = + HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR, /** HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO * PARAMS: @@ -668,13 +767,56 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO = 67, - /** HTT_DBG_GTX_STATS + /** HTT_DBG_EXT_STATS_GTX * PARAMS: * - No Params * RESP MSG: * - htt_pdev_gtx_stats_tlv */ - HTT_DBG_GTX_STATS = 68, + HTT_DBG_EXT_STATS_GTX = 68, + /* retain the deprecated name as an alias */ + HTT_DBG_GTX_STATS = + HTT_DBG_EXT_STATS_GTX, + + /** HTT_DBG_EXT_STATS_TX_VDEV_NSS + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_tx_vdev_nss_tlv + */ + HTT_DBG_EXT_STATS_TX_VDEV_NSS = 69, + + /** HTT_DBG_EXT_STATS_PDEV_RTT_DELAY + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_rtt_delay_tlv + */ + HTT_DBG_EXT_STATS_PDEV_RTT_DELAY = 70, + + /** HTT_DBG_EXT_STATS_PDEV_SPECTRAL + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_spectral_tlv + */ + HTT_DBG_EXT_STATS_PDEV_SPECTRAL = 71, + + /** HTT_DBG_EXT_STATS_PDEV_AOA + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_aoa_tlv + */ + HTT_DBG_EXT_STATS_PDEV_AOA = 72, + + /** HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_ftm_tpccal_tlv + */ + HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL = 73, /* keep this last */ @@ -1071,6 +1213,13 @@ typedef struct { A_UINT32 pdev_up_time_us_high; /** count of ofdma sequences flushed */ A_UINT32 ofdma_seq_flush; + /* bytes (size of MPDUs) transmitted */ + struct { + /* lower 32 bits of the tx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the tx_bytes value */ + A_UINT32 high_32; + } bytes_sent; } htt_stats_tx_pdev_cmn_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_cmn_tlv htt_tx_pdev_stats_cmn_tlv; @@ -4641,6 +4790,7 @@ typedef struct { A_UINT32 incomplete_llc; A_UINT32 eapol_duplicate_m3; A_UINT32 eapol_duplicate_m4; + A_UINT32 eapol_invalid_mac; } htt_stats_tx_de_classify_failed_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_de_classify_failed_tlv htt_tx_de_classify_failed_stats_tlv; @@ -5405,6 +5555,7 @@ typedef struct { #define HTT_TX_PDEV_STATS_NUM_LTF 4 #define HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES 6 #define HTT_TX_PDEV_STATS_NUM_11BE_TRIGGER_TYPES 6 +#define HTT_TX_VDEV_STATS_NUM_SPATIAL_STREAMS 4 #define HTT_TX_NUM_OF_SOUNDING_STATS_WORDS \ (HTT_TX_PDEV_STATS_NUM_BW_COUNTERS * \ HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS) @@ -5624,6 +5775,20 @@ typedef struct { /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_rate_stats_tlv htt_tx_pdev_rate_stats_tlv; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 vdev_id; /* which vdev produced these per-Nss tx stats */ + /* tx_nss: + * Count how many MPDUs the vdev has sent using each possible number + * of spatial streams: + * tx_nss[0] -> number of MPDUs transmitted using Nss=1 + * tx_nss[1] -> number of MPDUs transmitted using Nss=2 + * tx_nss[2] -> number of MPDUs transmitted using Nss=3 + * tx_nss[3] -> number of MPDUs transmitted using Nss=4 + */ + A_UINT32 tx_nss[HTT_TX_VDEV_STATS_NUM_SPATIAL_STREAMS]; +} htt_stats_tx_vdev_nss_tlv; + typedef struct { /* 11be mode pdev rate stats; placed in a separate TLV to adhere to size restrictions */ htt_tlv_hdr_t tlv_hdr; @@ -6752,6 +6917,16 @@ typedef struct { A_UINT32 rx_flush_cnt; /** Num rx recovery */ A_UINT32 rx_recovery_reset_cnt; + /* Num prom filter disable */ + A_UINT32 rx_lwm_prom_filter_dis; + /* Num prom filter enable */ + A_UINT32 rx_hwm_prom_filter_en; + struct { + /* lower 32 bits of the rx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the rx_bytes value */ + A_UINT32 high_32; + } bytes_received; } htt_stats_rx_pdev_fw_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_rx_pdev_fw_stats_tlv htt_rx_pdev_fw_stats_tlv; @@ -8762,6 +8937,381 @@ typedef struct { typedef htt_stats_pktlog_and_htt_ring_stats_tlv htt_pktlog_and_htt_ring_stats_tlv; +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_SPECTRAL + * TLV_TAGS: + * HTT_STATS_PDEV_SPECTRAL_TAG + */ +#define HTT_STATS_PDEV_SPECTRAL_PCFG_MAX_DET (3) +#define HTT_STATS_PDEV_SPECTRAL_MAX_PCSS_RING_FOR_IPC (3) + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + A_UINT32 dbg_num_buf; + A_UINT32 dbg_num_events; + + /* HOST_ring_HI */ + A_UINT32 host_head_idx; + A_UINT32 host_tail_idx; + A_UINT32 host_shadow_tail_idx; + + /* SHADOW_ring_HI */ + A_UINT32 in_ring_head_idx; + A_UINT32 in_ring_tail_idx; + A_UINT32 in_ring_shadow_tail_idx; + A_UINT32 in_ring_shadow_head_idx; + + /* OUT_ring_HI */ + A_UINT32 out_ring_head_idx; + A_UINT32 out_ring_tail_idx; + A_UINT32 out_ring_shadow_tail_idx; + A_UINT32 out_ring_shadow_head_idx; + + /* IPC_ring MAX_PCSS_RING_FOR_IPC */ + struct { + A_UINT32 head_idx; + A_UINT32 tail_idx; + A_UINT32 shadow_tail_idx; + A_UINT32 shadow_head_idx; + } ipc_rings[HTT_STATS_PDEV_SPECTRAL_MAX_PCSS_RING_FOR_IPC]; + + /* VREG Counters */ + struct { + A_UINT32 scan_priority; + A_UINT32 scan_count; + A_UINT32 scan_period; + A_UINT32 scan_chn_mask; + A_UINT32 scan_ena; + A_UINT32 scan_update_mask; + A_UINT32 scan_ready_intrpt; + A_UINT32 scans_performed; + A_UINT32 intrpts_sent; + A_UINT32 scan_pending_count; + A_UINT32 num_pcss_elem_zero; + A_UINT32 num_in_elem_zero; + A_UINT32 num_out_elem_zero; + A_UINT32 num_elem_moved; + } pcfg_stats_det[HTT_STATS_PDEV_SPECTRAL_PCFG_MAX_DET]; + + struct { + A_UINT32 scan_no_ipc_buf_avail; + A_UINT32 agile_scan_no_ipc_buf_avail; + A_UINT32 scan_FFT_discard_count; + A_UINT32 scan_recapture_FFT_discard_count; + A_UINT32 scan_recapture_count; + } pcfg_stats_vreg; +} htt_stats_pdev_spectral_tlv; + +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_RTT_DELAY + * TLV_TAGS: + * HTT_STATS_PDEV_RTT_DELAY_TAG + */ +#define HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES (2) +/* HTT_STATS_PDEV_RTT_DELAY_PKT_BW: + * 0 -> 20 MHz + * 1 -> 40 MHz + * 2 -> 80 MHz + * 3 -> 160 MHz + * 4 -> 320 MHz + * 5: reserved + */ +#define HTT_STATS_PDEV_RTT_DELAY_PKT_BW (6) +/* HTT_STATS_PDEV_RTT_TX_RX_INSTANCES + * idx 0 -> Tx instance + * idx 1 -> Rx instance + */ +#define HTT_STATS_PDEV_RTT_TX_RX_INSTANCES (2) +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + struct { + /* base_delay: picosecond units */ + A_INT32 base_delay[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES][HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + /* final_delay: picosecond units */ + A_INT32 final_delay[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES][HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + A_INT32 per_chan_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_INT32 off_chan_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_INT32 chan_bw_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_UINT32 rtt_11mc_chain_idx[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_UINT32 chan_freq; /* MHz units */ + A_UINT32 bandwidth; /* MHz units */ + A_UINT32 vreg_cache; + A_UINT32 rtt_11mc_vreg_set_cnt; + A_UINT32 cfr_vreg_set_cnt; + A_UINT32 cir_vreg_set_cnt; + A_UINT32 digital_block_status; + } rtt_delay[HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES]; +} htt_stats_pdev_rtt_delay_tlv; + +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_AOA + * TLV_TAGS: + * HTT_STATS_PDEV_AOA_TAG + */ +#define HTT_STATS_PDEV_AOA_MAX_HISTOGRAM (10) +#define HTT_STATS_PDEV_AOA_MAX_CHAINS (4) +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + A_UINT32 gain_idx[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + /* gain table element values: + * 0 -> default gain + * 1 -> low gain + * 2 -> very low gain + */ + A_UINT32 gain_table[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + A_UINT32 phase_calculated[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; + A_INT32 phase_in_degree[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; +} htt_stats_pdev_aoa_tlv; + +/* RTT VREG MASK */ +#define HTT_STATS_RTT_CHAN_CAPTURE_MASK 0x00000001 +#define HTT_STATS_RTT_HW_FAC_MASK 0x00000002 +#define HTT_STATS_RTT_11AZ_DELAYED_FEEDBACK_MASK 0x00000004 +#define HTT_STATS_RTT_11AZ_DROP_FIRST_LMR_MASK 0x00000008 +#define HTT_STATS_RTT_CAPTURE_CFR_MASK 0x00000010 +#define HTT_STATS_RTT_CAPTURE_CIR_MASK 0x00000020 +#define HTT_STATS_RTT_DET0_REPETITIVE_CHAN_CAPTURE_EN_MASK 0x00000040 +#define HTT_STATS_RTT_CAPTURE_SPARE_1_MASK 0x00000080 +#define HTT_STATS_RTT_CAPTURE_SPARE_2_MASK 0x00000100 + +/* RTT Digital block compensation mask */ +#define HTT_STATS_RTT_TX_IQCORR_COMP_MASK 0x00000001 +#define HTT_STATS_RTT_TX_PREEMP_FIR_COMP_MASK 0x00000002 +#define HTT_STATS_RTT_LPC_FILTER_COMP_MASK 0x00000004 +#define HTT_STATS_RTT_SM_CFR_COMP_MASK 0x00000008 +#define HTT_STATS_RTT_CAL_PDC_DIS_COMP_MASK 0x00000010 +#define HTT_STATS_RTT_CAL_PAPRD_COMP_MASK 0x00000020 +#define HTT_STATS_RTT_CAL_RXCORR_IQCORR_COMP_MASK 0x00000040 +#define HTT_STATS_RTT_CAL_RXCORR_PHASE_COMP_MASK 0x00000080 +#define HTT_STATS_RTT_PHYRF_ICI_CORR_COMP_MASK 0x00000100 +#define HTT_STATS_RTT_VSRC_PRE_FIR_SEL_COMP_MASK 0x00000200 +#define HTT_STATS_RTT_CVSRC_PRE_FIR_SEL2_COMP_MASK 0x00000400 +#define HTT_STATS_RTT_CAL_ENABLE_GAINDEPCORR_COMP_MASK 0x00000800 +#define HTT_STATS_RTT_CAL_DC_NOTCH_FILTER_COMP_MASK 0x00001000 +#define HTT_STATS_RTT_CAL_DET_PATH_COMP_MASK 0x00002000 +#define HTT_STATS_RTT_CAL_RXCORR_ADC_DC_COMP_MASK 0x00004000 +#define HTT_STATS_RTT_CAL_RXCORR_ADC_GAIN_COMP_MASK 0x00008000 +#define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_DET_COMP_MASK 0x00010000 +#define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_COMP_MASK 0x00020000 + + +#define HTT_STATS_TPCCAL_LAST_IDX_M 0x000000ff +#define HTT_STATS_TPCCAL_LAST_IDX_S 0 + +#define HTT_STATS_TPCCAL_LAST_IDX_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_LAST_IDX_M) >> \ + HTT_STATS_TPCCAL_LAST_IDX_S) + +#define HTT_STATS_TPCCAL_STATS_MEASPWR_M 0x0000ffff +#define HTT_STATS_TPCCAL_STATS_MEASPWR_S 0 + +#define HTT_STATS_TPCCAL_STATS_MEASPWR_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_MEASPWR_M) >> \ + HTT_STATS_TPCCAL_STATS_MEASPWR_S) + +#define HTT_STATS_TPCCAL_STATS_PDADC_M 0x000000ff +#define HTT_STATS_TPCCAL_STATS_PDADC_S 0 + +#define HTT_STATS_TPCCAL_STATS_PDADC_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_PDADC_M) >> \ + HTT_STATS_TPCCAL_STATS_PDADC_S) + +#define HTT_STATS_TPCCAL_STATS_CHANNEL_M 0x0000ffff +#define HTT_STATS_TPCCAL_STATS_CHANNEL_S 0 + +#define HTT_STATS_TPCCAL_STATS_CHANNEL_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_CHANNEL_M) >> \ + HTT_STATS_TPCCAL_STATS_CHANNEL_S) + +#define HTT_STATS_TPCCAL_STATS_CHAIN_M 0x00ff0000 +#define HTT_STATS_TPCCAL_STATS_CHAIN_S 16 + +#define HTT_STATS_TPCCAL_STATS_CHAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_CHAIN_M) >> \ + HTT_STATS_TPCCAL_STATS_CHAIN_S) + +#define HTT_STATS_TPCCAL_STATS_GAININDEX_M 0xff000000 +#define HTT_STATS_TPCCAL_STATS_GAININDEX_S 24 + +#define HTT_STATS_TPCCAL_STATS_GAININDEX_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_GAININDEX_M) >> \ + HTT_STATS_TPCCAL_STATS_GAININDEX_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_M 0x0000ffff +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_S 0 + +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CHANNEL_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CHANNEL_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_M 0x00ff0000 +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_S 16 + +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CHAIN_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CHAIN_S) + +#define HTT_STATS_TPCCAL_POSTPROC_BAND_M 0xff000000 +#define HTT_STATS_TPCCAL_POSTPROC_BAND_S 24 + +#define HTT_STATS_TPCCAL_POSTPROC_BAND_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_BAND_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_BAND_S) + +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_M 0x000000ff +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_S 0 + +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_M 0x0000ff00 +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_S 8 + +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_S) + +/* STATS_TYPE : HTT_DBG_EXT_PDEV_STATS_FTM_TPCCAL + * TLV_TAGS: + * - HTT_STATS_PDEV_FTM_TPCCAL_TAG + */ +#define HTT_MAX_TPCCAL_STATS 25 +#define HTT_STATS_TPC_CAL_MAX_NUM_POINTS 64 + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + /* dword__tpccal_last_idx: + * Hold the last updated index for circular buffer of tpccal + * BIT [7 : 0] :- tpcccal_last_idx + * BIT [31 : 8] :- rsvd1 + */ + union { + A_UINT32 dword__tpccal_last_idx; + struct { + A_UINT32 tpccal_last_idx:8, + rsvd1:24; + }; + }; + + /* + * Below tpccal_stats struct will have latest values of tpccal data + * of array size HTT_MAX_TPCCAL_STATS. + * If there have been fewer than HTT_MAX_TPCCAL_STATS TPC calibrations, + * the unused elements will be filled with 0x0 values. + */ + struct { + /* + * dword__measPwr: + * BIT [15 : 0] :- measPwr + * BIT [31 : 16] :- rsvd2 + */ + union { + A_INT32 dword__measPwr; + struct { + A_INT32 measPwr:16, /* dBm units */ + rsvd2:16; + }; + }; + + /* + * dword__channel_chain_gainIndex: + * hold channel chain and gain index values + * BIT [15 : 0] :- channel + * BIT [23 : 16] :- chain + * BIT [24 : 31] :- gainIndex + */ + union { + A_UINT32 dword__channel_chain_gainIndex; + struct { + A_UINT32 channel:16, /* MHz units */ + chain:8, + gainIndex:8; + }; + }; + + /* + * dword__pdadc: + * BIT [7 : 0] :- pdadc + * BIT [31 : 8] :- rsvd3 + */ + union { + A_UINT32 dword__pdadc; + struct { + A_UINT32 pdadc:8, + rsvd3:24; + }; + }; + } tpccal_stats[HTT_MAX_TPCCAL_STATS]; + + /* + * Below tpccal_stats_postproc struct will have required tpccal data + * for failures during postprocessing. + */ + struct { + /* + * calStatus can be intrepreted with the below values: + * TPCCAL_CALDATA (1 << 0) + * TPCCAL_CALINFO (1 << 1) + * TPCCAL_CALERROR (1 << 2) + * bits 6:4 - reserved + * TPCCAL_DONE_MASK (1 << 7) + * bits 15:8 - reserved + * TPCCALRSP_MISCFLAGS_CALERROR_GLUTS_NOT_FILLED (1 << 16) + * TPCCALRSP_MISCFLAGS_CALERROR_PLUT_NON_LINEAR (1 << 17) + * TPCCALRSP_MISCFLAGS_CALERROR_ATTEMPTS_EXCEEDED (1 << 18) + * bits 31:19 - reserved + */ + A_UINT32 calStatus; + /* + * The numgain field specifies how many of the + * HTT_STATS_TPC_CAL_MAX_NUM_POINTS elements in the below arrays + * contain valid data. + */ + A_INT32 measPwr[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; /* dBm units */ + A_UINT32 pdadc[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; + A_UINT32 gainIndex[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; + + /* + * dword__channel_chain_band: + * channel, chain, and band values + * BIT [15 : 0] :- channel + * BIT [23 : 16] :- chain + * BIT [31 : 24] :- band + */ + union { + A_UINT32 dword__channel_chain_band; + struct { + A_UINT32 channel:16, /* MHz units */ + chain:8, + band:8; /* 0: 2GHz, 1: 5GHz, 2: 6GHz */ + }; + }; + + /* + * dword__numgain_caldbStatus: + * numgain and caldbstatus + * BIT [7 : 0] :- numgain + * BIT [15 : 8] :- caldbstatus + * BIT [31 : 16] :- rsvd4 + * + * caldbStatus can be interpreted as below + * CALDB_COMPLETED = 0 + * CALDB_SKIPPED = 1 + * CALDB_INPROGRESS = 2 + */ + union { + A_UINT32 dword__numgain_caldbStatus; + struct { + A_UINT32 numgain:8, + caldbStatus:8, + rsvd4:16; + }; + }; + } tpccal_stats_postproc; +} htt_stats_pdev_ftm_tpccal_tlv; + #define HTT_DLPAGER_STATS_MAX_HIST 10 #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_M 0x000000FF #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_S 0 @@ -10982,8 +11532,37 @@ typedef struct { * avg_chan_acc_lat_hist[6]: 1000 us <= channel access latency < 1500 us * avg_chan_acc_lat_hist[7]: 1500 us <= channel access latency < 2000 us * avg_chan_acc_lat_hist[8]: channel access latency is >= 2000 us - */ + */ A_UINT32 avg_chan_acc_lat_hist[HTT_MAX_NUM_CHAN_ACC_LAT_INTR]; + /** Num of instances where OFDMA NBinWB is selected over MU-MIMO */ + A_UINT32 dl_ofdma_nbinwb_selected_over_mu_mimo[HTT_NUM_AC_WMM]; + /** Num of instances where OFDMA NBinWB is selected in standalone */ + A_UINT32 dl_ofdma_nbinwb_selected_standalone[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for DL. + */ + A_UINT32 running_only_dl_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for UL. + */ + A_UINT32 running_only_ul_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * additionally for DL after UL. + */ + A_UINT32 running_additional_dl_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * additionally for UL after DL. + */ + A_UINT32 running_additional_ul_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for UL BSR TX mode. + */ + A_UINT32 running_ul_scheduler_for_bsrp_cnt[HTT_NUM_AC_WMM]; } htt_stats_pdev_sched_algo_ofdma_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_pdev_sched_algo_ofdma_stats_tlv diff --git a/drivers/staging/fw-api/fw/wlan_module_ids.h b/drivers/staging/fw-api/fw/wlan_module_ids.h index 4895eacf92c7..d1abb8186655 100644 --- a/drivers/staging/fw-api/fw/wlan_module_ids.h +++ b/drivers/staging/fw-api/fw/wlan_module_ids.h @@ -191,6 +191,8 @@ typedef enum { WLAN_MODULE_PHYLIB_RRI, /* 0x94 */ WLAN_MODULE_PHYLIB_SSCAN, /* 0x95 */ WLAN_MODULE_PHYLIB_RSVD, /* 0x96 */ + WLAN_MODULE_USD, /* 0x97 */ + WLAN_MODULE_C2C, /* 0x98 */ WLAN_MODULE_ID_MAX, diff --git a/drivers/staging/fw-api/fw/wlan_nan_msg.h b/drivers/staging/fw-api/fw/wlan_nan_msg.h new file mode 100644 index 000000000000..3d180ab4f564 --- /dev/null +++ b/drivers/staging/fw-api/fw/wlan_nan_msg.h @@ -0,0 +1,1834 @@ +/* + * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. + * SPDX-License-Identifier: ISC + * + */ + +#ifndef _WLAN_NAN_MSG_H_ +#define _WLAN_NAN_MSG_H_ +#include +#include + +#ifndef WLAN_NAN_MSG_COMMON_HEADER_V2 + /* + * For backwards compatibility, use the deprecated version of + * wlan_nan_msg_common.h in systems that have not been updated + * to use the defs from the replacement wlan_nan_msg_common_v2.h + */ + #include +#else + #include + typedef nan_msg_header_t tNanMsgHeader; + typedef nan_msg_header_tp tpNanMsgHeader; +#endif + +/*--------------------------------------------------------------------------- +* WLAN NAN CONSTANTS +*--------------------------------------------------------------------------*/ +#ifndef PACKED_PRE +#define PACKED_PRE PREPACK +#endif + +#ifndef PACKED_POST +#define PACKED_POST POSTPACK +#endif + +/* ALL THE INTERFACE DEFINITIONS ARE ASSUMED TO BE IN LITTLE ENDIAN ORDER. + * BIG ENDIAN HOST IS RESPONSIBLE TO SEND/INTERPRET MESSAGES IN LITTLE + * ENDIAN FORMAT ONLY + */ + +/** 2 word representation of MAC addr */ +typedef struct { + A_UINT32 mac_addr31to0; + A_UINT32 mac_addr47to32; +} wlan_nan_mac_addr; + +/* NAN Statistics Request ID Codes */ +typedef enum +{ + NAN_STATS_ID_FIRST = 0, + NAN_STATS_ID_DE_PUBLISH = NAN_STATS_ID_FIRST, + NAN_STATS_ID_DE_SUBSCRIBE, + NAN_STATS_ID_DE_MAC, + NAN_STATS_ID_DE_TIMING_SYNC, + NAN_STATS_ID_DE_DW, + NAN_STATS_ID_DE, + NAN_STATS_ID_LAST +} tNanStatsId; + +typedef enum +{ + NAN_TLV_TYPE_FIRST = 0, + + /* Service Discovery Frame types */ + NAN_TLV_TYPE_SDF_FIRST = NAN_TLV_TYPE_FIRST, + NAN_TLV_TYPE_SERVICE_NAME = NAN_TLV_TYPE_SDF_FIRST, + NAN_TLV_TYPE_SDF_MATCH_FILTER, + NAN_TLV_TYPE_TX_MATCH_FILTER, + NAN_TLV_TYPE_RX_MATCH_FILTER, + NAN_TLV_TYPE_SERVICE_SPECIFIC_INFO, + NAN_TLV_TYPE_EXT_SERVICE_SPECIFIC_INFO = 5, + NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_TRANSMIT = 6, + NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_RECEIVE = 7, + NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_RECEIVE = 8, + NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_RECEIVE = 9, + NAN_TLV_TYPE_BEACON_SDF_PAYLOAD_RECEIVE = 10, + NAN_TLV_TYPE_NAN_DATA_PATH_PARAMS = 11, + NAN_TLV_TYPE_NAN_DATA_SUPPORTED_BAND = 12, + NAN_TLV_TYPE_2G_COMMITTED_DW = 13, + NAN_TLV_TYPE_5G_COMMITTED_DW = 14, + NAN_TLV_TYPE_NAN_DATA_RSPNR_MODE = 15, + NAN_TLV_TYPE_NAN_DATA_ENABLED_IN_MATCH = 16, + NAN_TLV_TYPE_NAN20_RSPNR_ACCEPT_POLICY = 17, + NAN_TLV_TYPE_NAN_CSID = 18, + NAN_TLV_TYPE_NAN_SCID = 19, + NAN_TLV_TYPE_NAN_PMK = 20, + NAN_TLV_TYPE_SDEA_CTRL_PARAMS = 21, + NAN_TLV_TYPE_NAN20_RANGING_CONFIGURATION = 22, + NAN_TLV_TYPE_CONFIG_DISCOVERY_INDICATIONS = 23, + NAN_TLV_TYPE_NAN20_RANGING_REQUEST = 24, + NAN_TLV_TYPE_NAN20_RANGING_RESULT = 25, + NAN_TLV_TYPE_NAN20_RANGING_REQUEST_RECEIVED = 26, + NAN_TLV_TYPE_NAN_PASSPHRASE = 27, + NAN_TLV_TYPE_NAN_EXTENDED_SSI = 28, + NAN_TLV_TYPE_DEV_CAP_ATTR_CAPABILITY = 29, + NAN_TLV_TYPE_TRANSPORT_IP_PARAM = 30, + NAN_TLV_TYPE_SERVICE_ID = 31, + NAN_TLV_TYPE_PAIRING_CONFIGURATION = 32, + NAN_TLV_TYPE_PAIRING_MATCH_PARAMS = 33, + NAN_TLV_TYPE_BOOTSTRAPPING_PARAMS = 34, + NAN_TLV_TYPE_BOOTSTRAPPING_COOKIE = 35, + NAN_TLV_TYPE_NIRA_NOUNCE = 36, + NAN_TLV_TYPE_NIRA_TAG = 37, + NAN_TLV_TYPE_NAN_CSID_EXT = 38, /* replacement for NAN_TLV_TYPE_NAN_CSID */ + NAN_TLV_TYPE_CSIA_CAP = 39, + NAN_TLV_TYPE_SDF_LAST = 4095, + + /* Configuration types */ + NAN_TLV_TYPE_CONFIG_FIRST = 4096, + NAN_TLV_TYPE_24G_SUPPORT = NAN_TLV_TYPE_CONFIG_FIRST, //4096 + NAN_TLV_TYPE_24G_BEACON, //4097 + NAN_TLV_TYPE_24G_SDF, //4098 + NAN_TLV_TYPE_24G_RSSI_CLOSE, //4099 + NAN_TLV_TYPE_24G_RSSI_MIDDLE, //4100 + NAN_TLV_TYPE_24G_RSSI_CLOSE_PROXIMITY, //4101 + NAN_TLV_TYPE_5G_SUPPORT, //4102 + NAN_TLV_TYPE_5G_BEACON, //4103 + NAN_TLV_TYPE_5G_SDF, //4104 + NAN_TLV_TYPE_5G_RSSI_CLOSE, //4105 + NAN_TLV_TYPE_5G_RSSI_MIDDLE, //4106 + NAN_TLV_TYPE_5G_RSSI_CLOSE_PROXIMITY, //4107 + NAN_TLV_TYPE_SID_BEACON, //4108 + NAN_TLV_TYPE_HOP_COUNT_LIMIT, //4109 + NAN_TLV_TYPE_MASTER_PREFERENCE, //4110 + NAN_TLV_TYPE_CLUSTER_ID_LOW, //4111 + NAN_TLV_TYPE_CLUSTER_ID_HIGH, //4112 + NAN_TLV_TYPE_RSSI_AVERAGING_WINDOW_SIZE, //4113 + NAN_TLV_TYPE_CLUSTER_OUI_NETWORK_ID, //4114 + NAN_TLV_TYPE_SOURCE_MAC_ADDRESS, //4115 + NAN_TLV_TYPE_CLUSTER_ATTRIBUTE_IN_SDF, //4116 + NAN_TLV_TYPE_SOCIAL_CHANNEL_SCAN_PARAMS, //4117 + NAN_TLV_TYPE_DEBUGGING_FLAGS, //4118 + NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_TRANSMIT, //4119 + NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_TRANSMIT, //4120 + NAN_TLV_TYPE_FURTHER_AVAILABILITY_MAP, //4121 + NAN_TLV_TYPE_HOP_COUNT_FORCE, //4122 + NAN_TLV_TYPE_RANDOM_FACTOR_FORCE, //4123 + NAN_TLV_TYPE_RANDOM_UPDATE_TIME, //4124 + NAN_TLV_TYPE_EARLY_WAKEUP, //4125 + NAN_TLV_TYPE_PERIODIC_SCAN_INTERVAL, //4126 + // 4127 unused + NAN_TLV_TYPE_DW_INTERVAL = 4128, //4128 + NAN_TLV_TYPE_DB_INTERVAL, //4129 + NAN_TLV_TYPE_FURTHER_AVAILABILITY, //4130 + NAN_TLV_TYPE_24G_CHANNEL, //4131 + NAN_TLV_TYPE_5G_CHANNEL, //4132 + NAN_TLV_TYPE_DISC_MAC_ADDR_RANDOM_INTERVAL, //4133 + NAN_TLV_TYPE_RANGING_AUTO_RESPONSE_CFG, // 4134 + NAN_TLV_TYPE_RANGING_AUTO_RESPONE_CFG = + NAN_TLV_TYPE_RANGING_AUTO_RESPONSE_CFG, // 4134 + NAN_TLV_TYPE_SUBSCRIBE_SID_BEACON, // 4135 + NAN_TLV_TYPE_DW_EARLY_TERMINATION, // 4136 + NAN_TLV_TYPE_TX_RX_CHAINS, // 4137 + NAN_TLV_TYPE_SYSTEM_RANGING_ENABLED, // 4138 + NAN_TLV_TYPE_UNSYNC_DISCOVERY_ENABLED, // 4139 + NAN_TLV_TYPE_FOLLOWUP_MGMT_RX_ENABLED, // 4140 + + NAN_TLV_TYPE_CONFIG_LAST = 8191, + + /* Attributes types */ + NAN_TLV_TYPE_ATTRS_FIRST = 8192, + + NAN_TLV_TYPE_AVAILABILITY_INTERVALS_MAP = NAN_TLV_TYPE_ATTRS_FIRST, + NAN_TLV_TYPE_WLAN_MESH_ID, + NAN_TLV_TYPE_MAC_ADDRESS, + NAN_TLV_TYPE_RECEIVED_RSSI_VALUE, + NAN_TLV_TYPE_CLUSTER_ATTRIBUTE, + NAN_TLV_TYPE_WLAN_INFRA_SSID, + NAN_TLV_TYPE_NAN_SHARED_KEY_DESC_ATTR, + NAN_TLV_TYPE_ATTRS_LAST = 12287, + + /* Events types */ + NAN_TLV_TYPE_EVENTS_FIRST = 12288, + NAN_TLV_TYPE_SELF_STA_MAC_ADDR = NAN_TLV_TYPE_EVENTS_FIRST, + NAN_TLV_TYPE_STARTED_CLUSTER, + NAN_TLV_TYPE_JOINED_CLUSTER, + NAN_TLV_TYPE_CLUSTER_SCAN_RESULTS, + NAN_TLV_TYPE_FAW_MEM_AVAIL, + NAN_TLV_TYPE_EVENTS_LAST = 16383, + + /* TCA types */ + NAN_TLV_TYPE_TCA_FIRST = 16384, + NAN_TLV_TYPE_CLUSTER_SIZE_REQ = NAN_TLV_TYPE_TCA_FIRST, + NAN_TLV_TYPE_CLUSTER_SIZE_RSP, + NAN_TLV_TYPE_TCA_LAST = 32767, + + /* Statistics types */ + NAN_TLV_TYPE_STATS_FIRST = 32768, + NAN_TLV_TYPE_DE_PUBLISH_STATS = NAN_TLV_TYPE_STATS_FIRST, + NAN_TLV_TYPE_DE_SUBSCRIBE_STATS, + NAN_TLV_TYPE_DE_MAC_STATS, + NAN_TLV_TYPE_DE_TIMING_SYNC_STATS, + NAN_TLV_TYPE_DE_DW_STATS, + NAN_TLV_TYPE_DE_STATS, + NAN_TLV_TYPE_STATS_LAST = 36863, + + /* Testmode types */ + NAN_TLV_TYPE_TESTMODE_FIRST = 36864, + NAN_TLV_TYPE_TESTMODE_GENERIC_CMD = NAN_TLV_TYPE_TESTMODE_FIRST, + NAN_TLV_TYPE_TESTMODE_LAST = 37000, + + /* NAN Security types */ + NAN_TLV_TYPE_SEC_FIRST = 37001, + NAN_TLV_TYPE_SEC_IGTK_KDE = NAN_TLV_TYPE_SEC_FIRST, + NAN_TLV_TYPE_SEC_BIGTK_KDE, + NAN_TLV_TYPE_SEC_NM_TK, + NAN_TLV_TYPE_GROUP_KEYS_PARAM, + NAN_TLV_TYPE_SEC_LAST = 37100, + + /* NAN OEM Configuration types */ + NAN_TLV_TYPE_OEM_DATA_FIRST = 37101, + NAN_TLV_TYPE_OEM1_DATA = NAN_TLV_TYPE_OEM_DATA_FIRST, + NAN_TLV_TYPE_OEM_DATA_LAST = 37150, + + + NAN_TLV_TYPE_LAST = 65535 +} tNanTlvType; + + +/* NAN Publish Types */ +typedef enum +{ + NAN_PUBLISH_TYPE_UNSOLICITED = 0, + NAN_PUBLISH_TYPE_SOLICITED, + NAN_PUBLISH_TYPE_UNSOLICITED_SOLICITED, + NAN_PUBLISH_TYPE_LAST, +} tNanPublishType; + +/* NAN Transmit Types */ +typedef enum +{ + NAN_TX_TYPE_BROADCAST = 0, + NAN_TX_TYPE_UNICAST, + NAN_TX_TYPE_LAST +} tNanTxType; + +/* NAN Match Algorithms */ +typedef enum +{ + NAN_MATCH_ALG_FIRST = 0, + NAN_MATCH_ALG_MATCH_ONCE = NAN_MATCH_ALG_FIRST, + NAN_MATCH_ALG_MATCH_CONTINUOUS, + NAN_MATCH_ALG_NEVER, + NAN_MATCH_ALG_LAST +} tNanMatchAlg; + +/* NAN Indication Disable Flag */ +typedef enum +{ + NAN_IND_ALWAYS = 0, + NAN_IND_NEVER, +} tNanIndDisableFlag; + +/* NAN Transmit Priorities */ +typedef enum +{ + NAN_TX_PRIORITY_LOW = 0, + NAN_TX_PRIORITY_NORMAL, + NAN_TX_PRIORITY_HIGH, + /* This is for special case if the service + * want to respond in same DW */ + NAN_TX_PRIORITY_CRITICAL, + NAN_TX_PRIORITY_LAST +} tNanTxPriority; + +/* PMK length */ +#define NAN_PMK_LEN 32 +/* Passphrase length */ +#define NAN_PASSPHRASE_MIN_LEN 8 +#define NAN_PASSPHRASE_MAX_LEN 63 +/* Supported NAN SCID buffer length */ +#define NAN_SCID_BUF_LEN 256 + +/* NAN Status Codes */ +typedef enum +{ + /* Protocol Response Codes */ + NAN_STATUS_SUCCESS = 0, + NAN_STATUS_TIMEOUT = 1, + NAN_STATUS_DE_FAILURE = 2, + NAN_STATUS_INVALID_MSG_VERSION = 3, + NAN_STATUS_INVALID_MSG_LEN = 4, + NAN_STATUS_INVALID_MSG_ID = 5, + NAN_STATUS_INVALID_HANDLE = 6, + NAN_STATUS_NO_SPACE_AVAILABLE = 7, + NAN_STATUS_INVALID_PUBLISH_TYPE = 8, + NAN_STATUS_INVALID_TX_TYPE = 9, + NAN_STATUS_INVALID_MATCH_ALGORITHM = 10, + NAN_STATUS_DISABLE_IN_PROGRESS = 11, + NAN_STATUS_INVALID_TLV_LEN = 12, + NAN_STATUS_INVALID_TLV_TYPE =13, + NAN_STATUS_MISSING_TLV_TYPE = 14, + NAN_STATUS_INVALID_TOTAL_TLVS_LEN = 15, + NAN_STATUS_INVALID_MATCH_HANDLE = 16, + NAN_STATUS_INVALID_TLV_VALUE = 17, + NAN_STATUS_INVALID_TX_PRIORITY = 18, + NAN_STATUS_INVALID_CONNECTION_MAP = 19, + NAN_STATUS_INVALID_TCA_ID = 20, + NAN_STATUS_INVALID_STATS_ID = 21, + NAN_STATUS_NAN_NOT_ALLOWED = 22, + NAN_STATUS_NO_OTA_ACK = 23, + NAN_STATUS_TX_FAIL = 24, + NAN_STATUS_MULTIPLE_ENABLE = 25, + NAN_STATUS_FOLLOWUP_QUEUE_FULL = 26, + NAN_STATUS_INVALID_5G_CHANNEL = 27, + NAN_STATUS_POLICY_MANAGER_NOT_SINGLE_MAC_MODE = 28, + NAN_STATUS_VDEV_NOT_CREATED = 29, + + /* Configuration Response Codes */ + NAN_STATUS_INVALID_RSSI_CLOSE_VALUE = 4096, + NAN_STATUS_INVALID_RSSI_MEDIUM_VALUE = 4097, + NAN_STATUS_INVALID_HOP_COUNT_LIMIT = 4098, + NAN_STATUS_INVALID_MASTER_PREFERENCE_VALUE = 4099, + NAN_STATUS_INVALID_LOW_CLUSTER_ID_VALUE = 4100, + NAN_STATUS_INVALID_HIGH_CLUSTER_ID_VALUE = 4101, + NAN_STATUS_INVALID_BACKGROUND_SCAN_PERIOD = 4102, + NAN_STATUS_INVALID_RSSI_PROXIMITY_VALUE = 4103, + NAN_STATUS_INVALID_SCAN_CHANNEL = 4104, + NAN_STATUS_INVALID_POST_NAN_CONNECTIVITY_CAPABILITIES_BITMAP = 4105, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE = 4106, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE = 4107, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE = 4108, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE = 4109, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE = 4110, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID = 4111, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_CONN_TYPE_VALUE = 4112, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_DEVICE_ROLE_VALUE = 4113, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_DURATION_VALUE = 4114, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_BITMAP_VALUE = 4115, + NAN_STATUS_MISSING_FUTHER_AVAILABILITY_MAP = 4116, + NAN_STATUS_INVALID_BAND_CONFIG_FLAGS = 4117, + NAN_STATUS_INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE = 4118, + NAN_STATUS_INVALID_ONGOING_SCAN_PERIOD = 4119, + NAN_STATUS_INVALID_DW_INTERVAL_VALUE = 4120, + NAN_STATUS_INVALID_DB_INTERVAL_VALUE = 4121, + + /* Protocol Termination Indication Reason Codes */ + NAN_TERMINATED_REASON_INVALID = 8192, + NAN_TERMINATED_REASON_TIMEOUT = 8193, + NAN_TERMINATED_REASON_USER_REQUEST = 8194, + NAN_TERMINATED_REASON_FAILURE = 8195, + NAN_TERMINATED_REASON_COUNT_REACHED = 8196, + NAN_TERMINATED_REASON_DE_SHUTDOWN = 8197, /* Deprecated */ + NAN_TERMINATED_REASON_DISABLE_IN_PROGRESS = 8198, + NAN_TERMINATED_REASON_POST_DISC_ATTR_EXPIRED = 8199, + NAN_TERMINATED_REASON_POST_DISC_LEN_EXCEEDED = 8200, + NAN_TERMINATED_REASON_FURTHER_AVAIL_MAP_EMPTY = 8201, + + /* Status related to Key Install and PN */ + NAN_STATUS_INVALID_IGTK_PARAMS = 8501, + NAN_STATUS_INVALID_BIGTK_PARAMS = 8502, + NAN_STATUS_INVALID_TX_KEY_NOT_PRESENT = 8503, + NAN_STATUS_INVALID_NO_PEER_ENTRY = 8504, + + /* 9000-9500 NDP Status type */ + NDP_UNSUPPORTED_CONCURRENCY = 9000, + NDP_NAN_DATA_IFACE_CREATE_FAILED = 9001, + NDP_NAN_DATA_IFACE_DELETE_FAILED = 9002, + NDP_DATA_INITIATOR_REQUEST_FAILED = 9003, + NDP_DATA_RESPONDER_REQUEST_FAILED = 9004, + NDP_INVALID_SERVICE_INSTANCE_ID = 9005, + NDP_INVALID_NDP_INSTANCE_ID = 9006, + NDP_INVALID_RESPONSE_CODE = 9007, + NDP_INVALID_APP_INFO_LEN = 9008, + /* OTA failures and timeouts during negotiation */ + NDP_MGMT_FRAME_REQUEST_FAILED = 9009, + NDP_MGMT_FRAME_RESPONSE_FAILED = 9010, + NDP_MGMT_FRAME_CONFIRM_FAILED = 9011, + NDP_END_FAILED = 9012, + NDP_MGMT_FRAME_END_REQUEST_FAILED = 9013, + NDP_MGMT_FRAME_SECURITY_INSTALL_FAILED = 9014, + + /* 9500 onwards vendor specific error codes */ + NDP_VENDOR_SPECIFIC_ERROR = 9500 + +} tNanStatusType; + +/* Enumeration for Version */ +typedef enum +{ + NAN_MSG_VERSION1 = 1, +}tNanMsgVersion; + +/* NAN Error Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanErrorRspMsg, *tpNanErrorRspMsg; + +/* NAN Configuration Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanConfigurationRspMsg, *tpNanConfigurationRspMsg; + +/* NAN Publish Service Cancel Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanPublishServiceCancelRspMsg, *tpNanPublishServiceCancelRspMsg; + +/* NAN Publish Service Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanPublishServiceRspMsg, *tpNanPublishServiceRspMsg; + +/* NAN Subscribe Service Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanSubscribeServiceRspMsg, *tpNanSubscribeServiceRspMsg; + +/* NAN Subscribe Service Cancel Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanSubscribeServiceCancelRspMsg, *tpNanSubscribeServiceCancelRspMsg; + +/* NAN Transmit Followup Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanTransmitFollowupRspMsg, *tpNanTransmitFollowupRspMsg; + +/* NAN Self Transmit Followup Indication */ +typedef PACKED_PRE struct PACKED_POST +{ + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanSelfTransmitFollowupIndMsg, *tpNanSelfTransmitFollowupIndMsg; + +/* NAN Statistics Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 status; + A_UINT16 value; + A_UINT8 statsId; + A_UINT8 reserved; +} tNanStatsRspParams, *tpNanStatsRspParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanStatsRspParams statsRspParams; + A_UINT8 ptlv[1]; +} tNanStatsRspMsg, *tpNanStatsRspMsg; + +/* NAN Enable Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanEnableRspMsg, *tpNanEnableRspMsg; + +/* NAN Disable Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 reserved; +} tNanDisableRspMsg, *tpNanDisableRspMsg; + +/* NAN TCA Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* status of the request */ + A_UINT16 status; + A_UINT16 value; +} tNanTcaRspMsg, *tpNanTcaRspMsg; + +/* NAN Beacon Sdf Payload Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* status of the request */ + A_UINT16 status; + A_UINT16 value; +} tNanBcnSdfPayloadRspMsg, *tpNanBcnSdfPayloadRspMsg; + +/* NAN Capabilities Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 status; + A_UINT32 value; + A_UINT32 maxConcurrentNanClusters; + A_UINT32 maxNumPublishes; + A_UINT32 maxNumSubscribes; + A_UINT32 maxServiceNameLen; + A_UINT32 maxMatchFilterLen; + A_UINT32 maxTotalMatchFilterLen; + A_UINT32 maxServiceSpecificInfoLen; + A_UINT32 maxVsaDataLen; + A_UINT32 maxMeshDataLen; + A_UINT32 maxNanDataInterfaces; + A_UINT32 maxNanDataPathSessions; + A_UINT32 maxNanDataAppInfoLen; + A_UINT32 maxNanQueuedTransmitFollowupMsgs; + A_UINT32 nanDataSupportedBands; + A_UINT32 nanCSIDSupported; + /* Target capability max SCID buffer supported */ + A_UINT32 maxSCIDBufsupported; + + A_UINT32 nanSecuritySupported:1; + A_UINT32 maxExtServiceSpecificInfoLen:16; + A_UINT32 maxNanRttInitiatorSupported:5; + A_UINT32 maxNanRttResponderSupported:5; + A_UINT32 nanNDPESupported:1; + A_UINT32 nanPairingSupported:1; + A_UINT32 nanUSDPublisherSupported:1; + A_UINT32 nanUSDSubscriberSupported:1; + A_UINT32 reserved:1; + + A_UINT32 maxSubscribeAddress; + A_UINT32 maxNanPairingSessions; + A_UINT32 nanGroupMfpCap; +} tNanCapabilitiesRspParams, *tpNanCapabilitiesRspParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanCapabilitiesRspParams capabilitiesRspParams; +} tNanCapabilitiesRspMsg, *tpNanCapabilitiesRspMsg; + +/* NAN Beacon Sdf Payload Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: MAC Address (when VSA Receive is present) + * Optional: VSA Receive, Beacon SDF Payload Receive + */ + A_UINT8 ptlv[1]; +} tNanBcnSdfPayloadIndMsg, *tpNanBcnSdfPayloadIndMsg; + +/* NAN TCA Ind TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 rising:1; + A_UINT32 falling:1; + A_UINT32 reserved:30; + A_UINT32 value; +} tNanTcaIndTlv, *tpNanTcaIndTlv; + +/* NAN TCA Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: TCA Ind TLV (Cluster Size Rsp). + */ + A_UINT8 ptlv[1]; +} tNanTcaIndMsg, *tpNanTcaIndMsg; + +/* NAN Disable Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* reason for the termination */ + A_UINT16 reason; + A_UINT16 reserved; +} tNanDisableIndMsg, *tpNanDisableIndMsg; + +/* Event Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * Excludes TLVs + * + * Optional: Self-Station MAC Address, Started Cluster, Joined Cluster + */ + A_UINT8 ptlv[1]; +} tNanEventIndMsg, *tpNanEventIndMsg; + +/* NAN Publish Followup Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; + A_UINT32 window:1; + A_UINT32 reserved:31; + /* + * Excludes TLVs + * + * Required: Service Specific Info or Extended Service Specific Info + */ +} tNanFollowupIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanFollowupIndParams followupIndParams; + /* + * Excludes TLVs + * + * Required: MAC Address, Service Specific Info (D bit is 0) + * Optional: Service Specific Info (D bit is 1) + */ + A_UINT8 ptlv[1]; +} tNanFollowupIndMsg, *tpNanFollowupIndMsg; + +/* NAN Subscribe Terminated Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* reason for the termination */ + A_UINT16 reason; + A_UINT16 reserved; +} tNanSubscribeTerminatedIndMsg, *tpNanSubscribeTerminatedIndMsg; + +/* NAN Unmatch Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; +} tNanUnmatchIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanUnmatchIndParams unmatchIndParams; +} tNanUnmatchIndMsg, *tpNanUnmatchIndMsg; + +/* NAN Match Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; + A_UINT32 beaconFrameFlag:1; + A_UINT32 cacheExhaustedFlag:1; + A_UINT32 reserved:30; +} tNanMatchIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanMatchIndParams matchIndParams; + /* + * Excludes TLVs + * + * Required: MAC Address + * Optional: Service Specific Info, SDF Match Filter + * Received RSSI Value, Post NAN Connectivity Capabilities Rx, + * Post NAN Discovery Attribute Rx, Further Availability Map, + * Cluster Attribute, Sdea ctrl params, NAN CSID, NAN SCID + */ + A_UINT8 ptlv[1]; +} tNanMatchIndMsg, *tpNanMatchIndMsg; + +/* NAN Publish Terminated Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 reason; + A_UINT16 reserved; +} tNanPublishTerminatedIndMsg, *tpNanPublishTerminatedIndMsg; + +/* NAN Publish Replied Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; +} tNanPublishRepliedIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanPublishRepliedIndParams publishRepliedIndParams; + /* + * Excludes TLVs + * + * Required: MAC Address + * Optional: Received RSSI Value, Post NAN Connectivity Capabilities Rx, + * Post NAN Discovery Attribute Rx, Further Availability Map, + * Cluster Attribute, Sdea ctrl params, NAN CSID, NAN SCID buffer + */ + A_UINT8 ptlv[1]; +} tNanPublishRepliedIndMsg, *tpNanPublishRepliedIndMsg; + +/* NAN Enable Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: Master Preference, Cluster Low, Cluster High + * Optional: 2.4G Support, 2.4G Beacons, 2.4G Discovery, 2.4G RSSI Close, + * 2.4G RSSI Middle, 2.4G RSSI Close Proximity, 5G Support, + * 5G Beacons, 5G Discovery, 5G RSSI Close, 5G RSSI Middle, + * 5G RSSI Close Proximity, SID Beacon, Hop Count Limit, + * Random Factor Force, Hop Count Force, Master Preference, + * Cluster Low, Cluster High, RSSI Averaging Window Size, + * Cluster OUI Network ID, Source MAC Address, + * Cluster Attribute in SDF, Social Channel Scan Parameters, + * Debugging Flags, Post NAN Connectivity Capabilities Tx, + * Post NAN Discovery Attribute Tx, Further Availability Map + */ + A_UINT8 ptlv[1]; +} tNanEnableReqMsg, *tpNanEnableReqMsg; + +/* NAN Disable Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanDisableReqMsg, *tpNanDisableReqMsg; + +/* NAN Configuration Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: None. + * Optional: 2.4G RSSI Close Proximity, 5G RSSI Close Proximity, + * SID Beacon, Random Factor Force, Hop Count Force, + * Master Preference, RSSI Averaging Window Size, + * Cluster Attribute, Social Channel Scan Parameters, + * Debugging Flags, Post NAN Connectivity Capabilities Tx, + * Post NAN Discovery Attribute Tx, Further Availability Map + */ + A_UINT8 ptlv[1]; +} tNanConfigurationReqMsg, *tpNanConfigurationReqMsg; + +/* NAN Publish Service Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 ttl; + A_UINT16 period; + A_UINT32 replyIndFlag:1; + A_UINT32 publishType:2; + A_UINT32 txType:1; + A_UINT32 useRssi:1; + A_UINT32 otaFlag:1; + A_UINT32 matchAlg:2; + A_UINT32 count:8; + A_UINT32 connMap:8; + A_UINT32 pubTerminatedIndDisableFlag:1; + A_UINT32 pubUnmatchIndDisableFlag:1; + A_UINT32 followupRxIndDisableFlag:1; + A_UINT32 reserved2:5; +} tNanPublishServiceReqParams, *tpNanPublishServiceReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanPublishServiceReqParams publishServiceReqParams; + /* + * Excludes TLVs + * + * Required: Service Name + * Optional: Service Specific Info, Tx Match Filter, Rx Match Filter + * Sdea ctrl params, NAN CSID, PMK, PASSPHRASE + */ + A_UINT8 ptlv[1]; +} tNanPublishServiceReqMsg, *tpNanPublishServiceReqMsg; + +/* NAN Publish Service Cancel Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanPublishServiceCancelReqMsg, *tpNanPublishServiceCancelReqMsg; + +/* NAN Subscribe Service Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 ttl; + A_UINT16 period; + A_UINT32 subscribeType:1; + A_UINT32 srfAttr:1; + A_UINT32 srfInclude:1; + A_UINT32 srfSend:1; + A_UINT32 ssiRequired:1; + A_UINT32 matchAlg:2; + A_UINT32 reserved1:1; + A_UINT32 count:8; + A_UINT32 useRssi:1; + A_UINT32 otaFlag:1; + A_UINT32 subTerminatedIndDisableFlag:1; + A_UINT32 subUnmatchIndDisableFlag:1; + A_UINT32 followupRxIndDisableFlag:1; + A_UINT32 reserved2:3; + A_UINT32 connMap:8; + /* + * Excludes TLVs + * + * Required: Service Name + * Optional: Rx Match Filter, Tx Match Filter, Service Specific Info, + * Group Key + */ +} tNanSubscribeServiceReqParams, *tpNanSubscribeServiceReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanSubscribeServiceReqParams subscribeServiceReqParams; + /* + * Excludes TLVs + * + * Required: Service Name + * Optional: Rx Match Filter, Tx Match Filter, Service Specific Info, + * Sdea ctrl params, NAN CSID, PMK, PASSPHRASE + */ + A_UINT8 ptlv[1]; +} tNanSubscribeServiceReqMsg, *tpNanSubscribeServiceReqMsg; + +/* NAN Subscribe Service Cancel Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanSubscribeServiceCancelReqMsg, *tpNanSubscribeServiceCancelReqMsg; + +/* NAN Transmit Followup Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; + A_UINT32 priority:4; + A_UINT32 window:1; + A_UINT32 followupTxRspDisableFlag:1; + A_UINT32 reserved:26; + /* + * Excludes TLVs + * + * Required: Service Specific Info or Extended Service Specific Info + */ +} tNanTransmitFollowupReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanTransmitFollowupReqParams transmitFollowupReqParams; + /* + * Excludes TLVs + * + * Required: MAC Address, Service Specific Info (D bit is 0) + * Optional: Service Specific Info (D bit is 1) + */ + A_UINT8 ptlv[1]; +} tNanTransmitFollowupReqMsg, *tpNanTransmitFollowupReqMsg; + +/* NAN Statistics Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 statsId:8; + A_UINT32 clear:1; + A_UINT32 reserved:23; +} tNanStatsReqParams, *tpNanStatsReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanStatsReqParams statsReqParams; +} tNanStatsReqMsg, *tpNanStatsReqMsg; + +/* NAN TCA Req TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 rising:1; + A_UINT32 falling:1; + A_UINT32 clear:1; + A_UINT32 reserved:29; + A_UINT32 threshold; +} tNanTcaReqParams, *tpNanTcaReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: TCA Req TLV (Cluster Size Req). + */ + A_UINT8 ptlv[1]; +} tNanTcaReqMsg, *tpNanTcaReqMsg; + +/* Publish statistics. */ +typedef struct +{ + A_UINT32 validPublishServiceReqMsgs; + A_UINT32 validPublishServiceRspMsgs; + A_UINT32 validPublishServiceCancelReqMsgs; + A_UINT32 validPublishServiceCancelRspMsgs; + A_UINT32 validPublishRepliedIndMsgs; + A_UINT32 validPublishTerminatedIndMsgs; + A_UINT32 validActiveSubscribes; + A_UINT32 validMatches; + A_UINT32 validFollowups; + A_UINT32 invalidPublishServiceReqMsgs; + A_UINT32 invalidPublishServiceCancelReqMsgs; + A_UINT32 invalidActiveSubscribes; + A_UINT32 invalidMatches; + A_UINT32 invalidFollowups; + A_UINT32 publishCount; + A_UINT32 publishNewMatchCount; + A_UINT32 pubsubGlobalNewMatchCount; +} tNanPublishStats, *tpNanPublishStats; + +/* Subscribe statistics. */ +typedef struct +{ + A_UINT32 validSubscribeServiceReqMsgs; + A_UINT32 validSubscribeServiceRspMsgs; + A_UINT32 validSubscribeServiceCancelReqMsgs; + A_UINT32 validSubscribeServiceCancelRspMsgs; + A_UINT32 validSubscribeTerminatedIndMsgs; + A_UINT32 validSubscribeMatchIndMsgs; + A_UINT32 validSubscribeUnmatchIndMsgs; + A_UINT32 validSolicitedPublishes; + A_UINT32 validMatches; + A_UINT32 validFollowups; + A_UINT32 invalidSubscribeServiceReqMsgs; + A_UINT32 invalidSubscribeServiceCancelReqMsgs; + A_UINT32 invalidSubscribeFollowupReqMsgs; + A_UINT32 invalidSolicitedPublishes; + A_UINT32 invalidMatches; + A_UINT32 invalidFollowups; + A_UINT32 subscribeCount; + A_UINT32 bloomFilterIndex; + A_UINT32 subscribeNewMatchCount; + A_UINT32 pubsubGlobalNewMatchCount; +} tNanSubscribeStats, *tpNanSubscribeStats; + +/* NAN MAC Statistics. Used for MAC and DW statistics. */ +typedef struct +{ + /* RX stats */ + A_UINT32 validFrames; + A_UINT32 validActionFrames; + A_UINT32 validBeaconFrames; + A_UINT32 ignoredActionFrames; + A_UINT32 ignoredBeaconFrames; + A_UINT32 invalidFrames; + A_UINT32 invalidActionFrames; + A_UINT32 invalidBeaconFrames; + A_UINT32 invalidMacHeaders; + A_UINT32 invalidPafHeaders; + A_UINT32 nonNanBeaconFrames; + + A_UINT32 earlyActionFrames; + A_UINT32 inDwActionFrames; + A_UINT32 lateActionFrames; + + /* TX stats */ + A_UINT32 framesQueued; + A_UINT32 totalTRSpUpdates; + A_UINT32 completeByTRSp; + A_UINT32 completeByTp75DW; + A_UINT32 completeByTendDW; + A_UINT32 lateActionFramesTx; + + /* Misc stats - ignored for DW. */ + A_UINT32 twIncreases; + A_UINT32 twDecreases; + A_UINT32 twChanges; + A_UINT32 twHighwater; + A_UINT32 bloomFilterIndex; + +} tNanMacStats, *tpNanMacStats; + +/* NAN Sync Statistics: TBD */ +typedef struct +{ + A_UINT64 currTsf; + A_UINT64 myRank; + A_UINT64 currAmRank; + A_UINT64 lastAmRank; + A_UINT32 currAmBTT; + A_UINT32 lastAmBTT; + A_UINT8 currAmHopCount; + A_UINT8 currRole; + A_UINT16 currClusterId; + + A_UINT32 reserved1; /* NOTE: Needed for padding for uint64 alignment of following 4 fields */ + + A_UINT64 timeSpentInCurrRole; + A_UINT64 totalTimeSpentAsMaster; + A_UINT64 totalTimeSpentAsNonMasterSync; + A_UINT64 totalTimeSpentAsNonMasterNonSync; + A_UINT32 transitionsToAnchorMaster; + A_UINT32 transitionsToMaster; + A_UINT32 transitionsToNonMasterSync; + A_UINT32 transitionsToNonMasterNonSync; + A_UINT32 amrUpdateCount; + A_UINT32 amrUpdateRankChangedCount; + A_UINT32 amrUpdateBTTChangedCount; + A_UINT32 amrUpdateHcChangedCount; + A_UINT32 amrUpdateNewDeviceCount; + A_UINT32 amrExpireCount; + A_UINT32 mergeCount; + A_UINT32 beaconsAboveHcLimit; + A_UINT32 beaconsBelowRssiThresh; + A_UINT32 beaconsIgnoredNoSpace; + A_UINT32 beaconsForOurCluster; + A_UINT32 beaconsForOtherCluster; + A_UINT32 beaconCancelRequests; + A_UINT32 beaconCancelFailures; + A_UINT32 beaconUpdateRequests; + A_UINT32 beaconUpdateFailures; + A_UINT32 syncBeaconTxAttempts; + A_UINT32 syncBeaconTxFailures; + A_UINT32 discBeaconTxAttempts; + A_UINT32 discBeaconTxFailures; + A_UINT32 amHopCountExpireCount; + A_UINT32 ndpChannelFreq; + A_UINT32 ndpChannelFreq2; + A_UINT32 schedUpdateChannelFreq; + +} tNanSyncStats, *tpNanSyncStats; + +/* NAN Misc DE Statistics */ +typedef struct +{ + A_UINT32 validErrorRspMsgs; + A_UINT32 validTransmitFollowupReqMsgs; + A_UINT32 validTransmitFollowupRspMsgs; + A_UINT32 validFollowupIndMsgs; + A_UINT32 validConfigurationReqMsgs; + A_UINT32 validConfigurationRspMsgs; + A_UINT32 validStatsReqMsgs; + A_UINT32 validStatsRspMsgs; + A_UINT32 validEnableReqMsgs; + A_UINT32 validEnableRspMsgs; + A_UINT32 validDisableReqMsgs; + A_UINT32 validDisableRspMsgs; + A_UINT32 validDisableIndMsgs; + A_UINT32 validEventIndMsgs; + A_UINT32 validTcaReqMsgs; + A_UINT32 validTcaRspMsgs; + A_UINT32 validTcaIndMsgs; + A_UINT32 invalidTransmitFollowupReqMsgs; + A_UINT32 invalidConfigurationReqMsgs; + A_UINT32 invalidStatsReqMsgs; + A_UINT32 invalidEnableReqMsgs; + A_UINT32 invalidDisableReqMsgs; + A_UINT32 invalidTcaReqMsgs; + A_UINT32 validBcnSdfPayloadReqMsgs; + A_UINT32 validBcnSdfPayloadRspMsgs; + A_UINT32 validBcnSdfPayloadIndMsgs; + A_UINT32 invalidBcnSdfPayloadReqMsgs; + A_UINT32 validCapabilitiesReqMsgs; + A_UINT32 invalidCapabilitiesReqMsgs; + A_UINT32 validCapabilitiesRspMsgs; +} tNanDeStats, *tpNanDeStats; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 s:1; + A_UINT8 count:7; +} tNanSidAttr, *tpSidAttr; + +/* NAN BcnSdfPayload Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: VSA Transmit + * Optional: None + */ + A_UINT8 ptlv[1]; +} tNanBcnSdfPayloadReqMsg, *tpNanBcnSdfPayloadReqMsg; + +/* Get NAN Capabilities Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanCapabilitiesReqMsg, *tpNanCapabilitiesReqMsg; + +/* These are in the same order as the Conn Types below. */ +#define NAN_CONN_MAP_NONE 0x00 +#define NAN_CONN_MAP_WLAN_INFRA 0x01 +#define NAN_CONN_MAP_P2P_OPERATION 0x02 +#define NAN_CONN_MAP_WLAN_IBSS 0x04 +#define NAN_CONN_MAP_WLAN_MESH 0x08 +#define NAN_CONN_MAP_FURTHER_SVC_AVAIL 0x10 +#define NAN_CONN_MAP_WLAN_RANGING 0x20 +#define NAN_CONN_MAP_RESERVED 0x40 +#define NAN_CONN_MAP_WILDCARD 0x80 + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 channel; + A_UINT8 dwellTime; + A_UINT16 scanPeriod; +} tNanSocialChannelScanParams, *tpSocialChannelScanParams; + +#define NAN_POST_NAN_CONN_CAP_WFD 0x0001 +#define NAN_POST_NAN_CONN_CAP_WFDS 0x0002 +#define NAN_POST_NAN_CONN_CAP_TDLS 0x0004 +#define NAN_POST_NAN_CONN_CAP_WLAN_INFRA 0x0008 +#define NAN_POST_NAN_CONN_CAP_IBSS 0x0010 +#define NAN_POST_NAN_CONN_CAP_MESH 0x0020 +#define NAN_POST_NAN_CONN_CAP_RESERVED 0xFFC0 + +/* Post-NAN Connectivity Capabilities Transmit TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 connCap; + A_UINT16 repeat:1; + A_UINT16 reserved:15; +} tNanPostNanConnCapsTxTlv, *tpNanPostNanConnCapsTxTlv; + +/* Post-NAN Connectivity Capabilities Receive TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 connCap; + A_UINT16 reserved; +} tNanPostNanConnCapsRxTlv, *tpNanPostNanConnCapsRxTlv; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 availIntDuration:2; + + A_UINT8 mapId:4; + A_UINT8 reserved:2; +} tNanApiEntryCtrl; + +typedef enum +{ + NAN_FAM_AID_FIRST = 0, + NAN_FAM_AID_16TU = NAN_FAM_AID_FIRST, + NAN_FAM_AID_32TU, + NAN_FAM_AID_64TU, + NAN_FAM_AID_RESERVED, + NAN_FAM_AID_LAST = NAN_FAM_AID_RESERVED, + NAN_NUM_FAM_AID = NAN_FAM_AID_LAST +} tNanFamAid; + +/* + * Convenience types for the Availability Intervals Bitmap. Could do + * these as arrays of U8s too. They may or may not be useful... + */ +typedef A_UINT8 tNanAiBitmap64tu; +typedef A_UINT16 tNanAiBitmap32tu; +typedef A_UINT32 tNanAiBitmap16tu; + +/* + * Valid Operating Classes were derived from IEEE Std. 802.11-2012 Annex E + * Table E-4 Global Operating Classes and, filtered by channel, are: 81, 83, + * 84, 103, 114, 115, 116, 124, 125. (I think). + */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 opClass; + A_UINT8 channel; + A_UINT8 availIntBitmap[4]; +} tNanFurtherAvailabilityChan, *tpNanFurtherAvailabilityChan; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 numChan; + tNanApiEntryCtrl entryCtrl; + A_UINT8 pFaChan[1]; +} tNanFurtherAvailabilityMapAttrTlv, *tpNanFurtherAvailabilityMapAttrTlv; + +typedef enum +{ + NAN_CONN_TYPE_FIRST = 0, + NAN_CONN_TYPE_WLAN_INFRA = NAN_CONN_TYPE_FIRST, + NAN_CONN_TYPE_P2P_OPERATION, + NAN_CONN_TYPE_WLAN_IBSS, + NAN_CONN_TYPE_WLAN_MESH, + NAN_CONN_TYPE_FURTHER_SVC_AVAIL, + NAN_CONN_TYPE_WLAN_RANGING, + NAN_CONN_TYPE_LAST, + NAN_CONN_TYPE_RESERVED = NAN_CONN_TYPE_LAST, + NAN_CONN_TYPE_WILDCARD +} tNanConnType; + +/* Device Roles */ +typedef enum +{ + NAN_DEVICE_ROLE_FIRST = 0, + NAN_DEVICE_ROLE_WLAN_INFRA_FIRST = NAN_DEVICE_ROLE_FIRST, + NAN_DEVICE_ROLE_WLAN_AP = NAN_DEVICE_ROLE_WLAN_INFRA_FIRST, + NAN_DEVICE_ROLE_WLAN_STA, + NAN_DEVICE_ROLE_WLAN_INFRA_LAST, + NAN_DEVICE_ROLE_P2P_OPERATION_FIRST = NAN_DEVICE_ROLE_WLAN_INFRA_LAST, + NAN_DEVICE_ROLE_P2P_GROUP_OWNER = NAN_DEVICE_ROLE_P2P_OPERATION_FIRST, + NAN_DEVICE_ROLE_P2P_DEVICE, + NAN_DEVICE_ROLE_P2P_CLIENT, + NAN_DEVICE_ROLE_P2P_OPERATION_LAST, + NAN_DEVICE_ROLE_LAST = NAN_DEVICE_ROLE_P2P_OPERATION_LAST +} tNanDeviceRole; + +/* + * Post-NAN Discovery Attribute MAC Address Usage: + * + * Connection Type | Device Role | MAC Address Usage + * --------------------+-----------------+------------------------- + * WLAN Infrastructure | N/A | MSSID of the AP + * P2P Operation | P2P_Group Owner | P2P Group Owner's address + * P2P Operation | P2P Device | P2P Client's address + * WLAN IBSS | N/A | BSSID + * WLAN Mesh | N/A | BSSID + * Other | ??? | ??? + * + */ + +/* Post-NAN Discovery Attribute Transmit TLV. */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 connType; + A_UINT8 deviceRole; + A_UINT16 repeat:1; + A_UINT16 duration:2; + A_UINT16 reserved:13; + A_UINT8 availIntBitmap[4]; + /* + * TLVs: + * + * Required: WLAN Mesh ID (if connType is WLAN_MESH), + * MAC Address (if connType is WLAN Infra, P2P, IBSS, or Mesh) + */ + A_UINT8 ptlv[1]; +} tNanPostNanDiscoveryAttrTxTlv, tpNanPostNanDiscoveryAttrTxTlv; + +/* Post-NAN Discovery Attribute Receive TLV. */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 connType; + A_UINT8 deviceRole; + A_UINT16 duration:2; + A_UINT16 mapId:4; + A_UINT16 reserved:10; + A_UINT8 availIntBitmap[4]; + /* + * TLVs: + * + * Required: WLAN Mesh ID (if connType is WLAN_MESH), + * MAC Address (if connType is WLAN Infra, P2P, IBSS, or Mesh) + */ + A_UINT8 ptlv[1]; +} tNanPostNanDiscoveryAttrRxTlv, tpNanPostNanDiscoveryAttrRxTlv; + +/* NAN Vendor Specific Attribute Transmit/Receive TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 rflag:1; /* Ignored for receive case. */ + A_UINT8 pbits:3; + A_UINT8 reserved:4; + A_UINT8 oui[3]; + + A_UINT8 vsaData[1]; +} tNanVsaTlv, *tpNanVsaTlv; + +/*NAN 2.0 - SDEA*/ +typedef struct +{ + A_UINT32 data_path_type:1; + A_UINT32 reserved:31; +} tNanDataPathParamsTlv, *tpNanDataPathParamsTlv; + +/* NAN 2.0 - SDEA CTRL */ +typedef struct +{ + A_UINT32 fsd_required:1; + A_UINT32 fsd_with_gas:1; + A_UINT32 data_path_required:1; + A_UINT32 data_path_type:1; + A_UINT32 multicast_type:1; + A_UINT32 qos_required:1; + A_UINT32 security_required:1; + A_UINT32 ranging_required:1; + A_UINT32 range_limit_present:1; + A_UINT32 service_update_ind_present:1; + A_UINT32 reserved1:6; + // Above 16 bits are used to send Over The Air as part of SDEA control + // Below 16 bits are used for internal purposes + A_UINT32 range_report_needed:1; + A_UINT32 reserved2:15; +} tNanSdeaCtrlParamsTlv, *tpNanSdeaCtrlParamsTlv; + +typedef struct +{ + A_UINT32 data_path_enabled_in_match:1; + A_UINT32 reserved:31; +} tNanDataPathParmsEnabledMatchTlv, *tpNanDataPathParmsEnabledMatchTlv; + +/* NAN Data responder mode */ +typedef enum +{ + NAN_DATA_RSPNR_MODE_AUTO = 0, + NAN_DATA_RSPNR_MODE_ACCEPT = 1, + NAN_DATA_RSPNR_MODE_REJECT = 2, + NAN_DATA_RSPNR_MODE_COUNTER = 3, + NAN_DATA_RSPNR_MODE_COUNTER_NO_CHANNEL_CHANGE = 4, +} tNanDataRspnrMode; + +/** + * NDC respond mode + */ +typedef enum +{ + NAN_NDC_MODE_AUTO = 0, + NAN_NDC_MODE_COUNTER = 1, +} tNanNdcRspMode; + +/** + * Nan20 accept policy + */ +typedef enum { + NAN20_ACCEPT_POLICY_NONE = 0, + NAN20_ACCEPT_POLICY_ALL = 1, +} tNan20AcceptPolicy; + +/* NAN Cipher Suites Shared Key - to be deprecated */ +typedef enum { + NCS_SK_128 = 1, + NCS_SK_256 = 2, + NCS_SK_ALL = 3, +} NanCSID; + +/* New Host to use below to send CSID entries as a bitmap */ +typedef enum { + NAN_NCS_F_SK_128 = 0x00001, + NAN_NCS_F_SK_256 = 0x00002, + NAN_NCS_F_PK_2WDH_128 = 0x00004, + NAN_NCS_F_PK_2WDH_256 = 0x00008, + NAN_NCS_F_GTK_CCMP_128 = 0x00010, + NAN_NCS_F_GTK_GCMP_256 = 0x00020, + NAN_NCS_F_PK_PASN_128 = 0x00040, + NAN_NCS_F_PK_PASN_256 = 0x00080, +} NanCSIDBits; + +/** + * Security configuration rules between Upper layer and NAN target + * CSID and PMK are optional parameters + * Target usese the device capability CSID if Service layer provide. + * + * For these security parameter host will act as pass through + * Here are the rules for security parametrs between upper layer and target + * + * NDP Request + * 1. 4 byte CSID + * 2. 32 byte PMK + * 3. PASSPHRASE >=8 and <= 63 byte + * 4. Service Name (<=255) + * + * NDP Responder Request + * 1. 4 byte CSID + * 2. 32 byte PMK + * 3. PASSPHRASE >=8 and <= 63 byte + * 4. Service Name (<=255) + * + * NDP Indication + * 1. 4 byte CSID + * 2. 256 byte SCID buffer + */ + +/* NAN Cipher Version */ +typedef enum { + NAN_CIPHER_128 = 0, /* 0: 128-bit NIK, 64-bit Nonce, 64-bit Tag, HMAC-SHA-256 */ + /* 1 -7 reserved */ +} NanCipherVersion; + +/* NAN Group MFP support */ +#define NAN_GTKSA_IGTKSA_BIGTKSA_NOT_SUPPORTED 0x00 +#define NAN_GTKSA_IGTKSA_SUPPORTED_BIGTKSA_NOT_SUPPORTED 0x01 +#define NAN_GTKSA_IGTKSA_BIGTKSA_SUPPORTED 0x02 + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 inner_threshold; + A_UINT32 outer_threshold; +} t_nan_geo_fence_descriptor, *tp_nan_geo_fence_descriptor; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 range_resolution; + A_UINT32 range_interval; + A_UINT32 ranging_indication_event; + t_nan_geo_fence_descriptor geo_gence_threshold; + +} t_nan_range_config_params, *tp_nan_range_config_params; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 range_measurement; + A_UINT32 event_type; + A_UINT32 range_id; +} t_nan_range_result_params, *tp_nan_range_result_params; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* TLV Required: + MANDATORY + 1. MAC_ADDRESS + 2. t_nan_range_result_params + */ + A_UINT8 ptlv[1]; +} t_nan_range_result_ind, *tp_nan_range_result_ind; + +/* This is the TLV used to trigger ranging requests*/ +typedef PACKED_PRE struct PACKED_POST +{ + wlan_nan_mac_addr range_mac_addr; + A_UINT32 range_id; // Match handle in match_ind, publish_id in result ind + A_UINT32 ranging_accept:1; + A_UINT32 ranging_reject:1; + A_UINT32 ranging_cancel:1; + A_UINT32 reserved:29; +} t_nan_range_req_msg, *tp_nan_range_req_msg; + +typedef PACKED_PRE struct PACKED_POST +{ + wlan_nan_mac_addr range_mac_addr; + A_UINT32 range_id; // This will publish_id in case of receiving publish. +} t_nan_range_req_recvd_msg,*tp_nan_range_req_recvd_msg; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /*TLV Required + 1. t_nan_range_req_recvd_msg + */ + A_UINT8 ptlv[1]; +}t_nan_range_req_ind, *tp_nan_range_req_ind; + +/************************** Test Mode ***************************/ + +typedef PACKED_PRE struct PACKED_POST +{ + tNanMsgHeader nanHeader; + /* + * Excludes TLVs + * + * Optional: Nan Availability + * + */ + A_UINT8 ptlv[1]; +} tNanTestModeReqMsg, *tpNanTestModeReqMsg; + +typedef enum { + NAN_DATA_PATH_M4_RESPONSE_ACCEPT = 1, + NAN_DATA_PATH_M4_RESPONSE_REJECT = 2, + NAN_DATA_PATH_M4_RESPONSE_BAD_MIC = 3 +} tNdpM4ResponseType; + +typedef enum { + NAN_SCHED_VALID = 0, + NAN_SCHED_INVALID_BAD_FA = 1, + NAN_SCHED_INVALID_BAD_NDC = 2, + NAN_SCHED_INVALID_BAD_IMMU = 3, +} NanSchedType; + +typedef enum { + NMF_CLEAR_DISABLE = 0, + NMF_CLEAR_ENABLE = 1, +} NMFClearEnable; + +typedef enum +{ + NAN_TEST_MODE_CMD_NAN_AVAILABILITY = 1, + NAN_TEST_MODE_CMD_NDP_INCLUDE_IMMUTABLE = 2, + NAN_TEST_MODE_CMD_NDP_AVOID_CHANNEL = 3, + NAN_TEST_MODE_CMD_NAN_SUPPORTED_BANDS = 4, + NAN_TEST_MODE_CMD_AUTO_RESPONDER_MODE = 5, + NAN_TEST_MODE_CMD_M4_RESPONSE_TYPE = 6, + NAN_TEST_MODE_CMD_NAN_SCHED_TYPE =7, + NAN_TEST_MODE_CMD_NMF_CLEAR_CONFIG =8, + NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_ULW_NOTIFY = 9, + NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NEGOTIATE = 10, + NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NOTIFY = 11, + NAN_TEST_MODE_CMD_NAN_AVAILABILITY_MAP_ORDER = 12, + NAN_TEST_MODE_CMD_NDL_QOS_TEST = 13, //CONFIG_QoS + NAN_TEST_MODE_CMD_DEVICE_TYPE = 14, + NAN_TEST_MODE_CMD_DISABLE_NDPE = 15, + NAN_TEST_MODE_CMD_ENABLE_NDP = 16, + NAN_TEST_MODE_CMD_DISABLE_IPV6_LINK_LOCAL = 17, + NAN_TEST_MODE_CMD_TRANSPORT_IP_PARAM = 18, + NAN_TEST_MODE_CMD_S3_ATTR_PARAMS = 19, + NAN_TEST_MODE_CMD_SCHED_UPDATE_S3_NOTIFY = 20, + NAN_TEST_MODE_CMD_PMK = 21, +} tNanTestModeCmd; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 cmd; + /* Followed by command data content (Aligned to A_UINT32 size) + * + * command: NAN_TEST_MODE_CMD_NAN_AVAILABILITY + * content: NAN Avaiability attribute blob + * + * command: NAN_TEST_MODE_CMD_NDP_INCLUDE_IMMUTABLE + * content: A_UINT32 value (0 - Ignore 1 - Include immuatable, 2 - Don't include immutable) + * + * command: NAN_TEST_MODE_CMD_NDP_AVOID_CHANNEL + * content: A_UINT32 channel_frequency; (0 - Ignore) + * + * command: NAN_TEST_MODE_CMD_NAN_SCHED_TYPE + * content: A_UINT32 value; (0 - valid schedule(default) 1 - Bad FA, 2 send bad NDC, 3 - Bad immuatable) + * + * command: NAN_TEST_MODE_CMD_NMF_CLEAR_CONFIG + * content: A_UINT32 value; (0 - Send NMF Encrypted(default), 1 - Send Clear NMF) + * + * command: NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_ULW_NOTIFY + * content: A_UINT32 channelAvailabilityPresent; (0 - channel availability not present, 1 - channel availability present) + * content: A_UINT32 channelAvailabilityValue; (0 - channel not available, 1 - channel available) + * + * command: NAN_TEST_MODE_CMD_DEVICE_TYPE + * content: A_UINT32 deviceType; (0 - ignore, 1 - TestBed, 2 - DUT) + * + * command: NAN_TEST_MODE_CMD_DISABLE_NDPE + * content: A_UINT32 disableNDPE; (0 - Send NDPE based on NDPE parameters present, 1 - TestBed(Dont include the NDPE attribute)) + * + * command: NAN_TEST_MODE_CMD_ENABLE_NDP + * content: A_UINT32 enableNDP; (0 - Dont send the NDP attribute if we send the NDPE attribute, + * (1 - TestBed(Include the NDP attribute irrespective of the NDP attribute present or not)) + * + * command: NAN_TEST_MODE_CMD_DISABLE_IPV6_LINK_LOCAL + * content: A_UINT32 disableIPv6_linklocal; (0 - Send IPv6 link local based on IPv6 support, 1 - TestBed(Dont include the IPv6 TLV list)) + * + * command: NAN_TEST_MODE_CMD_TRANSPORT_IP_PARAM + * content: struct tNdpTransIpParams + * + * command: NAN_TEST_MODE_CMD_S3_ATTR_PARAMS + * content: struct tNanS3Params + * + * command: NAN_TEST_MODE_CMD_SCHED_UPDATE_S3_NOTIFY + * content: struct tNanS3Params + */ + A_UINT8 data[1]; +} t_nan_test_mode_cmd_params; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 dfs_master:1; + A_UINT32 ext_key_id:1; + A_UINT32 simu_ndp_data_recept:1; + A_UINT32 ndpe_attr_supp:1; + A_UINT32 reserved:28; +} tNanDevCapAttrCap, *tpNanDevCapAttrCap; + +/***************************************************************/ + +#define NAN_MSG_IPV6_INTF_ADDR_LEN 16 + +typedef struct { + /* Presence of ipv6_intf_addr */ + A_UINT32 ipv6_addr_present; + /* Presence of transport Port */ + A_UINT32 trans_port_present; + /* Presence of transport Protocol */ + A_UINT32 trans_proto_present; + /* ipv6 Interface address */ + A_UINT8 ipv6_intf_addr[NAN_MSG_IPV6_INTF_ADDR_LEN]; + /* Transport Port */ + A_UINT32 transport_port; + /* Transport Protocol */ + A_UINT32 transport_protocol; +} tNdpTransIpParams; + +typedef enum { + NAN_BOOTSTRAPPING_METHOD_PIN_CODE_DISPLAY = 1, + NAN_BOOTSTRAPPING_METHOD_PASSPHRASE_DISPLAY = 2, + NAN_BOOTSTRAPPING_METHOD_QR_CODE_DISPLAY = 3, + NAN_BOOTSTRAPPING_METHOD_NFC_TAG = 4, + NAN_BOOTSTRAPPING_METHOD_KEYPAD_PIN_CODE = 5, + NAN_BOOTSTRAPPING_METHOD_KEYPAD_PASSPHRASE = 6, + NAN_BOOTSTRAPPING_METHOD_QR_CODE_SCAN = 7, + NAN_BOOTSTRAPPING_METHOD_NFC_READER = 8, + /* Bit 9 to 13 reserved */ + NAN_BOOTSTRAPPING_METHOD_SERVICE_MANAGED_BOOTSTRAPPING = 14, + NAN_BOOTSTRAPPING_METHOD_BOOTSTRAPPING_HANDSHAKE_SKIPPED = 15, +} tNaNBootstrappingMethod; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 pairing_setup_required:1; + A_UINT32 npk_nik_caching_required:1; + A_UINT32 bootstapping_method_bitmap:16; + A_UINT32 reserved:14; +} tNanPairingConfigurationParams, *tpNanPairingConfigurationParams; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 pairing_setup_required:1; + A_UINT32 npk_nik_caching_required:1; + A_UINT32 bootstapping_method_bitmap:16; + A_UINT32 reserved:14; +} tNanPairingParamsMatchTlv, *tpNanPairingParamsMatchTlv; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 type; + A_UINT8 status; + A_UINT8 dialog_token; + A_UINT8 reason_code; + A_UINT16 bootstapping_method_bitmap; + A_UINT16 comeback_after; +} tNanBootstrappingParams, *tpNanBootstrappingParams; + +/* NAN Identity Resolution Params */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 cipher_version:8; + A_UINT32 reserved:24; +} tNanIdentityResolutionParams; + +/* NAN Identity Resolution Indication : HAL -> Target */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanIdentityResolutionParams identityresolutionParams; + /* + * Excludes TLVs + * + * Required: Nounce, Tag + */ + A_UINT8 ptlv[1]; +} tNanIdentityResolutionIndMsg, *tpNanIdentityResolutionIndMsg; + +/* NAN pairing roles */ +#define NAN_PAIRING_ROLE_INITIATOR 0 +#define NAN_PAIRING_ROLE_RESPONDER 1 + +/* NAN Pairing Request Params */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 pairing_handle; + A_UINT32 pairing_role:1; + A_UINT32 pairing_verification:1; + A_UINT32 cipher_suite:8; + A_UINT32 reserved:22; + A_UINT32 reserved2; + /* NOTE: + * This struct cannot be expanded, due to backwards-compatibility + * requirements. + */ +} tNanPairingIndParams; + +/* NAN Pairing Indication : HAL -> Target */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanPairingIndParams pairingIndParams; + A_UINT32 reserved[2]; + /* TLVs Required: + * MANDATORY + * 1. MAC_ADDRESS (Peer NMI) + * 2. NM_TK (The TK derived from pairing) + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanPairingIndMsg, *tpNanPairingIndMsg; + +/* NAN UnPairing Indication : HAL -> Target */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT32 pairing_handle; +} tNanUnPairingIndMsg, *tpNanUnPairingIndMsg; + +/* NAN OEM REQ */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: OEM request in the form of opaque data blob. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanOemReqMsg, *tpNanOemReqMsg; + +/* NAN OEM RSP */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; + /* + * TLVs: + * + * Required: OEM response in the form of opaque data blob. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanOemRspMsg, *tpNanOemRspMsg; + +/* NAN OEM IND */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 reserved[2]; + /* + * TLVs: + * + * Required: OEM indication in the form of opaque data blob. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanOemIndMsg, *tpNanOemIndMsg; + +typedef struct { + A_UINT32 entry_control:8; + A_UINT32 time_bitmap_control:16; + A_UINT32 reserved:8; + A_UINT32 time_bitmap; +} tNanS3Params, *tpNanS3Params; + +#define NAN_MAX_GROUP_KEY_LEN 32 +#define NAN_MAX_GROUP_KEY_RSC_LEN 6 + +/* NAN Group Key params */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 key_cipher:16; + A_UINT32 key_idx:8; + A_UINT32 key_len:8; + A_UINT8 key_data[NAN_MAX_GROUP_KEY_LEN]; + A_UINT8 key_rsc[NAN_MAX_GROUP_KEY_RSC_LEN]; +} tNanGroupKeyParamsTlv, *tpNanGroupKeyParamsTlv; + +/* NAN Group Key Install Req Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + + /* + * TLVs + * + * Required: MAC address, one or more tNanGroupKeyParamsTlv. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanGroupKeyInstallReqMsg, *tpNanGroupKeyInstallReqMsg; + +/* NAN Group Key Install Rsp Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; /* tNanStatusType */ + A_UINT16 value; +} tNanGroupKeyInstallRspMsg, *tpNanGroupKeyInstallRspMsg; + +/* NAN Group Key TX PN fetch Req Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT32 key_idx; +} tNanTxPnReqMsg, *tpNanTxPnReqMsg; + +/* NAN Group Key TX PN fetch Rsp Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; /* tNanStatusType */ + A_UINT16 value; + A_UINT8 key_rsc[NAN_MAX_GROUP_KEY_RSC_LEN]; +} tNanTxPnRspMsg, *tpNanTxPnRspMsg; + + +#endif /* WLAN_NAN_MSG_H */ diff --git a/drivers/staging/fw-api/fw/wlan_nan_platform.h b/drivers/staging/fw-api/fw/wlan_nan_platform.h new file mode 100644 index 000000000000..9a201f53aed3 --- /dev/null +++ b/drivers/staging/fw-api/fw/wlan_nan_platform.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + * SPDX-License-Identifier: ISC + */ + +#ifndef _WLAN_NAN_PLATFORM_H_ +#define _WLAN_NAN_PLATFORM_H_ + +typedef struct +{ +}NAN_PLATFORM_MSG_HEADER; + +#define WLAN_NAN_MSG_COMMON_HEADER_V2 + +#endif /* _WLAN_NAN_PLATFORM_H_ */ diff --git a/drivers/staging/fw-api/fw/wmi_services.h b/drivers/staging/fw-api/fw/wmi_services.h index 758afe77a62a..fda83ef79812 100644 --- a/drivers/staging/fw-api/fw/wmi_services.h +++ b/drivers/staging/fw-api/fw/wmi_services.h @@ -683,6 +683,17 @@ typedef enum { */ WMI_SERVICE_IS_TARGET_IPA = 425, WMI_SERVICE_THERM_THROT_TX_CHAIN_MASK = 426, /*FW supports thermal throttling dynamic Tx ChainMask update */ + WMI_SERVICE_SPLIT_PHY_PDEV_SUSPEND_RESUME_SUPPORT = 427, /* Indicates FW support pdev suspend/resume in split-phy radio */ + WMI_SERVICE_USD_SUPPORT = 428, /* Indicates FW supports Unsynchronized Service Discovery */ + WMI_SERVICE_THERM_THROT_5_LEVELS = 429, /* Indicates FW support 5 thermal throttling levels */ + WMI_SERVICE_PROTECTED_TWT = 430, /* Indicates FW supports protected TWT operation */ + WMI_SERVICE_SCAN_CACHE_REPORT_SUPPORT = 431, /* Indicates FW supports for sending scan cache report */ + WMI_SERVICE_SCC_TPC_POWER_SUPPORT = 432, /* Indicates FW supports setting TPC power for SCC vdevs */ + WMI_SERVICE_DYNAMIC_TWT_MODE_SUPPORT = 433, /* Indicates FW supports Dynamic TWT mode for vdevs */ + WMI_SERVICE_SPECTRAL_SPUR_BIN_INFO_SUPPORT = 434, /* Indicates FW supports indicating spur frequency and spectral bin that gets affected due to spur frequency */ + WMI_SERVICE_TWT_P2P_GO_CONCURRENCY_SUPPORT = 435, /* Indicates FW supports TWT in P2P GO concurrency mode */ + WMI_SERVICE_UMAC_MIGRATION_SUPPORT = 436, /* Indicates that FW supports UMAC migration */ + WMI_SERVICE_STA_TWT_STATS_EXT = 437, /* FW supports additional info in TWT stats and ADD COMPLETION Event */ WMI_MAX_EXT2_SERVICE diff --git a/drivers/staging/fw-api/fw/wmi_tlv_defs.h b/drivers/staging/fw-api/fw/wmi_tlv_defs.h index 024814e85140..ece35c747408 100644 --- a/drivers/staging/fw-api/fw/wmi_tlv_defs.h +++ b/drivers/staging/fw-api/fw/wmi_tlv_defs.h @@ -1449,6 +1449,32 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mlo_peer_tid_to_link_map_event_fixed_param, WMITLV_TAG_STRUC_wmi_usd_service_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_create_wfdr2_mode_params, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, + WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, + WMITLV_TAG_STRUC_wmi_scan_cache_info, + WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_add_param, + WMITLV_TAG_STRUC_wmi_mlo_link_del_param, + WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, + WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities, + WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities, + WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_conn_stats_struct, + WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_impacted_bin_info, + WMITLV_TAG_STRUC_wmi_ctrl_path_ml_rcfg_stats_struct, + WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_pn_info, + WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info, + WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2003,6 +2029,13 @@ typedef enum { OP(WMI_P2P_GO_DFS_AP_CONFIG_CMDID) \ OP(WMI_VDEV_REPORT_AP_OPER_BW_CMDID) \ OP(WMI_USD_SERVICE_CMDID) \ + OP(WMI_PDEV_POWER_BOOST_CMDID) \ + OP(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID) \ + OP(WMI_GET_SCAN_CACHE_RESULT_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \ + OP(WMI_SAWF_EZMESH_HOP_COUNT_CMDID) \ + OP(WMI_VDEV_VBSS_CONFIG_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2331,6 +2364,12 @@ typedef enum { OP(WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID) \ OP(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID) \ OP(WMI_USD_SERVICE_EVENTID) \ + OP(WMI_PDEV_POWER_BOOST_EVENTID) \ + OP(WMI_C2C_DETECT_EVENTID) \ + OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ + OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ + OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \ + OP(WMI_VDEV_VBSS_CONFIG_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3557,7 +3596,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID); #define WMITLV_TABLE_WMI_VDEV_CREATE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_create_cmd_fixed_param, wmi_vdev_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_txrx_streams, cfg_txrx_streams, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_wfdr2_mode_params, wfdr2_mode, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_CREATE_CMDID); @@ -3597,6 +3637,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_PARAM_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_update_mac_addr_cmd_fixed_param, wmi_vdev_update_mac_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UPDATE_MAC_ADDR_CMDID); +/* VDEV VBSS CONFIG COMMAND */ +#define WMITLV_TABLE_WMI_VDEV_VBSS_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param, wmi_vdev_vbss_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_pn_info, vbss_peer_pn_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_CMDID); + /* Pdev suspend Cmd */ #define WMITLV_TABLE_WMI_PDEV_SUSPEND_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_suspend_cmd_fixed_param, wmi_pdev_suspend_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5323,6 +5370,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_peer_recommended_links, mlo_peer_recommended_links, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECOMMENDATION_CMDID); +/** WMI cmd to start STA initialized link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, wmi_mlo_link_reconfig_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_CMDID); + +/** WMI cmd to notify fw completion of link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, wmi_mlo_link_reconfig_complete_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + /* Mcast ipv4 address filter list cmd */ #define WMITLV_TABLE_WMI_VDEV_IGMP_OFFLOAD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_igmp_offload_fixed_param, wmi_igmp_offload_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -5664,6 +5723,25 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_REPORT_AP_OPER_BW_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, service_specific_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_CMDID); +/* WMI cmd used to send Power Boost status update from Host to Target */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, wmi_pdev_power_boost_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_CMDID); + +/* WMI cmd used to exchange the DDR address to the target for Power Boost feature */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, wmi_pdev_power_boost_mem_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); + +/* WMI command to send scan cache result */ +#define WMITLV_TABLE_WMI_GET_SCAN_CACHE_RESULT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, wmi_get_scan_cache_result_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_SCAN_CACHE_RESULT_CMDID); + +#define WMITLV_TABLE_WMI_SAWF_EZMESH_HOP_COUNT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, wmi_sawf_ezmesh_hop_count_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -5723,7 +5801,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_aux_dev_capabilities, aux_dev_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_caps_param, aoa_caps_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_per_band_caps_param, aoa_per_band_caps_param, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_POWER_BOOST_CAPABILITIES, power_boost_capabilities, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, rssi_accuracy_improvement_capabilities, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_ltf_length_capabilities, wr_ltf_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_chain_capabilities, wr_chain_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); #define WMITLV_TABLE_WMI_SPECTRAL_CAPABILITIES_EVENTID(id,op,buf,len) \ @@ -5731,6 +5813,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_spectral_fft_size_capabilities, fft_size_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SPECTRAL_CAPABILITIES_EVENTID); +#define WMITLV_TABLE_WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, wmi_pdev_wifi_radar_cap_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_ltf_length_capabilities, wr_ltf_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_chain_capabilities, wr_chain_caps, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID); + #define WMITLV_TABLE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_chan_rf_characterization_info_event_fixed_param, wmi_chan_rf_characterization_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_CHAN_RF_CHARACTERIZATION_INFO, wmi_chan_rf_characterization_info, WMITLV_SIZE_VAR) @@ -6871,6 +6959,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_AFC_EVENTID); +/* Indicate LPI AP detect or not to Host */ +#define WMITLV_TABLE_WMI_C2C_DETECT_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, wmi_c2c_detect_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_C2C_DETECT_EVENTID); + /* FIPS event */ #define WMITLV_TABLE_WMI_PDEV_FIPS_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param, wmi_pdev_fips_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -7154,7 +7247,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_stats_struct, ctrl_path_vdev_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_rrm_stats_struct, ctrl_path_sta_rrm_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_bcn_tx_stats_struct, ctrl_path_vdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_conn_stats_struct, ctrl_path_pdev_conn_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_ml_rcfg_stats_struct, ctrl_path_ml_rcfg_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* @@ -7417,7 +7512,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SCHED_METHOD_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_sscan_fw_cmd_fixed_param, wmi_pdev_sscan_fw_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_fft_bin_index, fft_bin_index, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_sscan_chan_info, wmi_pdev_sscan_chan_info,chan_info, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_per_detector_info, det_info, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_per_detector_info, det_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_spur_chan_impacted_bin_info, spur_chan_impacted_bin_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SSCAN_FW_PARAM_EVENTID); /* Send sscan related event start/stop trigger to host */ @@ -7666,6 +7762,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_VDEV_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, opaque_vendor_var_len_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_PEER_EVENTID); +/* VDEV VBSS CONFIG EVENT */ +#define WMITLV_TABLE_WMI_VDEV_VBSS_CONFIG_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param, wmi_vdev_vbss_config_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_pn_info, vbss_peer_pn_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_EVENTID); + /* link switch event */ #define WMITLV_TABLE_WMI_MLO_LINK_SWITCH_REQUEST_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_switch_req_evt_fixed_param, wmi_mlo_link_switch_req_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -7727,11 +7830,29 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_SRNG_REAP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_peer_tid_to_link_map_event_fixed_param, wmi_mlo_peer_tid_to_link_map_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID); +/** Indicate host to start link reconfigure */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, wmi_mlo_link_reconfig_start_indication_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID); + /* USD Service Event */ #define WMITLV_TABLE_WMI_USD_SERVICE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, wmi_usd_service_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_EVENTID); +/* WMI Event used to send Power Boost status update */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, wmi_pdev_power_boost_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_EVENTID); + +#define WMITLV_TABLE_WMI_SCAN_CACHE_RESULT_EVENTID(id, op , buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, wmi_scan_cache_result_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, scan_freq_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_scan_cache_info, scan_cache_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_SCAN_CACHE_RESULT_EVENTID); + #ifdef __cplusplus } diff --git a/drivers/staging/fw-api/fw/wmi_unified.h b/drivers/staging/fw-api/fw/wmi_unified.h index 936cb5a13bd4..4d231e1a5fdd 100644 --- a/drivers/staging/fw-api/fw/wmi_unified.h +++ b/drivers/staging/fw-api/fw/wmi_unified.h @@ -588,6 +588,13 @@ typedef enum { * WMI cmd to set custom TX power backoff value per band/chain/MCS to PHY. */ WMI_PDEV_SET_CUSTOM_TX_POWER_PER_MCS_CMDID, + /* WMI cmd to send Power Boost status update from Host */ + WMI_PDEV_POWER_BOOST_CMDID, + /** + * WMI cmd to exchange the address of the DDR buffer allocated by the Host + * for Power Boost feature + */ + WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID, /* VDEV (virtual device) specific commands */ @@ -714,6 +721,8 @@ typedef enum { */ WMI_VDEV_REPORT_AP_OPER_BW_CMDID, + WMI_VDEV_VBSS_CONFIG_CMDID, + /* peer specific commands */ @@ -1343,6 +1352,9 @@ typedef enum { /** Unsynchronized Service Discovery */ WMI_USD_SERVICE_CMDID, + /** WMI command to get scan cached result */ + WMI_GET_SCAN_CACHE_RESULT_CMDID, + /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -1686,12 +1698,18 @@ typedef enum { WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_CMDID, /** WMI cmd to recommand preferred link */ WMI_MLO_LINK_RECOMMENDATION_CMDID, + /** WMI cmd to start STA initialized link reconfig */ + WMI_MLO_LINK_RECONFIG_CMDID, + /** WMI cmd to notify fw completion of link reconfig */ + WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID, /** WMI commands specific to Service Aware WiFi (SAWF) */ /** configure or reconfigure the parameters for a service class */ WMI_SAWF_SVC_CLASS_CFG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SAWF), /** disable a service class */ WMI_SAWF_SVC_CLASS_DISABLE_CMDID, + /** update hop count value for SDWF-Ezmesh scenario */ + WMI_SAWF_EZMESH_HOP_COUNT_CMDID, /* WMI commands specific to ODD */ WMI_ODD_LIVEDUMP_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ODD), @@ -1878,6 +1896,16 @@ typedef enum { /* Event to indicate xLNA is enabled */ WMI_PDEV_ENABLE_XLNA_EVENTID, + /* Event to indicate ANN Power Boost update status from Target */ + WMI_PDEV_POWER_BOOST_EVENTID, + + /* + * WMI event to share Wi-Fi Radar - + * monostatic Wi-Fi sensing technique capabalites + */ + WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID, + + /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ WMI_VDEV_START_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VDEV), @@ -1956,6 +1984,7 @@ typedef enum { WMI_VDEV_SCHED_MODE_PROBE_RESP_EVENTID, /** Connect response */ WMI_VDEV_OOB_CONNECTION_RESP_EVENTID, + WMI_VDEV_VBSS_CONFIG_EVENTID, /* peer specific events */ /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ @@ -2375,6 +2404,9 @@ typedef enum { */ WMI_USD_SERVICE_EVENTID, + /* WMI event to send scan cached results */ + WMI_SCAN_CACHE_RESULT_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), @@ -2493,6 +2525,7 @@ typedef enum { WMI_REG_CHAN_LIST_CC_EXT_EVENTID, WMI_AFC_EVENTID, WMI_REG_CHAN_LIST_CC_EXT2_EVENTID, /* DEPRECATED */ + WMI_C2C_DETECT_EVENTID, /** Events for TWT(Target Wake Time) of STA and AP */ WMI_TWT_ENABLE_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_TWT), @@ -2564,6 +2597,8 @@ typedef enum { WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID, /** WMI Event to send the status of T2LM configured */ WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID, + /** Indicate host to start link reconfigure */ + WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -3520,6 +3555,11 @@ typedef struct { #define WMI_TARGET_CAP_QDATA_TX_LCE_FILTER_SUPPORT_SET(target_cap_flags, value)\ WMI_SET_BITS(target_cap_flags, 15, 1, value) +#define WMI_TARGET_CAP_MPDU_STATS_PER_TX_NSS_SUPPORT_GET(target_cap_flags) \ + WMI_GET_BITS(target_cap_flags, 16, 1) +#define WMI_TARGET_CAP_MPDU_STATS_PER_TX_NSS_SUPPORT_SET(target_cap_flags, value)\ + WMI_SET_BITS(target_cap_flags, 16, 1, value) + /* * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs @@ -3581,6 +3621,58 @@ typedef enum { WMI_BDF_VERSION_FW_TOO_NEW = 5, } wmi_bdf_version_status_type; + +/* + * supported_wifi_generations GET/SET APIs + */ +#define WMI_SUPPORTED_WIFI_4_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 0, 1) +#define WMI_SUPPORTED_WIFI_5_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 1, 1) +#define WMI_SUPPORTED_WIFI_6_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 2, 1) +#define WMI_SUPPORTED_WIFI_7_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 3, 1) +#define WMI_SUPPORTED_WIFI_8_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 4, 1) + +#define WMI_SUPPORTED_WIFI_4_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 4, 1, value) + +/* + * supported_wifi_certified_generations GET/SET APIs + */ +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 0, 1) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 1, 1) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 2, 1) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 3, 1) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 4, 1) + +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 4, 1, value) + + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/ @@ -3666,7 +3758,8 @@ typedef struct { * Bit 13 - Support for multipass SAP * Bit 14 - Support for ML monitor mode * Bit 15 - Support for Qdata Tx LCE filter installation - * Bits 31:16 - Reserved + * Bit 16 - Support for MPDU stats per tx Nss capability + * Bits 31:17 - Reserved */ A_UINT32 target_cap_flags; @@ -3732,6 +3825,31 @@ typedef struct { */ A_UINT32 num_max_mlo_link_per_ml_sap_supp; + /* supported_wifi_generations: + * Indicate the transmitting STA's MAC/PHY feature support includes all the + * mandatory features of the particular Wi-Fi generation. + * Refer to the WMI_SUPPORTED_WIFI_x_GENERATION_GET/SET macros + * for interpreting which bit within this bitmap corresponds to which + * WiFi generation. + * The individual bits should only be checked if + * supported_wifi_generations != 0x0. + * This field is invalid and should be ignored unless it contains + * at least 1 set bit. + */ + A_UINT32 supported_wifi_generations; + + /* supported_wifi_certified_generations: + * Indicate the transmitting STA's Wi-Fi Alliance certifications. + * Refer to the WMI_SUPPORTED_WIFI_x_CERTIFIED_GENERATION_GET/SET macros + * for interpreting which bit within this bitmap corresponds to which + * WiFi generation. + * The individual bits should only be checked if + * supported_wifi_certified_generations != 0x0. + * This field is invalid and should be ignored unless it contains + * at least 1 set bit. + */ + A_UINT32 supported_wifi_certified_generations; + /* Followed by next TLVs: * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; @@ -3743,6 +3861,13 @@ typedef struct { * wmi_dbs_or_sbs_cap_ext dbs_or_sbs_cap_ext; * A_INT32 hw_tx_power_signed[WMI_HW_TX_POWER_CAPS_MAX]; * wmi_aux_dev_capabilities aux_dev_caps[]; + * WMI_POWER_BOOST_CAPABILITIES power_boost_capabilities[]; + * WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES + * rssi_accuracy_improvement_capabilities[]; + * wmi_wifi_radar_ltf_length_capabilities + * wifi_radar_ltf_length_capabilities[]; + * wmi_wifi_radar_chain_capabilities + * wifi_radar_chain_capabilities[]; */ } wmi_service_ready_ext2_event_fixed_param; @@ -3924,12 +4049,27 @@ typedef struct { /* Total number of "real" max_active_vdevs that FW supports. */ A_UINT32 num_max_active_vdevs; + /** max_num_ml_peers: + * Number of ml_peers for a SOC; used by Host to derive + * max number of peers in the system + */ + A_UINT32 max_num_ml_peers; + /* * This fixed_param TLV is followed by these additional TLVs: * mac_addr_list[num_extra_mac_addr]; */ } wmi_ready_event_fixed_param; +typedef enum { + WMI_C2C_INT_TYPE_STA = 0, + WMI_C2C_INT_TYPE_SAP = 1, + WMI_C2C_INT_TYPE_P2P = 2, + WMI_C2C_INT_TYPE_NAN = 3, + WMI_C2C_INT_TYPE_TDLS = 4, + WMI_C2C_INT_TYPE_XPAN_SAP = 5, +} WMI_C2C_INT_TYPE; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_resource_config */ /** @@ -4682,8 +4822,16 @@ typedef struct { * 0 -> disable the feature * 1 -> enable the feature * Refer to below WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT + * Bits 24:23 - enable feature optimize power + * 00 -> default value + * (target will auto-select whether to enable the feature) + * 01 -> disable the feature + * 10 -> enable the feature + * 11 -> reserved + * Refer to the below WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET/SET + * macros. * - * Bits 31:23 - Reserved + * Bits 31:25 - Reserved */ A_UINT32 flags2; /** @brief host_service_flags - can be used by Host to indicate @@ -4910,6 +5058,20 @@ typedef struct { * number of max active partner links of a ML BSS */ A_UINT32 num_max_active_mlo_link_per_ml_bss; + + /** + * @brief c2c_int_type_config + * C2C interface type configuration, + * interface type defined in enum WMI_C2C_INT_TYPE: + * BIT 0 set -> Interface type STA enable C2C + * BIT 1 set -> Interface type SAP enable C2C + * BIT 2 set -> Interface type P2P enable C2C + * BIT 3 set -> Interface type NAN enable C2C + * BIT 4 set -> Interface type TDLS enable C2C + * BIT 5 set -> Interface type XPAN_SAP enable C2C + * BIT 6 : 31 Reserved + */ + A_UINT32 c2c_int_type_config; } wmi_resource_config; #define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \ @@ -5199,6 +5361,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT_SET(flags2, value) \ WMI_SET_BITS(flags2, 22, 1, value) +#define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET(flags2) \ + WMI_GET_BITS(flags2, 23, 2) +#define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_SET(flags2, value) \ + WMI_SET_BITS(flags2, 23, 2, value) + #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 0, 1) @@ -5371,6 +5538,7 @@ typedef enum { WMI_VENDOR1_REQ1_VERSION_3_40 = 4, WMI_VENDOR1_REQ1_VERSION_4_00 = 5, WMI_VENDOR1_REQ1_VERSION_4_10 = 6, + WMI_VENDOR1_REQ1_VERSION_4_20 = 7, } WMI_VENDOR1_REQ1_VERSION; typedef enum { @@ -5386,6 +5554,12 @@ typedef enum { WMI_HOST_BAND_CAP_6GHZ = 0x04, } WMI_HOST_BAND_CAP; +typedef enum { + WLAN_CONNECT_EXT_FEATURE_RSNO = 0, + + NUM_WLAN_CONNECT_EXT_FEATURES /* keep last */ +} wlan_connect_ext_features; + /* HW features supported info */ /* enum WMI_WIFI_STANDARD are possible values for WiFi standard bitfield */ #define WMI_GET_WIFI_STANDARD(var, feature_bitmap) \ @@ -6215,12 +6389,13 @@ typedef enum { /* Include MLO IE in Probe req */ #define WMI_SCAN_FLAG_EXT_INCL_MLIE_PRB_REQ 0x00004000 -#define WMI_SCAN_FLAG_EXT_LOW_LATENCY_SCAN 0x00008000 -#define WMI_SCAN_FLAG_EXT_RELIABLE_SCAN 0x00010000 -#define WMI_SCAN_FLAG_EXT_FAST_SCAN 0x00020000 -#define WMI_SCAN_FLAG_EXT_LOW_POWER_SCAN 0x00040000 -#define WMI_SCAN_FLAG_EXT_STOP_IF_BSSID_FOUND 0x00080000 -#define WMI_SCAN_FLAG_EXT_P2P_SCAN 0x00100000 +#define WMI_SCAN_FLAG_EXT_LOW_LATENCY_SCAN 0x00008000 +#define WMI_SCAN_FLAG_EXT_RELIABLE_SCAN 0x00010000 +#define WMI_SCAN_FLAG_EXT_FAST_SCAN 0x00020000 +#define WMI_SCAN_FLAG_EXT_LOW_POWER_SCAN 0x00040000 +#define WMI_SCAN_FLAG_EXT_STOP_IF_BSSID_FOUND 0x00080000 +#define WMI_SCAN_FLAG_EXT_P2P_SCAN 0x00100000 +#define WMI_SCAN_FLAG_EXT_DISABLE_SINGLE_MAC_AUX 0x00200000 /** @@ -6285,6 +6460,8 @@ typedef struct { #define WMI_APPEND_TO_EXISTING_CHAN_LIST 0x1 #define WMI_CHANNEL_MAX_BANDWIDTH_VALID 0x2 #define WMI_HONOR_HOST_6GHZ_CHANNEL_PASSIVE 0x4 +#define WMI_SCAN_TO_DETECT_6GHZ_C2C_AP 0x8 + /* * To preserve backwards compatibility, retain old names (without WMI_ prefix) * as aliases for the corrected names (with WMI_ prefix). @@ -8317,6 +8494,28 @@ typedef struct A_UINT32 end_freq; /* in MHz */ } wmi_pdev_sscan_per_detector_info; +typedef struct +{ + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_info */ + /* spur_freqx10: + * Spur frequency in MHz multiplied by 10 to align with hardware spur + * characterized value. + * For example, a value of 24224 indicates spur frequency as 2422.4 MHz + */ + A_UINT32 spur_freqx10; + /* spur_start_bin_idx: + * Indicates the start spur bin index at which spur frequency impacts + * the spectral capture. Impact is from start to end indices, + * including both. + */ + A_UINT32 spur_start_bin_idx; + /* spur_end_bin_idx: + * Indicates the end spur bin index in which spur frequency impacts + * the spectral capture. + */ + A_UINT32 spur_end_bin_idx; +} wmi_pdev_sscan_spur_chan_impacted_bin_info; + typedef enum { /** Enum to indicate bmsk of spectral scan stop evt on scan count max out */ WMI_SSCAN_EVT_BMSK_SCAN_STOP_SCOUNT = 0X00000001, @@ -9731,6 +9930,9 @@ typedef enum { WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_THRESHOLD, WMI_PDEV_PARAM_MGMT_SRNG_REAP_EVENT_THRESHOLD, + + /* To enable/disable DFS radar detection for scan radio */ + WMI_PDEV_PARAM_ENABLE_SCAN_RADIO_DFS, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) @@ -13154,6 +13356,8 @@ typedef struct { A_UINT32 rx_mpdu_per_sp; /* Average pkts rx per SP */ A_UINT32 tx_bytes_per_sp; /* Average tx bytes per SP */ A_UINT32 rx_bytes_per_sp; /* Average rx bytes per SP */ + A_UINT32 avg_eosp_sp_dur_us; /* Average EOSP SP time */ + A_UINT32 eosp_sp_count; /* Number of EOSP TWT SP's */ } wmi_ctrl_path_twt_stats_struct; #define BMISS_STATS_RSSI_SAMPLE_MAX 10 @@ -16428,8 +16632,96 @@ typedef struct { A_UINT32 beacon_stuck_cnt; A_UINT32 beacon_swba_cnt; A_UINT32 beacon_enque_fail; + A_UINT32 beacon_do_not_send_bcast_t2lm_exp; + A_UINT32 beacon_do_not_send_bcast_t2lm_proc_mst; + A_UINT32 beacon_do_not_send_off_chan; + A_UINT32 beacon_do_not_send_tx_paused; + A_UINT32 beacon_do_not_send_swba_delay; + A_UINT32 beacon_do_not_send_csa; + A_UINT32 beacon_wait_prev_txdone; } wmi_ctrl_path_pdev_bcn_tx_stats_struct; +typedef enum wmi_peer_sta_kickout_reason { + WMI_PEER_STA_KICKOUT_REASON_UNSPECIFIED = 0, /* default value to preserve legacy behavior */ + WMI_PEER_STA_KICKOUT_REASON_XRETRY = 1, + WMI_PEER_STA_KICKOUT_REASON_INACTIVITY = 2, + WMI_PEER_STA_KICKOUT_REASON_IBSS_DISCONNECT = 3, + WMI_PEER_STA_KICKOUT_REASON_TDLS_DISCONNECT = 4, /* TDLS peer has disappeared. All tx is failing */ + WMI_PEER_STA_KICKOUT_REASON_SA_QUERY_TIMEOUT = 5, + WMI_PEER_STA_KICKOUT_REASON_ROAMING_EVENT = 6, /* Directly connected peer has roamed to a repeater */ + WMI_PEER_STA_KICKOUT_REASON_PMF_ERROR = 7, /* PMF error threshold is hit */ + + WMI_PEER_STA_KICKOUT_REASON_RESERVED1 = 8, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED2 = 9, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED3 = 10, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED4 = 11, /* available for future use */ + + /* WMI_MAX_PEER_STA_KICKOUT_REASON: + * For the sake of backwards compatibility, the below value + * cannot be changed. + */ + WMI_MAX_PEER_STA_KICKOUT_REASON = 12 +} PEER_KICKOUT_REASON; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 pdev_id; + A_UINT32 tx_mgmt_subtype_enq_ok[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_tx_comp_ok[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_tx_comp_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_enq_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 rx_mgmt_subtype[WMI_MGMT_FRAME_SUBTYPE_MAX]; + /* peer_sta_kickout_reason_cnt: + * Refer to wmi_peer_sta_kickout_reason for which array element + * corresponds to which STA kickout reason. + */ + A_UINT32 peer_sta_kickout_reason_cnt[WMI_MAX_PEER_STA_KICKOUT_REASON]; + A_UINT32 wmi_scan_start_cnt; + A_UINT32 wmi_scan_start_fail_cnt; + A_UINT32 foreign_chan_entry_cnt; +} wmi_ctrl_path_pdev_conn_stats_struct; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 pdev_id; + + A_UINT32 ml_rcfg_wmi; + A_UINT32 ml_rcfg_del_self; + A_UINT32 ml_rcfg_new_link; + + A_UINT32 ml_rcfg_peer_assoc_ml_peer_null; + A_UINT32 ml_rcfg_ll_idx_mismatch; + A_UINT32 ml_rcfg_mlo_ll_idx_invalid; + A_UINT32 ml_rcfg_partner_link_null; + A_UINT32 ml_rcfg_partner_ll_idx_invalid; + A_UINT32 ml_rcfg_self_in_partner_link; + A_UINT32 ml_rcfg_partner_link_add; + A_UINT32 ml_rcfg_partner_link_del; + A_UINT32 ml_rcfg_no_rcfg_op; + + A_UINT32 ml_rcfg_0_num_link; + A_UINT32 ml_rcfg_inv_num_link; + A_UINT32 ml_rcfg_non_exist_link_del; + A_UINT32 ml_rcfg_add_exist_link; + A_UINT32 ml_rcfg_recv_add_ipc; + A_UINT32 ml_rcfg_recv_peer_del_ipc; + + A_UINT32 ml_rcfg_inv_link_bmap; + A_UINT32 ml_rcfg_assoc_ipc_before_wmi; + A_UINT32 ml_rcfg_before_init; + A_UINT32 ml_rcfg_recv_link_del_ipc_pri; + A_UINT32 ml_rcfg_recv_link_del_ipc_non_pri; + + A_UINT32 ml_rcfg_inc_to_2; + A_UINT32 ml_rcfg_inc_to_3; + A_UINT32 ml_rcfg_inc_to_4; + + A_UINT32 ml_rcfg_dec_to_3; + A_UINT32 ml_rcfg_dec_to_2; + A_UINT32 ml_rcfg_dec_to_1; + A_UINT32 ml_rcfg_dec_to_0; +} wmi_ctrl_path_ml_rcfg_stats_struct; + /** * peer statistics. */ @@ -16675,6 +16967,9 @@ typedef struct { * wmi_vdev_create_mlo_params mlo_params[0,1]; * optional TLV, only present for MLO vdev; * if the vdev is not MLO the array length should be 0. + * wmi_vdev_create_wfdr2_mode_params wfdr2_mode[0,1]; + * picked as per WMI_VDEV_CREATE_WFDR2_MODES + * to enable/disable NOA */ } wmi_vdev_create_cmd_fixed_param; @@ -16735,8 +17030,16 @@ typedef struct { #define WMI_MLO_FLAGS_SET_MLO_LINK_SWITCH(mlo_flags, value) WMI_SET_BITS(mlo_flags, 13, 1, value) #define WMI_MLO_FLAGS_GET_MLO_BRIDGE_LINK(mlo_flags) WMI_GET_BITS(mlo_flags, 14, 1) #define WMI_MLO_FLAGS_SET_MLO_BRIDGE_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 14, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_ADD_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 15, 1) +#define WMI_MLO_FLAGS_SET_LINK_ADD_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 15, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_DEL_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 16, 1) +#define WMI_MLO_FLAGS_SET_LINK_DEL_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 16, 1, value) +#define WMI_MLO_FLAGS_GET_START_AS_ACTIVE(mlo_flags) WMI_GET_BITS(mlo_flags, 17, 1) +#define WMI_MLO_FLAGS_SET_START_AS_ACTIVE(mlo_flags, value) WMI_SET_BITS(mlo_flags, 17, 1, value) +#define WMI_MLO_FLAGS_GET_IEEE_LINK_ID_VALID(mlo_flags) WMI_GET_BITS(mlo_flags, 18, 1) +#define WMI_MLO_FLAGS_SET_IEEE_LINK_ID_VALID(mlo_flags, value) WMI_SET_BITS(mlo_flags, 18, 1, value) -/* this structure used for pass mlo flags*/ +/* this structure used for passing MLO flags */ typedef struct { union { struct { @@ -16748,8 +17051,8 @@ typedef struct { mlo_mcast_vdev:1, /* indicate this is the MLO mcast primary vdev */ emlsr_support:1, /* indicate that eMLSR is supported */ mlo_force_link_inactive:1, /* indicate this link is forced inactive */ - mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP */ - mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP */ + mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP / ML peer */ + mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP / ML peer */ mlo_bridge_peer:1, /* Indicate if this link has bridge_peer */ nstr_bitmap_present:1, /* Indicate if at least one NSTR link pair is present in the MLD */ /* nstr_bitmap_size: @@ -16761,7 +17064,11 @@ typedef struct { nstr_bitmap_size:1, mlo_link_switch: 1, /* indicate the command is a part of link switch procedure */ mlo_bridge_link:1, /* indicate link is bridge link */ - unused: 17; + mlo_link_add_cancel:1, /* rollback of previous dynamic link addition */ + mlo_link_del_cancel:1, /* rollback of previous dynamic link deletion */ + start_as_active:1, /* indicate link should be started in active status */ + mlo_ieee_link_id_valid:1, /* indicate if the ieee_link_id in wmi_vdev_start_mlo_params is valid */ + unused: 13; }; A_UINT32 mlo_flags; }; @@ -16788,10 +17095,32 @@ typedef struct { wmi_mac_addr mld_macaddr; } wmi_vdev_create_mlo_params; +/* + * this TLV structure is used to pass WFD R2 parameters on vdev create + * to enable/disable NOA + */ +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; */ + A_UINT32 wfdr2_mode; /** WFD R2 modes as per WMI_VDEV_CREATE_WFDR2_MODES */ +} wmi_vdev_create_wfdr2_mode_params; + +/** VDEV create WFD R2 modes */ +typedef enum { + WMI_VDEV_CREATE_WFDR2_MODE = 0, + WMI_VDEV_CREATE_WFDR2_PCC_MODE = 1, +} WMI_VDEV_CREATE_WFDR2_MODES; + + /* this TLV structure used for pass mlo parameters on vdev start*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ - wmi_mlo_flags mlo_flags; /*only mlo enable and assoc link flag need by vdev start*/ + wmi_mlo_flags mlo_flags; /* only mlo enable, assoc link and mlo_ieee_link_id_valid flag need by vdev start */ + /** ieee_link_id: + * link id in 802.11 frame. + * This field will be invalid and ignored unless mlo_flags has + * mlo_ieee_link_id_valid bit set. + */ + A_UINT32 ieee_link_id; } wmi_vdev_start_mlo_params; /* this TLV structure used for passing mlo parameters on vdev stop */ @@ -16911,7 +17240,15 @@ typedef enum { * Bridge VDEV/PEER will be required to seamlessly transmit * to diagonal links in 4 chip MLO. */ -#define WMI_UNIFIED_VDEV_SUBTYPE_BRIDGE 0x8 +#define WMI_UNIFIED_VDEV_SUBTYPE_BRIDGE 0x8 + +/* Subtype to indicate that the VDEV is in VBSS mode. + * VBSS Vdev could be active or passive state. + * VBSS ACTIVE : Peer directly connected to the vdev. + * VBSS PASSIVE : Peer connected to another VBSS node in the network + */ +#define WMI_UNIFIED_VDEV_SUBTYPE_VBSS 0x9 + /** values for vdev_start_request flags */ /** Indicates that AP VDEV uses hidden ssid. only valid for @@ -17669,6 +18006,14 @@ enum WMI_VDEV_UP_FLAGS { * EMA - Enhanced Multiple BSS Advertisemet. */ WMI_VDEV_UP_FLAG_EMA_MBSSID_AP = 0x00000001, + /** VBSS_ACTIVE + * Valid only for VBSS subtype vaps. + */ + WMI_VDEV_UP_FLAG_VBSS_ACTIVE = 0x00000002, + /** VBSS_PASSIVE + * Valid only for VBSS subtype vaps. + */ + WMI_VDEV_UP_FLAG_VBSS_PASSIVE = 0x00000004, }; typedef struct { @@ -17858,6 +18203,14 @@ typedef enum { * Disassoc Imminent bit set to 1. */ #define WMI_VDEV_ROAM_11KV_CTRL_DONOT_SEND_DISASSOC_ON_BTM_DI_SET 0x4 +/* WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT: + * DUT send BTM response with reject status code if the bit set to 1. + */ +#define WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT 0x8 +/* WMI_VDEV_PARAM_ROAM_11KV_BTM_DISABLE_TTLM: + * Disable STA T2LM when received BTM load balance frame. + */ +#define WMI_VDEV_PARAM_ROAM_11KV_BTM_DISABLE_TTLM 0x10 /** NAN vdev config Feature flags */ @@ -18930,6 +19283,12 @@ typedef enum { /* Update TWT_UNAVAIL_MODE */ WMI_VDEV_PARAM_TWT_UNAVAIL_MODE, /* 0xC6 */ + /* + * Additional features supported for connection. + * Value is from enum wlan_connect_ext_features + */ + WMI_VDEV_PARAM_CONNECT_EXT_FEATURES, /* 0xC7 */ + /*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are @@ -19455,14 +19814,17 @@ typedef struct { } wmi_vdev_bss_max_idle_time_cmd_fixed_param; /** VDEV start response status codes */ -#define WMI_VDEV_START_RESPONSE_STATUS_SUCCESS 0x0 /** VDEV successfully started */ -#define WMI_VDEV_START_RESPONSE_INVALID_VDEVID 0x1 /** requested VDEV not found */ -#define WMI_VDEV_START_RESPONSE_NOT_SUPPORTED 0x2 /** unsupported VDEV combination */ -#define WMI_VDEV_START_RESPONSE_DFS_VIOLATION 0x3 /** DFS_VIOLATION since channel in the NOL is selected */ -#define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ -#define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ +#define WMI_VDEV_START_RESPONSE_STATUS_SUCCESS 0x0 /** VDEV successfully started */ +#define WMI_VDEV_START_RESPONSE_INVALID_VDEVID 0x1 /** requested VDEV not found */ +#define WMI_VDEV_START_RESPONSE_NOT_SUPPORTED 0x2 /** unsupported VDEV combination */ +#define WMI_VDEV_START_RESPONSE_DFS_VIOLATION 0x3 /** DFS_VIOLATION since channel in the NOL is selected */ +#define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ +#define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ #define WMI_VDEV_START_RESPONSE_INVALID_PREFERRED_TX_RX_STREAMS 0x6 /** Invalid preferred tx/rx streams */ -#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ +#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ +#define WMI_VDEV_START_RESPONSE_BSS_PEER_NOT_FOUND 0x8 /** bss_peer is null/not found */ +#define WMI_VDEV_START_RESPONSE_INCORRECT_CHANNEL_PARAMS 0x9 /** home channel params are incorrect */ +#define WMI_VDEV_START_RESPONSE_GENERIC_VDEV_START_FAILURE 0xa /** generic reason code for vdev start request reject */ /** Beacon processing related command and event structures */ typedef struct { @@ -21237,6 +21599,7 @@ typedef struct { #define WMI_PEER_EXT_HE_CAPS_6GHZ_VALID 0x00000008 /* param he_caps_6ghz is valid or not */ #define WMI_PEER_EXT_IS_QUALCOMM_NODE 0x00000010 /* Indicates if the peer connecting is a qualcomm node */ #define WMI_PEER_EXT_IS_MESH_NODE 0x00000020 /* Indicates if the peer connecting is a mesh node */ +#define WMI_PEER_EXT_PROTECTED_TWT 0x00000040 /* Protected TWT operation Support field in Extended RSN Capabilities element */ #define WMI_PEER_EXT_F_CRIT_PROTO_HINT_ENABLED 0x40000000 /** @@ -21305,6 +21668,14 @@ typedef struct { wmi_mac_addr self_mac; } wmi_peer_assoc_mlo_partner_link_params; +/* + * ml_reconfig for assoc mlo params: + * Bit 0: Indicate dynamic ML reconfig + */ +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG 0x00000001 +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG_GET(ml_reconfig_word) WMI_GET_BITS(ml_reconfig_word, 0, 1) +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG_SET(ml_reconfig_word, value) WMI_SET_BITS(ml_reconfig_word, 0, 1, value) + /* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ @@ -21348,6 +21719,14 @@ typedef struct { /** max num of active links recommended by AP or applications */ A_UINT32 recommended_max_num_simultaneous_links; + + union { + A_UINT32 ml_reconfig__word; + struct { + A_UINT32 ml_reconfig: 1, + unused: 31; + }; + }; } wmi_peer_assoc_mlo_params; typedef struct { @@ -22675,6 +23054,13 @@ typedef struct { * as mlo_etp_weightage_pcnt. */ A_UINT32 mlo_etp_weightage_pcnt; + /* mcc_score_factor_pcnt: + * This score factor will be applied to roam candidate score if the + * roaming to that candidate can form MCC with any other interface. + * Example: if value is 20, then only 20% of the score will be + * considered for the candidates for which MCC will be formed. + */ + A_UINT32 mcc_score_factor_pcnt; } wmi_roam_cnd_scoring_param; typedef struct { @@ -23910,17 +24296,6 @@ typedef struct { A_UINT32 time0; /* lower 32 bits of time stamp */ } A_TIME64; -typedef enum wmi_peer_sta_kickout_reason { - WMI_PEER_STA_KICKOUT_REASON_UNSPECIFIED = 0, /* default value to preserve legacy behavior */ - WMI_PEER_STA_KICKOUT_REASON_XRETRY = 1, - WMI_PEER_STA_KICKOUT_REASON_INACTIVITY = 2, - WMI_PEER_STA_KICKOUT_REASON_IBSS_DISCONNECT = 3, - WMI_PEER_STA_KICKOUT_REASON_TDLS_DISCONNECT = 4, /* TDLS peer has disappeared. All tx is failing */ - WMI_PEER_STA_KICKOUT_REASON_SA_QUERY_TIMEOUT = 5, - WMI_PEER_STA_KICKOUT_REASON_ROAMING_EVENT = 6, /* Directly connected peer has roamed to a repeater */ - WMI_PEER_STA_KICKOUT_REASON_PMF_ERROR = 7, /* PMF error threshold is hit */ -} PEER_KICKOUT_REASON; - typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_sta_kickout_event_fixed_param */ /** peer mac address */ @@ -24071,6 +24446,7 @@ typedef enum event_type_e { WOW_RTT_11AZ_EVENT, /* 32 + 13 */ WOW_P2P_NOA_EVENT, /* 32 + 14 */ WOW_XGAP_EVENT, /* 32 + 15 */ + WOW_PAGE_FAULT_EVENT, /* 32 + 16 */ } WOW_WAKE_EVENT_TYPE; typedef enum wake_reason_e { @@ -24166,6 +24542,13 @@ typedef enum wake_reason_e { WOW_REASON_STX_WOW_HIGH_DUTY_CYCLE, /* WoW exit reason MCC lite */ WOW_REASON_MCC_LITE, + /* P2P CLI detected BMISS from DFS master AP */ + WOW_REASON_P2P_CLI_DFS_AP_BMISS_DETECTED, + /* if Page Fault blocking feature enabled and PF observed under WoW */ + WOW_REASON_PF_BLOCKING_LAST_TIME, + /* C2C scan report LPI AP detect or not event */ + WOW_REASON_C2C_DETECT_EVENT, + /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -25849,6 +26232,27 @@ typedef enum */ WMI_VENDOR_OUI_ACTION_FORCE_MLSR = 14, + /* + * Disable AUX learning and AUX listen if OUI matches + */ + WMI_VENDOR_OUI_ACTION_DISABLE_AUXL = 15, + + /* + * Used to downgrade to 2 link ML connection for specific AP matchs OUI. + * This is the preferred name, since it specifies that the downgraded + * number of links is 2. + */ + WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_2_MLO_LINKS = 16, + /* alias for the above (less suitable, since it is less precise) */ + WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_MLO_LINKS = + WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_2_MLO_LINKS, + + /* + * Send Auth, Assoc request, Reassoc request frame with 6Mbps rate + * if specific vendor OUI recevied in beacon on 2GHz. + */ + WMI_VENDOR_OUI_ACTION_AUTH_ASSOC_6MBPS_2GHZ = 17, + /* Add any action before this line */ WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID @@ -27491,16 +27895,19 @@ typedef struct A_UINT32 isLastResult; /*is this event a last event of the whole batch scan*/ } wmi_batch_scan_result_event_fixed_param; -typedef enum { +typedef enum { /* DEPRECATED - DO NOT USE */ /** beacons not received from P2P GO */ WMI_P2P_GO_BMISS = 0, /** beacons not received from P2 GO's STA's connected AP */ WMI_DFS_AP_BMISS = 1, -} wmi_dfs_ap_bmiss_reason; +} wmi_dfs_ap_bmiss_reason; /* DEPRECATED - DO NOT USE */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param*/ A_UINT32 vdev_id; + /* NOTE: + * The reason_code field is deprecated, and should be ignored. + */ A_UINT32 reason_code; /* contains a wmi_dfs_ap_bmiss_reason value */ } wmi_p2p_cli_dfs_ap_bmiss_fixed_param; @@ -29811,14 +30218,36 @@ typedef struct { A_UINT32 offset; /* offset of the stats from partner_link_data for this vdev */ } wmi_partner_link_stats; +typedef enum WMI_STATS_EXT_EVENT_DATA_TYPE { + /* OPAQUE: + * The data[] bytestream in the WMI_STATS_EXT_EVENT message contains + * opaque contents that the host driver cannot interpret. + */ + WMI_STATS_EXT_EVENT_DATA_TYPE_OPAQUE, + /* VDEV_STATS_EXT: + * The data[] bytestream in the WMI_STATS_EXT_EVENT message contains + * wmi_stats_ext_event_vdev_ext struct(s). + */ + WMI_STATS_EXT_EVENT_DATA_TYPE_VDEV_EXT, +} WMI_STATS_EXT_EVENT_DATA_TYPE_E; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stats1_event_fix_param */ A_UINT32 vdev_id; /** vdev ID */ A_UINT32 data_len; /** length in byte of data[]. */ + /** data_type: + * Contains a WMI_STATS_EXT_EVENT_DATA_TYPE_E value to show whether + * the host can interpret the data[] contents, and if so, how to + * interpret them. + */ + A_UINT32 data_type; /* This structure is used to send REQ binary blobs - * from firmware to application/service where Host drv is pass through . + * from firmware to application/service where Host drv is pass through. + * Alternatively, by specifying in the data_type field what kind of + * information is placed in data[], the target can allow the host to + * interpret the data[] contents. * Following this structure is the TLV: - * A_UINT8 data[]; <-- length in byte given by field data_len. + * A_UINT8 data[]; <-- length in bytes given by field data_len. */ /* This structure is used to send information of partner links. * Following this structure is the TLV: @@ -29834,6 +30263,71 @@ typedef struct { */ } wmi_stats_ext_event_fixed_param; +#define WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS 32 +#define WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32 1 + +typedef enum wmi_stats_ext_event_vdev_ext_bw_counters { + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_20MHz = 0, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_40MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_80MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_160MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_320MHz, + /* values 5-7 reserved */ + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX = 8 +} wmi_stats_ext_event_vdev_ext_bw_counters_t; + +#define WMI_STATS_EXT_EVENT_VDEV_EXT_FREQ_GET(word) \ + WMI_GET_BITS(word, 0, 16) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_FREQ_SET(word, val) \ + WMI_SET_BITS(word, 0, 16, val) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_VDEV_ID_GET(word) \ + WMI_GET_BITS(word, 16, 16) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_VDEV_ID_SET(word, val) \ + WMI_SET_BITS(word, 16, 16, val) + +typedef struct wmi_stats_ext_event_vdev_ext { + /* version + * version = 1 means will use old/legacy struct + * version = 0 means will use new (wmi_stats_ext_event_vdev_ext) struct + * Some legacy target code branches use the old structure. + * Hence, control the backward compatibility through this + * version numbering. + */ + A_UINT32 version; + /* Number of MPDUs entering the queue */ + A_UINT32 mpdu_enqueue; + /* Number of MPDUs retried from SW */ + A_UINT32 mpdu_requeued; + /* Set of TX MCS counters */ + A_UINT32 tx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of TX BW counters */ + A_UINT32 tx_bw[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Set of RX MCS counters */ + A_UINT32 rx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of RX BW counters */ + A_UINT32 rx_bw[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Beacon RSSI (dBm units) */ + A_INT32 beacon_rssi; + /* Total number of bytes transmitted */ + A_UINT32 tx_bytes; + /* Total number of bytes received */ + A_UINT32 rx_bytes; + /* + * home channel frequency and vdev id: + * lower 16bits is frequency, upper 16bits is vdev_id + */ + union { + A_UINT32 freq__vdev_id__word32; + struct { + A_UINT32 + freq: 16, /* MHz units */ + vdev_id: 16; + }; + }; + /* opaque / unspecified contents, for debugging, etc */ + A_UINT32 opaque_dbg[WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32]; +} wmi_stats_ext_event_vdev_ext_t; + typedef enum { /** Default: no replay required. */ WMI_PEER_DELETE_NO_REPLAY = 0, @@ -31529,6 +32023,8 @@ typedef struct { A_UINT32 vdev_id; /* picks values from WMI_USD_MODE_STATUS */ A_UINT32 usd_mode_status; + /* Instance ID of the service */ + A_UINT32 instance_id; } wmi_usd_service_event_fixed_param; typedef enum { @@ -33987,6 +34483,55 @@ typedef enum { * A_INT8 6G 320M Channel Center Freq 6265 CTL Limit Power OFDMA */ + BIOS_PARAM_TYPE_PPAG_DATA, + /* + * BIOS_PARAM_TYPE_PPAG_DATA Structure has 12 bytes as below, + * antennaGain value unit is 0.25 dBm. + * If Enable flag is 0, FW will not use PPAG antennaGain value of bios. + * + * A_UINT8 version + * A_UINT8 enableFlag + * A_INT8 antennaGain[GAIN_BANDS]; // 9bytes + * A_UINT8 reserved + * ==================== A_INT8 antennaGain[GAIN_BANDS]; ================= + * A_INT8 atennaGain for [2400, 2483) + * A_INT8 atennaGain for [5150, 5250) + * A_INT8 atennaGain for [5250, 5350) + * A_INT8 atennaGain for [5470, 5725) + * A_INT8 atennaGain for [5725, 5895) + * A_INT8 atennaGain for [5925, 6425) + * A_INT8 atennaGain for [6425, 6525) + * A_INT8 atennaGain for [6525, 6875) + * A_INT8 atennaGain for [6875, 7125) + * ============================================================== + */ + + BIOS_PARAM_TYPE_COUNTRY_CTL_MCS_DATA, + /* + * BIOS_PARAM_TYPE_COUNTRY_CTL_MCS_DATA structure contains + * - fix length parameter: + * version, entryNum + * - variable length array - countryCtlMcsData[entryNum] + * + * A_UINT8 version; + * A_UINT8 entryNum; // 0~15 + * countryCtlMcsData countryCtlMcsData[entryNum]; // variable array, + * // 12 bytes * entryNum + * ====================struct countryCtlMcsData ====================== + * A_UINT16 countryCode; + * A_UINT8 frequencyBand; + * A_UINT8 powerMode; + * A_UINT8 ocbIndex; + * A_UINT8 mcs; + * A_UINT8 bf; + * A_UINT8 nss; + * A_UINT8 txChainNum; + * A_UINT8 compareCtl; + * A_UINT8 powerLimit; // per chain, 1/4 db + * A_UINT8 reserved; + * ============================================================== + */ + BIOS_PARAM_TYPE_MAX, } bios_param_type_e; @@ -35870,6 +36415,8 @@ typedef enum { WMI_REQUEST_CTRL_STA_RRM_STAT = 18, WMI_REQUEST_CTRL_PATH_VDEV_BCN_TX_STAT = 19, WMI_REQUEST_CTRL_PATH_PDEV_BCN_TX_STAT = 20, + WMI_REQUEST_CTRL_PATH_PDEV_CONN_STAT = 21, + WMI_REQUEST_CTRL_PATH_ML_RECONFIG_STAT = 22, } wmi_ctrl_path_stats_id; typedef enum { @@ -36349,12 +36896,29 @@ typedef enum wmi_hw_mode_config_type { #define WMI_SUPPORT_AAR_GET(mld_capability) WMI_GET_BITS(mld_capability, 12, 1) #define WMI_SUPPORT_AAR_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 12, 1, value) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_GET(mld_capability) WMI_GET_BITS(mld_capability, 13, 1) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 13, 1, value) + + /* * 11BE Ext MLD Capability Set and Get macros */ #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 0, 1) #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 0, 1, value) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 1, 4) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 4, value) + +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 5, 1) +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 5, value) + +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 6, 1) +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 6, 1, value) + +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 7, 1) +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 7, 1, value) + + /* * 11BE MSD Capability Set and Get macros */ @@ -36638,7 +37202,8 @@ typedef struct { * Value 3 is reserved */ freq_separation_str:5, aar_support:1, - reserved2: 19; + link_reconfig_support:1, + reserved2: 18; }; A_UINT32 mld_capability; }; @@ -36646,7 +37211,11 @@ typedef struct { struct { A_UINT32 op_update_para_support:1, /* Indicates support of operation parameter update negotiation */ - reserved3: 31; + recommended_max_simultaneous_links:4, + nstr_status_update_support:1, + emlsr_one_link_support:1, + btm_recommended_for_multi_ap:1, + reserved3: 24; }; A_UINT32 ext_mld_capability; }; @@ -36891,8 +37460,34 @@ typedef struct { * the bits within the bitmap */ A_UINT32 twt_capability_bitmap; + + /* min_max_wake_dur_us + * min wake dur - refer to min TWT SP duration + * max wake dur - refer to max TWT SP duration + */ + A_UINT32 min_max_wake_dur_us; + + /* min_max_wake_intvl_us + * min wake intvl - refer to min TWT SI interval + * max wake intvl - refer to max TWT SI interval + */ + A_UINT32 min_max_wake_intvl_us; } wmi_twt_caps_params; +/* 0 - 15 bits for MAX WAKE DUR , 16 - 31 bits for MIN WAKE DUR */ +#define TWT_CAPS_SET_MAX_WAKE_DUR(var, val) WMI_SET_BITS(var, 0, 16, val) +#define TWT_CAPS_SET_MIN_WAKE_DUR(var, val) WMI_SET_BITS(var, 16, 16, val) + +#define TWT_CAPS_GET_MAX_WAKE_DUR(var) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_DUR(var) WMI_GET_BITS(var, 16, 16) + +/* 0 - 15 bits for MAX WAKE INTVL , 16 - 31 bits for MIN WAKE INTVL */ +#define TWT_CAPS_SET_MAX_WAKE_INTVL(var, val) WMI_SET_BITS(var, 0, 16, val) +#define TWT_CAPS_SET_MIN_WAKE_INTVL(var, val) WMI_SET_BITS(var, 16, 16, val) + +#define TWT_CAPS_GET_MAX_WAKE_INTVL(var) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_INTVL(var) WMI_GET_BITS(var, 16, 16) + /* * This TLV used for Scan Radio RDP * We have an RDP which supports Multiband-Frequency (2 GHz, 5 GHz and 6 GHz) @@ -37094,6 +37689,8 @@ typedef struct { A_UINT32 pout_reduction_25db; /* tx chain mask: Chain mask to apply based on the temp level */ A_UINT32 tx_chain_mask; + /* duty cycle in ms for this level */ + A_UINT32 duty_cycle; } wmi_therm_throt_level_config_info; typedef enum { @@ -38051,6 +38648,14 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID); WMI_RETURN_STRING(WMI_SET_AP_SUSPEND_RESUME_CMDID); WMI_RETURN_STRING(WMI_P2P_GO_DFS_AP_CONFIG_CMDID); + WMI_RETURN_STRING(WMI_USD_SERVICE_CMDID); + WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_CMDID); + WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); + WMI_RETURN_STRING(WMI_GET_SCAN_CACHE_RESULT_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + WMI_RETURN_STRING(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); + WMI_RETURN_STRING(WMI_VDEV_VBSS_CONFIG_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -38752,6 +39357,12 @@ typedef struct { A_UINT32 new_alpha2; /** alpha2 characters representing the country code */ } wmi_11d_new_country_event_fixed_param; +/** FW indicating LPI AP detect or not to Host */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param */ + A_UINT32 lpi_ap_detect; /** flag to indicate LPI AP detect or not */ +} wmi_c2c_detect_event_fixed_param; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_coex_get_antenna_isolation_cmd_fixed_param */ @@ -39683,6 +40294,14 @@ typedef enum _WMI_TWT_COMMAND_T { #define TWT_FLAGS_GET_PM_RESPONDER_MODE(flag) WMI_GET_BITS(flag, 15, 1) #define TWT_FLAGS_SET_PM_RESPONDER_MODE(flag, val) WMI_SET_BITS(flag, 15, 1, val) +/* 1 means IMPLICIT TWT, 0 means EXPLICIT TWT */ +#define TWT_FLAGS_GET_IMPLICIT(flag) WMI_GET_BITS(flag, 16, 1) +#define TWT_FLAGS_SET_IMPLICIT(flag, val) WMI_SET_BITS(flag, 16, 1, val) + +/* 1 means RENEGOTIATE TWT supported, 0 means RENEGOTIATE TWT not supported */ +#define TWT_FLAGS_GET_RENEGOTIATE(flag) WMI_GET_BITS(flag, 17, 1) +#define TWT_FLAGS_SET_RENEGOTIATE(flag, val) WMI_SET_BITS(flag, 17, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_ack_event_fixed_param */ A_UINT32 vdev_id; /* VDEV identifier */ @@ -39849,6 +40468,7 @@ typedef enum _WMI_DEL_TWT_STATUS_T { WMI_DEL_TWT_STATUS_SCAN_IN_PROGRESS, /* Reason Scan in progress */ WMI_DEL_TWT_STATUS_CHANGE_CONGESTION_TIMEOUT, /* Congestion timeout changed */ WMI_DEL_TWT_STATUS_P2P_GO_NOA, /* P2P GO NOA */ + WMI_DEL_TWT_STATUS_UNSUPPORTED_MLMR_MODE, /* Teardown due to MLMR */ } WMI_DEL_TWT_STATUS_T; typedef struct { @@ -40310,6 +40930,109 @@ typedef struct { }; } wmi_spectral_fft_size_capabilities; +typedef struct { + /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param */ + A_UINT32 tlv_header; + /* ID of pdev to which capability is sent */ + A_UINT32 pdev_id; +} wmi_pdev_wifi_radar_cap_evt_fixed_param; + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_PDEV_ID_GET(word32) \ + WMI_GET_BITS(word32, 0, 4) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_PDEV_ID_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 4, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_TX_GET(word32) \ + WMI_GET_BITS(word32, 4, 28) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_TX_SET(word32, value) \ + WMI_SET_BITS(word32, 4, 28, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_EXPO_NUM_RX_GET(word32) \ + WMI_GET_BITS(word32, 0, 16) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_EXPO_NUM_RX_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 16, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_INITIAL_SKIP_RX_GET(word32) \ + WMI_GET_BITS(word32, 16, 16) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_INITIAL_SKIP_RX_SET(word32, value) \ + WMI_SET_BITS(word32, 16, 16, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities */ + union { + A_UINT32 ltf_cap1_word32; + struct { + /* + * bits 3:0 -> PDEV ID + * bits 31:4 -> LTF at Tx configuration + */ + A_UINT32 + pdev_id: 4, + /* Max number of LTF at Tx configuration */ + ltf_max_num_tx: 28; + }; + }; + union { + A_UINT32 ltf_cap2_word32; + struct { + /* + * bits 15:0 -> LTF at Rx configuration in exponential term + * bits 31:16 -> LTF to skip intially at Rx configuration + */ + A_UINT32 + ltf_max_expo_num_rx: 16, + /* Max number of LTF at Rx configuration */ + ltf_max_num_initial_skip_rx: 16; + /* Max number of LTF to skip initially at Rx configuration */ + }; + }; + /** + * This TLV contains target LTF capability for Wi-Fi Radar sensing feature. + */ +} wmi_wifi_radar_ltf_length_capabilities; + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_PDEV_ID_GET(word32) \ + WMI_GET_BITS(word32, 0, 4) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_PDEV_ID_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 4, value) + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_MAX_NUM_RX_CHAIN_GET(word32) \ + WMI_GET_BITS(word32, 4, 7) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_MAX_NUM_RX_CHAIN_SET(word32, value) \ + WMI_SET_BITS(word32, 4, 7, value) + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_BEST_ISOLATED_CHAIN_PAIR_SEL_GET(word32) \ + WMI_GET_BITS(word32, 11, 1) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_BEST_ISOLATED_CHAIN_PAIR_SEL_SET(word32, value) \ + WMI_SET_BITS(word32, 11, 1, value) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities */ + A_UINT32 tlv_header; + union { + A_UINT32 chain_cap1_word32; + struct { + /* + * bits 3:0 -> PDEV ID + * bits 10:4 -> Max number of Rx chain capture in one shot + * bit 11 -> Best Isolated Chain pair selection enabled or not + * bits 31:12 -> reserved + */ + A_UINT32 + pdev_id: 4, + /* Max num of Rx chain can be used to capture at a time */ + max_num_rx_chain: 7, + /* Chain-to-Chain Isolation based chain pair support */ + best_isolated_chain_pair_sel: 1, + reserved:20; + }; + }; + /** + * This TLV contains target chain capability for Wi-Fi Radar sensing feature. + */ +} wmi_wifi_radar_chain_capabilities; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_ctl_failsafe_event_params */ A_UINT32 pdev_id; /* ID of pdev to which ctl failsafe status is sent */ @@ -40434,6 +41157,17 @@ typedef struct { * than rssi_6g_threshold. If rssi_6g_threshold is 0, it should be ignored. */ A_INT32 rssi_6g_threshold; /* units = dBm */ + /** bss_load_alpha_pct + * This parameter is used for updating the exponential average of the + * BSS load: + * new avg BSS load = + * new BSS load measurement * alpha / 100 + + * old avg BSS load * (100 - alpha) / 100 + * This parameter uses percent units. E.g. if bss_load_alpha_pct == 10, + * the new average will be the sum of 10% of the new measurement + 90% of + * the old average. + */ + A_UINT32 bss_load_alpha_pct; } wmi_roam_bss_load_config_cmd_fixed_param; /** Deauth roam trigger parameters */ @@ -40704,6 +41438,11 @@ typedef enum { WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER_AFTER_INACTIVITY, WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER_AFTER_INACTIVITY_CU, WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER_CU, + /* MLD_EXTRA_PARTIAL_SCAN: + * FW triggers extra partial scan when all ml links are not found + * during first partial scan. + */ + WMI_ROAM_TRIGGER_SUB_REASON_MLD_EXTRA_PARTIAL_SCAN, } WMI_ROAM_TRIGGER_SUB_REASON_ID; typedef enum wmi_roam_invoke_status_error { @@ -41386,6 +42125,9 @@ typedef struct { #define WMI_MLO_LINK_INFO_GET_IEEE_LINK_ID(link_info) WMI_GET_BITS(link_info, 10, 4) #define WMI_MLO_LINK_INFO_SET_IEEE_LINK_ID(link_info, val) WMI_SET_BITS(link_info, 10, 4, val) +#define WMI_MLO_LINK_INFO_GET_FREQ(link_info) WMI_GET_BITS(link_info, 14, 16) +#define WMI_MLO_LINK_INFO_SET_FREQ(link_info, val) WMI_SET_BITS(link_info, 14, 16, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_info_tlv_param */ wmi_mac_addr link_addr; @@ -41398,6 +42140,7 @@ typedef struct { * 1 - rejected * b[7-9] : Band - link band info (band value is from wmi_mlo_band_info) * b[10-13] : IEEE link id - Link id associated with AP + * b[14-29] : Frequency - Link channel frequency in MHz units */ } wmi_mlo_link_info; @@ -41861,6 +42604,7 @@ typedef enum { WMI_6GHZ_REG_PWRMODE_SP = 1, /* SP mode for AP and client products */ WMI_6GHZ_REG_PWRMODE_VLP = 2, /* VLP mode for AP and client products */ WMI_6GHZ_REG_PWRMODE_SP_STA = 3, /* SP client mode for AP products */ + WMI_6GHZ_REG_PWRMODE_C2C = 4, /*C2C client mode for AP and client products*/ WMI_6GHZ_REG_PWRMODE_MAX = 5 } WMI_6GHZ_REG_PWRMODE_TYPE; @@ -43950,6 +44694,13 @@ typedef struct { /****** End of 11BE EHT MAC Capabilities Information field ******/ +/****** 11BE EHT OPS Information field ******/ + +/* Bit 0 is for MCS15. If bit0 is 1 then we enable mcs15 */ +#define WMI_EHT_OPS_SUPMCS15_GET(eht_ops) WMI_GET_BITS(eht_ops, 0, 1) +#define WMI_EHT_OPS_SUPMCS15_SET(eht_ops, value) WMI_SET_BITS(eht_ops, 0, 1, value) + +/****** End of 11BE EHT OPS Information field ******/ typedef struct { /** TLV tag and len; tag equals @@ -45888,6 +46639,7 @@ typedef enum { WMI_MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3, /* Set force specific links because of AP-side link removal */ WMI_MLO_LINK_FORCE_REASON_TDLS = 4, /* Set force specific links because of 11BE MLO TDLS setup/teardown */ WMI_MLO_LINK_FORCE_REASON_REVERT_FAILURE = 5, /* Set force specific links for revert previous failed due to host reject */ + WMI_MLO_LINK_FORCE_REASON_LINK_DELETE = 6, /* Set force specific links because link is deleted from associated link set */ } WMI_MLO_LINK_FORCE_REASON; #define WMI_MLO_CONTROL_FLAGS_GET_OVERWRITE_FORCE_ACTIVE(mlo_flags) \ @@ -46111,6 +46863,9 @@ typedef struct { A_UINT32 mld_group_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ A_UINT32 pdev_id; + + A_UINT32 max_num_ml_peers; + /* * Followed by TLVs: * A_UINT32 hw_link_ids[]; @@ -46195,6 +46950,31 @@ typedef struct { */ } wmi_mlo_link_recommendation_fixed_param; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + wmi_mac_addr mld_addr; /* MLD address of AP */ + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* MLD address of AP */ + wmi_mac_addr mld_addr; + /* any non-zero values of status indicate link reconfig failure. */ + A_UINT32 status; + /* valid only when status is non-zero. fw will do reassociation if link reconfig failure */ + A_UINT32 reassoc_if_failure; +} wmi_mlo_link_reconfig_complete_fixed_param; + #define WMI_TID_TO_LINK_MAP_TID_NUM_GET(_var) WMI_GET_BITS(_var, 0, 5) #define WMI_TID_TO_LINK_MAP_TID_NUM_SET(_var, _val) WMI_SET_BITS(_var, 0, 5, _val) @@ -46349,7 +47129,7 @@ typedef struct { */ } wmi_peer_tid_to_link_map_fixed_param; -typedef struct{ +typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param */ A_UINT32 tlv_header; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ @@ -47059,6 +47839,19 @@ typedef struct { A_UINT32 svc_class_id; /* which service class is being disabled */ } wmi_sawf_svc_class_disable_cmd_fixed_param; +/* Used to store Hop count info for SDWF-Ezmesh scenario based on topology changes */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param */ + A_UINT32 peer_id; + A_UINT32 hop_count; + /* delay_bound: + * Placeholder for future functionality where delay bound will be directly + * passed to FW from host. + * (units = ms) + */ + A_UINT32 delay_bound; +} wmi_sawf_ezmesh_hop_count_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sw_cal_ver_cap */ A_UINT32 bdf_cal_ver; /* SW cal version in BDF */ @@ -47665,6 +48458,7 @@ typedef struct { #define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_CHAIN_NUM 4 #define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_2G_RATE_NUM 18 +#define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_2G_RATE_NUM_EXT 8 #define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_5G_6G_RATE_NUM 24 @@ -47678,14 +48472,14 @@ typedef struct { */ /* currently 2GHz band has 2 chains (though space is allocated for up - * to 4 chains) and each chain has 18 rates. + * to 4 chains) and each chain has 18 rates and 8 extended rates. * bitmap_of_2GHz_band[0] -> chain 0 bitmap: - * |bit 0|bit 1|......|bit 17| - * |rate 0|rate 1|......|rate 17| + * |bit 0|bit 1|......|bit 17| bit 18 |......| bit 25 | + * |rate 0|rate 1|......|rate 17|ext rate 0|......|ext rate 7| * * bitmap_of_2GHz_band[1] -> chain 1 bitmap: - * |bit 0|bit 1|......|bit 17| - * |rate 0|rate 1|......|rate 17| + * |bit 0|bit 1|......|bit 17| bit 18 |......| bit 25 | + * |rate 0|rate 1|......|rate 17|ext rate 0|......|ext rate 7| * * bitmap_of_2GHz_band[2] -> reserved * bitmap_of_2GHz_band[3] -> reserved @@ -48227,6 +49021,7 @@ typedef enum _WMI_VDEV_PAUSE_TYPE WMI_VDEV_PAUSE_TYPE_UNKNOWN = 0, WMI_VDEV_PAUSE_TYPE_MLO_LINK = 1, WMI_VDEV_PAUSE_TYPE_TX = 2, + WMI_VDEV_PAUSE_TYPE_TX_DATA = 3, } WMI_VDEV_PAUSE_TYPE; typedef struct { @@ -48241,10 +49036,26 @@ typedef struct { A_UINT32 pause_dur_ms; } wmi_vdev_pause_cmd_fixed_param; +typedef enum _WMI_MLO_link_BSS_OP_CODE +{ + MLO_LINK_BSS_OP_UPDATE = 0, + MLO_LINK_BSS_OP_ADD = 1, + MLO_LINK_BSS_OP_DEL = 2, +} WMI_MLO_link_BSS_OP_CODE; + typedef struct { A_UINT32 tlv_header; A_UINT32 ieee_link_id; /* key to identify a link */ wmi_channel wmi_chan; + A_UINT32 op_code; /* see definition of WMI_MLO_link_BSS_OP_CODE */ + /* bss_id: + * This field is only relevant for op_code MLO_LINK_BSS_OP_ADD. + */ + wmi_mac_addr bss_id; + /* self_mac: + * This field is only relevant for op_code MLO_LINK_BSS_OP_ADD. + */ + wmi_mac_addr self_mac; } wmi_mlo_link_bss_param; typedef struct { @@ -48800,13 +49611,15 @@ typedef struct { #define WMI_PEER_ACTIVE_TRAFFIC_TYPE_BACKGROUND_S 2 /* bits 3-15 are reserved for new non-interactive traffic types */ -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18 -/* bits 19-31 are reserved for new interactive traffic types */ +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_WEB_BROWSING_M 0x00080000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_WEB_BROWSING_S 19 +/* bits 20-31 are reserved for new interactive traffic types */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_active_traffic_map_cmd_fixed_param */ @@ -48863,8 +49676,369 @@ typedef struct { A_UINT32 tlv_header; /* status takes values from WMI_MLO_TID_TO_LINK_MAP_STATUS */ A_UINT32 status; + /* Vdev_id on which T2LM command request is received */ + A_UINT32 vdev_id; } wmi_mlo_peer_tid_to_link_map_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param */ + A_UINT32 tlv_header; + /* vdev_id on which link reconfig indicate event is received */ + A_UINT32 vdev_id; + /* MLD MAC address */ + wmi_mac_addr mld_mac_address; + /* trigger reason of request link reconfig to host, + * enum of WMI_ROAM_TRIGGER_REASON_ID. + * WMI_ROAM_TRIGGER_REASON_FORCED will be used for STA(User/Host) + * initiated link reconfig. + * WMI_ROAM_TRIGGER_REASON_BTM will be used for AP initiated link reconfig. + * Other will be used for STA(fw) initiated link reconfig. + */ + A_UINT32 trigger_reason; + /* trigger_result: + * This field is only valid when trigger_reason == + * WMI_ROAM_TRIGGER_REASON_FORCED. + * Any non-zero values of trigger_result indicate link reconfig failure. + */ + A_UINT32 trigger_result; + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_start_indication_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_add_param */ + A_UINT32 link_id; /* AP's link ID of add link */ + wmi_mac_addr link_addr; /* AP's link address of add link */ + /* vdev_id: + * which vdev to repurpose on with add link_id if it's not 0xff + */ + A_UINT32 vdev_id; +} wmi_mlo_link_add_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_del_param */ + A_UINT32 link_id; /* AP's link id of delete link */ + wmi_mac_addr link_addr; /* AP's link address of delete link */ +} wmi_mlo_link_del_param; + +typedef enum { + WMI_EVENT_POWER_BOOST_START_TRAINING = 0, + WMI_EVENT_POWER_BOOST_ABORT, + WMI_EVENT_POWER_BOOST_COMPLETE, + + WMI_EVENT_POWER_BOOST_MAX +} wmi_pdev_power_boost_event_type; + +typedef enum { + WMI_PDEV_POWER_BOOST_TS_FIRST_PASS = 0, + WMI_PDEV_POWER_BOOST_TS_SECOND_PASS, + + WMI_PDEV_POWER_BOOST_TS_MAX +} wmi_pdev_power_boost_training_stage; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the event is sent */ + A_UINT32 pdev_id; + /* enum wmi_pdev_power_boost_event_type to update the power boost status */ + A_UINT32 status; + /* training_stage: + * The training stage for which the I/Q samples are updated in DDR. + * This field holds a wmi_pdev_power_boost_training_stage value. + */ + A_UINT32 training_stage; + /* MCS value for which the current DPD training has been done */ + A_UINT32 mcs; + /* bandwidth: + * Bandwidth value in Mhz for which the current DPD training has been done + */ + A_UINT32 bandwidth; + /* current target temperature while training the DPD packet in degree C */ + A_INT32 temperature_degreeC; + /* primary channel frequency in MHz for which DPD training is done */ + A_UINT32 primary_chan_mhz; + /** Center frequency 1 in MHz */ + A_UINT32 band_center_freq1; + /** Center frequency 2 in MHz - valid only for 11ac/VHT 80+80 mode */ + A_UINT32 band_center_freq2; + /* phy_mode: + * PHY mode as listed by enum WLAN_PHY_MODE, for which the current DPD + * training has been done + */ + A_UINT32 phy_mode; + /* size_kb: + * Size of the buffer consumed to write the I/Q samples data by uCode, + * in units of KB + */ + A_UINT32 size_kb; +} wmi_pdev_power_boost_event_fixed_param; + +typedef enum { + WMI_CMD_POWER_BOOST_READY = 0, + WMI_CMD_POWER_BOOST_ESTIMATED_DATA, + WMI_CMD_POWER_BOOST_ABORT, + + WMI_CMD_POWER_BOOST_MAX +} wmi_pdev_power_boost_cmd_type; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the cmd is sent */ + A_UINT32 pdev_id; + /* enum wmi_pdev_power_boost_cmd_type to update the power boost status */ + A_UINT32 status; + /* wmi_pdev_power_boost_training_stage value to indicate training stage */ + A_UINT32 training_stage; + /* MCS value for which the Power Boost training has been done */ + A_UINT32 mcs; + /* Bandwidth in Mhz for which the Power Boost training has been done */ + A_UINT32 bandwidth; + /* current target temperature while training the DPD packet in degree C */ + A_INT32 temperature_degreeC; + /* primary 20 MHz channel frequency in MHz */ + A_UINT32 primary_chan_mhz; + /* Center frequency 1 in MHz*/ + A_UINT32 band_center_freq1; + /* Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ + A_UINT32 band_center_freq2; + /* phy_mode: + * phy mode as listed by enum WLAN_PHY_MODE, for which the current + * Power Boost training has been done. + */ + A_UINT32 phy_mode; + /* tx_evm: + * Tx_evm value as calculated after the Power Boost training, + * in units of 1/4 (0.25dBm) steps. + */ + A_INT32 tx_evm; + /* tx_mask_margin: + * Tx spectral mask margin value as calculated after the Power Boost + * training, in units of 1/4 (0.25dBm) steps. + */ + A_INT32 tx_mask_margin; +} wmi_pdev_power_boost_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the cmd is sent */ + A_UINT32 pdev_id; + /* Lower 32 bit DDR address as allocated by the host */ + A_UINT32 paddr_aligned_lo; + /* Higher 32 bit DDR address as allocated by the host */ + A_UINT32 paddr_aligned_hi; + /* Size of the buffer been allocated by the Host in units of KB */ + A_UINT32 size; +} wmi_pdev_power_boost_mem_addr_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param */ + A_UINT32 tlv_header; +} wmi_get_scan_cache_result_cmd_fixed_param; + +/* Element ID 61 (HT Operation) is present (see HT 7.3.2) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 0, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 0, 1, value) + +/* Element ID 192 (VHT Operation) is present (see VHT 8.4.2) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 1, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 1, 1, value) + +/* Element ID 255 + Extension 36 (HE Operation) is present (see 802.11ax 9.4.2.1) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 2, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 2, 1, value) + +/* Element ID 255 + Extension 106 (EHT Operation) is present(see 802.11be D1.5 9.4.2.1) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 3, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 3, 1, value) + +/* Element ID 127 (Extended Capabilities) is present, and bit 70 (Fine Timing Measurement Responder) is set to 1 (see IEEE Std 802.11-2016 9.4.2.27) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER_GET(flags) WMI_GET_BITS(flags, 4, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER_SET(flags, value) WMI_SET_BITS(flags, 4, 1, value) + + +typedef struct { + wmi_channel_width width; + A_UINT32 center_frequency0; /* Frequency value in MHz */ + A_UINT32 center_frequency1; /* Frequency value in MHz */ + A_UINT32 primary_frequency; /* Frequency value in MHz */ +} wifi_channel_spec; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_cache_info */ + /* age_ms: + * Number of milliseconds prior to WMI_GET_SCAN_CACHE_RESULT_CMDID + * from when the probe response or beacon frame that was used to + * populate this info. + */ + A_UINT32 age_ms; + + /* The Capability Information field from beacon or probe response frame */ + A_UINT32 capability; + + wmi_ssid ssid; + + wmi_mac_addr bssid; + + /* A set of flags from WIFI_CACHED_SCAN_RESULT_FLAGS_* */ + A_UINT32 flags; + + A_INT32 rssi; /* units = dBm */ + + wifi_channel_spec chanspec; +} wmi_scan_cache_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param */ + + /* The below TLVs follow this TLV in the WMI_SCAN_CACHE_RESULT_EVENT msg: + * - A_UINT32 scan_freq_list[]; + * - struct wmi_scan_cache_info scan_cache_info[]; + */ +} wmi_scan_cache_result_fixed_param; + +#define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) +#define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) +#define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) +#define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_SET(word32, value) WMI_SET_BITS(word32, 4, 1, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES */ + union { + A_UINT32 phy_id__power_boost_enable__word32; + struct { + /* + * bits 3:0 -> PHY ID + * bit 4 -> power boost enable flag + * bits 31:5 -> reserved + */ + A_UINT32 + phy_id: 4, + /* Power Boost feature is enabled or not */ + power_boost_enable: 1, + reserved: 27; + }; + }; +} WMI_POWER_BOOST_CAPABILITIES; + +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_RSSI_ACCURACY_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_RSSI_ACCURACY_ENABLE_SET(word32, value) WMI_SET_BITS(word32, 4, 1, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_CAPABILITIES */ + union { + A_UINT32 phy_id__multigain_rssi_accuracy_enable__word32; + struct { + /* + * bits 3:0 -> PHY ID + * bit 4 -> rssi accuracy enhancement using MultiGainRSSI + * offset correction enable flag + * bits 31:5 -> reserved + */ + A_UINT32 + phy_id: 4, + rssi_accuracy_enable: 1, + reserved: 27; + }; + }; +} WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** VBSS PEER MAC address */ + wmi_mac_addr peer_mac_addr; + union { + A_UINT32 action__word32; + struct { + /** 3:0 -> Action (4 bits) + * 31:4 -> reserved (28 bits) + */ + A_UINT32 + action: 4, /* refer to wmi_vbss_action */ + reserved: 28; + }; + }; + /* + * The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_CMDID msg: + * - wmi_vdev_vbss_peer_sn_info[]; + * - wmi_vdev_vbss_peer_pn_info[]; + */ +} wmi_vdev_vbss_config_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_pn_info */ + union { + A_UINT32 pn_ctxt_id__word32; + struct { + /** 3:0 unicast/mcast/beacon + * 31:4 reserved + */ + A_UINT32 + pn_ctxt_id: 4, + reserved: 28; + }; + }; + A_UINT8 pn[16]; +} wmi_vdev_vbss_peer_pn_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info */ + union { + A_UINT32 tid_num__ssn__word32; + struct { + /** 15:0 tid number + * 31:16 start sequence number + */ + A_UINT32 + tid_num: 16, + ssn: 16; + }; + }; + /* The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_EVENTID msg: + * - A_UINT32 scan_freq_list[]; + * - wmi_vdev_vbss_config_event_fixed_param[]; + */ +} wmi_vdev_vbss_peer_sn_info; + +typedef enum { + WMI_VBSS_GET_PEER_CONTEXT = 0x1, + WMI_VBSS_SET_PEER_CONTEXT = 0x2, +} wmi_vbss_action; + +#define WMI_VDEV_VBSS_GET_ACTION(action) WMI_GET_BITS(action, 0, 4) +#define WMI_VDEV_VBSS_SET_ACTION(action, value) WMI_SET_BITS(action, 0, 4, value) + +#define WMI_VDEV_VBSS_PN_INFO_GET_PN_CTXT_ID(pn_ctxt_id) WMI_GET_BITS(pn_ctxt_id, 0, 4) +#define WMI_VDEV_VBSS_PN_INFO_SET_PN_CTXT_ID(pn_ctxt_id, value) WMI_SET_BITS(pn_ctxt_id, 0, 4, value) + +#define WMI_VDEV_VBSS_SN_INFO_GET_tid_num(tid_num_ssn) WMI_GET_BITS(tid_num_ssn, 0, 16) +#define WMI_VDEV_VBSS_SN_INFO_SET_tid_num(action, value) WMI_SET_BITS(tid_num_ssn, 0, 16, value) + +#define WMI_VDEV_VBSS_SN_INFO_GET_SSN(tid_num_ssn) WMI_GET_BITS(tid_num_ssn, 16, 16) +#define WMI_VDEV_VBSS_SN_INFO_SET_SSN(action, value) WMI_SET_BITS(tid_num_ssn, 16, 16, value) + + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** PEER MAC address */ + wmi_mac_addr peer_mac_addr; + /* The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_EVENTID msg: + * - wmi_vdev_vbss_peer_sn_info[]; + * - wmi_vdev_vbss_peer_pn_info[]; + */ +} wmi_vdev_vbss_config_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/drivers/staging/fw-api/fw/wmi_version.h b/drivers/staging/fw-api/fw/wmi_version.h index 656d21d73472..37f5972c4b92 100644 --- a/drivers/staging/fw-api/fw/wmi_version.h +++ b/drivers/staging/fw-api/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1505 +#define __WMI_REVISION_ 1564 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/drivers/staging/fw-api/hw/kiwi/v1/wcss_seq_hwioreg_umac.h b/drivers/staging/fw-api/hw/kiwi/v1/wcss_seq_hwioreg_umac.h index 69dac92cb19e..03a0e8f9dc2d 100644 --- a/drivers/staging/fw-api/hw/kiwi/v1/wcss_seq_hwioreg_umac.h +++ b/drivers/staging/fw-api/hw/kiwi/v1/wcss_seq_hwioreg_umac.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021,2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -386,6 +386,11 @@ #define HWIO_WBM_R2_WBM2SW1_RELEASE_RING_HP_ADDR(x) ((x) + 0x30d0) #define HWIO_WBM_R0_WBM2SW0_RELEASE_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_WBM_R0_WBM2SW0_RELEASE_RING_BASE_MSB_RING_SIZE_SHFT 8 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x3b0) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MSI2_BASE_LSB_ADDR(x) ((x) + 0x3fc) #define HWIO_REO_R0_REO2SW1_RING_MSI2_BASE_MSB_ADDR(x) ((x) + 0x400) #define HWIO_REO_R0_REO2SW1_RING_MSI2_DATA_ADDR(x) ((x) + 0x404) diff --git a/drivers/staging/fw-api/hw/kiwi/v2/wcss_seq_hwioreg_umac.h b/drivers/staging/fw-api/hw/kiwi/v2/wcss_seq_hwioreg_umac.h index f594c525deed..11cb09569e7d 100644 --- a/drivers/staging/fw-api/hw/kiwi/v2/wcss_seq_hwioreg_umac.h +++ b/drivers/staging/fw-api/hw/kiwi/v2/wcss_seq_hwioreg_umac.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -224,6 +224,11 @@ #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_SHFT 8 #define HWIO_REO_R0_REO2SW1_RING_ID_ADDR(x) ((x) + 0x4ec) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x4f0) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x4f4) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_LSB_ADDR(x) ((x) + 0x4f8) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_MSB_ADDR(x) ((x) + 0x4fc) diff --git a/drivers/staging/fw-api/hw/peach/v1/wcss_seq_hwioreg_umac.h b/drivers/staging/fw-api/hw/peach/v1/wcss_seq_hwioreg_umac.h index 70f00a564205..b56832a90289 100644 --- a/drivers/staging/fw-api/hw/peach/v1/wcss_seq_hwioreg_umac.h +++ b/drivers/staging/fw-api/hw/peach/v1/wcss_seq_hwioreg_umac.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -794,6 +794,11 @@ #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_SHFT 8 #define HWIO_REO_R0_REO2SW1_RING_ID_ADDR(x) ((x) + 0x508) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x50c) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x510) #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_BMSK 0x8000000 #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_SHFT 27 diff --git a/drivers/staging/fw-api/hw/peach/v2/wcss_seq_hwioreg_umac.h b/drivers/staging/fw-api/hw/peach/v2/wcss_seq_hwioreg_umac.h index 4bfd1cc75984..a70dea57d36a 100644 --- a/drivers/staging/fw-api/hw/peach/v2/wcss_seq_hwioreg_umac.h +++ b/drivers/staging/fw-api/hw/peach/v2/wcss_seq_hwioreg_umac.h @@ -797,6 +797,11 @@ #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x510) #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_BMSK 0x8000000 #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_SHFT 27 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x50c) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_LSB_ADDR(x) ((x) + 0x514) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_MSB_ADDR(x) ((x) + 0x518) #define HWIO_REO_R0_REO2SW1_RING_PRODUCER_INT_SETUP_ADDR(x) ((x) + 0x524)