diff options
| author | Michael Bestas <mkbestas@lineageos.org> | 2020-11-15 21:14:11 +0200 |
|---|---|---|
| committer | Michael Bestas <mkbestas@lineageos.org> | 2020-11-15 21:14:11 +0200 |
| commit | b51e75fd75f836588cdb8ca62020c26a951ed25c (patch) | |
| tree | 2e3a7b89f0a15c97afbb7b70de8bf3c217131417 /drivers | |
| parent | 3ec01a2c96a97c500fed84a64f43aba609b9b1f5 (diff) | |
| parent | 12514daf02b3feac945ec882c8d70aa40f8be17f (diff) | |
Merge tag 'LA.UM.7.2.r1-09400-sdm660.0' of https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/fw-api into lineage-17.1-caf-msm8998
* tag 'LA.UM.7.2.r1-09400-sdm660.0' of https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/fw-api:
fw-api: CL 9110018 - update fw common interface files
fw-api: CL 9079230 - update fw common interface files
fw-api: CL 9070306 - update fw common interface files
fw-api: CL 9068648 - update fw common interface files
fw-api: CL 9052539 - update fw common interface files
fw-api: CL 9043991 - update fw common interface files
fw-api: CL 9029062 - update fw common interface files
fw-api: CL 9020007 - update fw common interface files
fw-api: CL 8969207 - update fw common interface files
fw-api: CL 8968673 - update fw common interface files
fw-api: CL 8955754 - update fw common interface files
fw-api: CL 8955096 - update fw common interface files
fw-api: CL 8912889 - update fw common interface files
fw-api: CL 8900976 - update fw common interface files
fw-api: CL 8893572 - update fw common interface files
fw-api: CL 8890559 - update fw common interface files
fw-api: CL 8876590 - update fw common interface files
fw-api: CL 8874163 - update fw common interface files
fw-api: CL 8866928 - update fw common interface files
fw-api: CL 8856123 - update fw common interface files
fw-api: CL 8854908 - update fw common interface files
fw-api: CL 8854881 - update fw common interface files
fw-api: CL 8847485 - update fw common interface files
fw-api: CL 8837732 - update fw common interface files
fw-api: CL 8812402 - update fw common interface files
fw-api: CL 8804310 - update fw common interface files
fw-api: CL 8790961 - update fw common interface files
fw-api: CL 8790927 - update fw common interface files
fw-api: CL 8776823 - update fw common interface files
fw-api: CL 8762856 - update fw common interface files
fw-api: CL 8749246 - update fw common interface files
fw-api: CL 8748543 - update fw common interface files
fw-api: CL 8700774 - update fw common interface files
fw-api: CL 8669899 - update fw common interface files
fw-api: CL 8647982 - update fw common interface files
fw-api: CL 8595725 - update fw common interface files
fw-api: CL 8499894 - update fw common interface files
fw-api: CL 8485353 - update fw common interface files
fw-api: CL 8469425 - update fw common interface files
fw-api: CL 8452279 - update fw common interface files
fw-api: CL 8452276 - update fw common interface files
fw-api: CL 8441602 - update fw common interface files
fw-api: CL 8413004 - update fw common interface files
fw-api: CL 8388967 - update fw common interface files
fw-api: CL 8359323 - update fw common interface files
fw-api: CL 8347123 - update fw common interface files
fw-api: CL 8346800 - update fw common interface files
fw-api: CL 8315141 - update fw common interface files
fw-api: CL 8295923 - update fw common interface files
Change-Id: Ief6cba4fed4f6968a383064dc380ebd704fc3c4f
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/staging/fw-api/fw/htt.h | 1 | ||||
| -rw-r--r-- | drivers/staging/fw-api/fw/htt_ppdu_stats.h | 166 | ||||
| -rw-r--r-- | drivers/staging/fw-api/fw/htt_stats.h | 201 | ||||
| -rwxr-xr-x | drivers/staging/fw-api/fw/wlan_module_ids.h | 1 | ||||
| -rwxr-xr-x | drivers/staging/fw-api/fw/wmi_services.h | 5 | ||||
| -rwxr-xr-x | drivers/staging/fw-api/fw/wmi_tlv_defs.h | 109 | ||||
| -rwxr-xr-x | drivers/staging/fw-api/fw/wmi_unified.h | 756 | ||||
| -rwxr-xr-x | drivers/staging/fw-api/fw/wmi_version.h | 2 |
8 files changed, 1171 insertions, 70 deletions
diff --git a/drivers/staging/fw-api/fw/htt.h b/drivers/staging/fw-api/fw/htt.h index 74102299d56f..a46c61859fef 100644 --- a/drivers/staging/fw-api/fw/htt.h +++ b/drivers/staging/fw-api/fw/htt.h @@ -2223,6 +2223,7 @@ typedef enum { HTT_TX_FW2WBM_REINJECT_REASON_MCAST, HTT_TX_FW2WBM_REINJECT_REASON_ARP, HTT_TX_FW2WBM_REINJECT_REASON_DHCP, + HTT_TX_FW2WBM_REINJECT_REASON_FLOW_CONTROL, HTT_TX_FW2WBM_REINJECT_REASON_MAX, } htt_tx_fw2wbm_reinject_reason_t; diff --git a/drivers/staging/fw-api/fw/htt_ppdu_stats.h b/drivers/staging/fw-api/fw/htt_ppdu_stats.h index 253a534ba836..1b7ea8beacb5 100644 --- a/drivers/staging/fw-api/fw/htt_ppdu_stats.h +++ b/drivers/staging/fw-api/fw/htt_ppdu_stats.h @@ -32,20 +32,20 @@ #define HTT_BA_64_BIT_MAP_SIZE_DWORDS 2 #define HTT_BA_256_BIT_MAP_SIZE_DWORDS 8 enum htt_ppdu_stats_tlv_tag { - HTT_PPDU_STATS_COMMON_TLV, - HTT_PPDU_STATS_USR_COMMON_TLV, - HTT_PPDU_STATS_USR_RATE_TLV, - HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_64_TLV, - HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_256_TLV, - HTT_PPDU_STATS_SCH_CMD_STATUS_TLV, - HTT_PPDU_STATS_USR_COMPLTN_COMMON_TLV, - HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_64_TLV, - HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_256_TLV, - HTT_PPDU_STATS_USR_COMPLTN_ACK_BA_STATUS_TLV, - HTT_PPDU_STATS_USR_COMPLTN_FLUSH_TLV, - HTT_PPDU_STATS_USR_COMMON_ARRAY_TLV, - HTT_PPDU_STATS_INFO_TLV, - HTT_PPDU_STATS_TX_MGMTCTRL_PAYLOAD_TLV, + HTT_PPDU_STATS_COMMON_TLV, /* htt_ppdu_stats_common_tlv */ + HTT_PPDU_STATS_USR_COMMON_TLV, /* htt_ppdu_stats_user_common_tlv */ + HTT_PPDU_STATS_USR_RATE_TLV, /* htt_ppdu_stats_user_rate_tlv */ + HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_64_TLV, /* htt_ppdu_stats_enq_mpdu_bitmap_64_tlv */ + HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_256_TLV, /* htt_ppdu_stats_enq_mpdu_bitmap_256_tlv */ + HTT_PPDU_STATS_SCH_CMD_STATUS_TLV, /* htt_ppdu_stats_sch_cmd_tlv_v */ + HTT_PPDU_STATS_USR_COMPLTN_COMMON_TLV, /* htt_ppdu_stats_user_cmpltn_common_tlv */ + HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_64_TLV, /* htt_ppdu_stats_user_cmpltn_ba_bitmap_64_tlv */ + HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_256_TLV, /* htt_ppdu_stats_user_cmpltn_ba_bitmap_256_tlv */ + HTT_PPDU_STATS_USR_COMPLTN_ACK_BA_STATUS_TLV, /* htt_ppdu_stats_user_cmpltn_ack_ba_status_tlv */ + HTT_PPDU_STATS_USR_COMPLTN_FLUSH_TLV, /* htt_ppdu_stats_flush_tlv */ + HTT_PPDU_STATS_USR_COMMON_ARRAY_TLV, /* htt_ppdu_stats_usr_common_array_tlv_v */ + HTT_PPDU_STATS_INFO_TLV, /* htt_ppdu_stats_info */ + HTT_PPDU_STATS_TX_MGMTCTRL_PAYLOAD_TLV, /* htt_ppdu_stats_tx_mgmtctrl_payload_tlv */ /* New TLV's are added above to this line */ HTT_PPDU_STATS_MAX_TAG, @@ -412,6 +412,19 @@ enum HTT_PPDU_STATS_BW { }; typedef enum HTT_PPDU_STATS_BW HTT_PPDU_STATS_BW; +#define HTT_PPDU_STATS_COMMON_TLV_BW_M 0x000f0000 +#define HTT_PPDU_STATS_COMMON_TLV_BW_S 16 + +#define HTT_PPDU_STATS_COMMON_TLV_BW_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_BW_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_BW_S) + +#define HTT_PPDU_STATS_COMMON_TLV_BW_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BW, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BW_S)); \ + } while (0) + enum HTT_PPDU_STATS_SEQ_TYPE { HTT_SEQTYPE_UNSPECIFIED = 0, HTT_SEQTYPE_SU = 1, @@ -426,8 +439,8 @@ enum HTT_PPDU_STATS_SEQ_TYPE { }; typedef enum HTT_PPDU_STATS_SEQ_TYPE HTT_PPDU_STATS_SEQ_TYPE; -#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_M 0x00ff0000 -#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_S 16 +#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_M 0x0ff00000 +#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_S 20 #define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_GET(_var) \ (((_var) & HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_M) >> \ @@ -439,17 +452,22 @@ typedef enum HTT_PPDU_STATS_SEQ_TYPE HTT_PPDU_STATS_SEQ_TYPE; ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_S)); \ } while (0) -#define HTT_PPDU_STATS_COMMON_TLV_BW_M 0x000f0000 -#define HTT_PPDU_STATS_COMMON_TLV_BW_S 16 +/* + * MPROT_TYPE enum values: refer to enum + * pcu_ppdu_setup_init__medium_prot_type__e + * defined in tlv_enum.h + */ +#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_M 0xf0000000 +#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_S 28 -#define HTT_PPDU_STATS_COMMON_TLV_BW_GET(_var) \ - (((_var) & HTT_PPDU_STATS_COMMON_TLV_BW_M) >> \ - HTT_PPDU_STATS_COMMON_TLV_BW_S) +#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_S) -#define HTT_PPDU_STATS_COMMON_TLV_BW_SET(_var, _val) \ +#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_SET(_var, _val) \ do { \ - HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BW, _val); \ - ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BW_S)); \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BW_S)); \ } while (0) #define HTT_PPDU_STATS_COMMON_TLV_PHY_MODE_M 0x0000ffff @@ -478,6 +496,45 @@ typedef enum HTT_PPDU_STATS_SEQ_TYPE HTT_PPDU_STATS_SEQ_TYPE; ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_CHAN_MHZ_S)); \ } while (0) +#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_M 0x0000ffff +#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_S 0 + +#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_S ) + +#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_S)); \ + } while (0) + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_M 0x00ff0000 +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_S 16 + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_S) + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_S)); \ + } while(0); + +#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_M 0x01000000 +#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_S 24 + +#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_S) + +#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_S)); \ + } while (0) + typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -498,17 +555,18 @@ typedef struct { * BIT [ 15: 8] :- queue_type - HTT_TX_QUEUE_TYPE * BIT [ 19: 16] :- bw - HTT_PPDU_STATS_BW * BIT [ 27: 20] :- ppdu_seq_type - HTT_PPDU_STATS_SEQ_TYPE - * BIT [ 31: 28] :- reserved + * BIT [ 31: 28] :- mprot_type */ union { A_UINT32 bw__queue_type__frame_type; A_UINT32 ppdu_seq_type__bw__queue_type__frame_type; + A_UINT32 mprot_type__ppdu_seq_type__bw__queue_type__frame_type; struct { A_UINT32 frame_type: 8, queue_type: 8, bw: 4, ppdu_seq_type: 8, - reserved0: 4; + mprot_type: 4; }; }; A_UINT32 chain_mask; @@ -562,6 +620,38 @@ typedef struct { * latency. */ A_UINT32 txfrm_delta_time_us; + + /* + * The phy_ppdu_tx_time_us reports the time it took to transmit + * a PPDU by itself + * BIT [15 : 0] - phy_ppdu_tx_time_us reports the time it took to + * transmit by itself (not including response time) + * BIT [23 : 16] - num_ul_expected_users reports the number of users + * that are expected to respond to this transmission + * BIT [24 : 24] - beam_change reports the beam forming pattern + * between non-HE and HE portion. + * If we apply TxBF starting from legacy preamble, + * then beam_change = 0. + * If we apply TxBF only starting from HE portion, + * then beam_change = 1. + * BIT [31 : 25] - reserved + */ + union { + A_UINT32 reserved__ppdu_tx_time_us; + A_UINT32 reserved__num_ul_expected_users__ppdu_tx_time_us; + struct { + A_UINT32 phy_ppdu_tx_time_us: 16, + num_ul_expected_users: 8, + beam_change: 1, + reserved1: 7; + }; + }; + /* ppdu_start_tstmp_u32_us: + * Upper 32 bits of the PPDU start timestamp. + * This field can be combined with the ppdu_start_tstmp_us field's + * lower 32 bits of the PPDU start timestamp to form a 64-bit timestamp. + */ + A_UINT32 ppdu_start_tstmp_u32_us; } htt_ppdu_stats_common_tlv; #define HTT_PPDU_STATS_USER_COMMON_TLV_TID_NUM_M 0x000000ff @@ -655,6 +745,19 @@ typedef struct { ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_S)); \ } while (0) +#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_M 0xffff0000 +#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_S 16 + +#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_GET(_var) \ + (((_var) & HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_M) >> \ + HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_S) + +#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_S)); \ + } while (0) + #define HTT_PPDU_STATS_USER_COMMON_TLV_FRAME_CTRL_M 0x0000ffff #define HTT_PPDU_STATS_USER_COMMON_TLV_FRAME_CTRL_S 0 @@ -700,8 +803,9 @@ typedef struct { /* BIT [ 0 : 0] :- mcast * BIT [ 9 : 1] :- mpdus_tried * BIT [ 13: 10] :- bw - HTT_PPDU_STATS_BW - * BIT [ 14: 14] : - delayed_ba - * BIT [ 31: 15] :- rsvd + * BIT [ 14: 14] :- delayed_ba + * BIT [ 15: 15] :- rsvd + * BIT [ 31: 16] :- num_frames - num of MSDUs + num of MPDUs */ union { A_UINT32 bw__mpdus_tried__mcast; @@ -710,7 +814,8 @@ typedef struct { mpdus_tried: 9, bw: 4, delayed_ba: 1, - reserved0: 17; + reserved0: 1, + num_frames: 16; }; }; @@ -755,6 +860,9 @@ typedef struct { is_standalone: 1, is_buffer_addr_info_valid: 1, reserved1: 13; + + /* qdepth bytes : Contains Number of bytes of TIDQ depth */ + A_UINT32 qdepth_bytes; } htt_ppdu_stats_user_common_tlv; #define HTT_PPDU_STATS_USER_RATE_TLV_TID_NUM_M 0x000000ff diff --git a/drivers/staging/fw-api/fw/htt_stats.h b/drivers/staging/fw-api/fw/htt_stats.h index c2f4e8d648dc..71449a68b6ee 100644 --- a/drivers/staging/fw-api/fw/htt_stats.h +++ b/drivers/staging/fw-api/fw/htt_stats.h @@ -319,6 +319,25 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_FSE_RX = 28, + /* HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS + * PARAMS: + * - config_param0: [Bit0] : [1] for mac_addr based request + * - config_param1: [Bit31 : Bit0] mac_addr31to0 + * - config_param2: [Bit15 : Bit0] mac_addr47to32 + * RESP MSG: + * - htt_ctrl_path_txrx_stats_t + */ + HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = 29, + + /* HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT + * PARAMS: + * - No Params + * RESP MSG: + * - htt_rx_pdev_rate_ext_stats_t + */ + HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT = 30, + + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, }; @@ -340,6 +359,8 @@ enum htt_dbg_ext_stats_type { ((_var) |= ((_val) << HTT_DBG_EXT_PEER_STATS_RESET_S)); \ } while (0) +#define HTT_STATS_SUBTYPE_MAX 16 + typedef enum { HTT_STATS_TX_PDEV_CMN_TAG = 0, /* htt_tx_pdev_stats_cmn_tlv */ HTT_STATS_TX_PDEV_UNDERRUN_TAG = 1, /* htt_tx_pdev_stats_urrn_tlv_v */ @@ -441,6 +462,9 @@ typedef enum { HTT_STATS_RX_PDEV_UL_MUMIMO_TRIG_STATS_TAG = 97, /* htt_rx_pdev_ul_mumimo_trig_stats_tlv */ HTT_STATS_RX_FSE_STATS_TAG = 98, /* htt_rx_fse_stats_tlv */ HTT_STATS_PEER_SCHED_STATS_TAG = 99, /* htt_peer_sched_stats_tlv */ + HTT_STATS_SCHED_TXQ_SUPERCYCLE_TRIGGER_TAG = 100, /* htt_sched_txq_supercycle_triggers_tlv_v */ + HTT_STATS_PEER_CTRL_PATH_TXRX_STATS_TAG = 101, /* htt_peer_ctrl_path_txrx_stats_tlv */ + HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG = 102, /* htt_pdev_ctrl_path_tx_stats_tlv */ HTT_STATS_MAX_TAG, } htt_tlv_tag_t; @@ -509,6 +533,9 @@ typedef enum { #define HTT_TX_PDEV_MAX_SIFS_BURST_STATS 9 #define HTT_TX_PDEV_MAX_SIFS_BURST_HIST_STATS 10 #define HTT_TX_PDEV_MAX_PHY_ERR_STATS 18 +/* HTT_TX_PDEV_SCHED_TX_MODE_MAX: + * DEPRECATED - num sched tx mode max is 8 + */ #define HTT_TX_PDEV_SCHED_TX_MODE_MAX 4 #define HTT_TX_PDEV_NUM_SCHED_ORDER_LOG 20 @@ -672,6 +699,10 @@ typedef struct { A_UINT32 next_seq_cancel; /* Num of times fes offset was misaligned */ A_UINT32 fes_offsets_err_cnt; + /* Num of times peer blacklisted for MU-MIMO transmission */ + A_UINT32 num_mu_peer_blacklisted; + /* Num of times mu_ofdma seq posted */ + A_UINT32 mu_ofdma_seq_posted; } htt_tx_pdev_stats_cmn_tlv; #define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) @@ -738,6 +769,12 @@ typedef struct { A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_PDEV_TRIED_MPDU_CNT_HIST */ } htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + /* Num MGMT MPDU transmitted by the target */ + A_UINT32 fw_tx_mgmt_subtype[HTT_STATS_SUBTYPE_MAX]; +} htt_pdev_ctrl_path_tx_stats_tlv_v; + /* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_TX * TLV_TAGS: * - HTT_STATS_TX_PDEV_CMN_TAG @@ -748,6 +785,7 @@ typedef struct { * - HTT_STATS_TX_PDEV_SIFS_HIST_TAG * - HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG * - HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG + * - HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG */ /* NOTE: * This structure is for documentation, and cannot be safely used directly. @@ -762,6 +800,7 @@ typedef struct _htt_tx_pdev_stats { htt_tx_pdev_stats_sifs_hist_tlv_v sifs_hist_tlv; htt_tx_pdev_stats_tx_ppdu_stats_tlv_v tx_su_tlv; htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v tried_mpdu_cnt_hist_tlv; + htt_pdev_ctrl_path_tx_stats_tlv_v ctrl_path_tx_tlv; } htt_tx_pdev_stats_t; /* == SOC ERROR STATS == */ @@ -1216,7 +1255,7 @@ typedef enum { HTT_STATS_PREAM_COUNT, } HTT_STATS_PREAM_TYPE; -#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12 +#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ /* HTT_TX_PEER_STATS_NUM_GI_COUNTERS: * GI Index 0: WHAL_GI_800 * GI Index 1: WHAL_GI_400 @@ -1239,6 +1278,7 @@ typedef enum { * bw index 7 (bw ext index 3): rssi_ext80_high20_chain0 */ #define HTT_RX_PEER_STATS_NUM_BW_EXT_COUNTERS 4 +#define HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS 4 #define HTT_TX_PEER_STATS_NUM_SPATIAL_STREAMS 8 #define HTT_TX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT @@ -1267,7 +1307,7 @@ typedef struct _htt_tx_peer_rate_stats_tlv { A_UINT32 tx_dcm[HTT_TX_PEER_STATS_NUM_DCM_COUNTERS]; } htt_tx_peer_rate_stats_tlv; -#define HTT_RX_PEER_STATS_NUM_MCS_COUNTERS 12 +#define HTT_RX_PEER_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_RX_PEER_STATS_NUM_GI_COUNTERS 4 #define HTT_RX_PEER_STATS_NUM_DCM_COUNTERS 5 #define HTT_RX_PEER_STATS_NUM_BW_COUNTERS 4 @@ -1353,9 +1393,24 @@ typedef struct { /* Peer RX time */ A_UINT32 peer_rx_active_dur_us_low; A_UINT32 peer_rx_active_dur_us_high; + A_UINT32 peer_curr_rate_kbps; } htt_peer_sched_stats_tlv; /* config_param0 */ + +#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_M 0x00000001 +#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_S 0 + +#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_GET(_var) \ + (((_var) & HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_M) >> \ + HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_S) + +#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_peer_MAC_ADDR_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR, _val); \ + ((_var) |= ((_val) << HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_S)); \ + } while (0) + #define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_M 0x00000001 #define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S 0 @@ -1692,6 +1747,11 @@ typedef struct _htt_tx_hwq_stats { ((_var) |= ((_val) << HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S)); \ } while (0) +#define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4 +#define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8 +#define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74 +#define HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS 8 + typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -1776,6 +1836,7 @@ typedef struct { A_UINT32 ax_mu_bar_trigger_err; A_UINT32 ax_mu_rts_trigger_err; A_UINT32 ax_ulmumimo_trigger_err; + A_UINT32 ax_mu_mimo_brp_err_num_cbf_received[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; } htt_tx_selfgen_ax_err_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SELFGEN_INFO @@ -1804,11 +1865,6 @@ typedef struct { /* == TX MU STATS == */ -#define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4 -#define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8 -#define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74 -#define HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS 8 - typedef struct { htt_tlv_hdr_t tlv_hdr; /* mu-mimo sw sched cmd stats */ @@ -1919,7 +1975,7 @@ typedef struct { typedef struct { htt_tlv_hdr_t tlv_hdr; /* Scheduler command posted per tx_mode */ - A_UINT32 sched_cmd_posted[1]; /* HTT_TX_PDEV_SCHED_TX_MODE_MAX */ + A_UINT32 sched_cmd_posted[1/* length = num tx modes */]; } htt_sched_txq_cmd_posted_tlv_v; #define HTT_SCHED_TXQ_CMD_REAPED_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) @@ -1928,7 +1984,7 @@ typedef struct { typedef struct { htt_tlv_hdr_t tlv_hdr; /* Scheduler command reaped per tx_mode */ - A_UINT32 sched_cmd_reaped[1]; /* HTT_TX_PDEV_SCHED_TX_MODE_MAX */ + A_UINT32 sched_cmd_reaped[1/* length = num tx modes */]; } htt_sched_txq_cmd_reaped_tlv_v; #define HTT_SCHED_TXQ_SCHED_ORDER_SU_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) @@ -1955,16 +2011,29 @@ typedef enum { HTT_SCHED_TID_SKIP_SECOND_SU_SCHEDULE, /* Skip tid from 2nd SU schedule when any of the following flag is set WAL_TX_TID(SEND_BAR | TQM_MPDU_STATE_VALID | SEND_QOS_NULL | TQM_NOTIFY_MPDU | SENDN_PENDING) */ HTT_SCHED_TID_SKIP_CMD_SLOT_NOT_AVAIL, /* Skip the tid when command slot is not available */ - HTT_SCHED_TID_SKIP_NO_ENQ, /* Skip the tid when num_frames is zero with g_disable_remove_tid as true */ + HTT_SCHED_TID_SKIP_NO_DATA, /* Skip tid without data */ + HTT_SCHED_TID_SKIP_NO_ENQ = HTT_SCHED_TID_SKIP_NO_DATA, /* deprecated old name */ HTT_SCHED_TID_SKIP_LOW_ENQ, /* Skip the tid when enqueue is low */ HTT_SCHED_TID_SKIP_PAUSED, /* Skipping the paused tid(sendn-frames) */ - HTT_SCHED_TID_SKIP_UL, /* UL tid skip */ + HTT_SCHED_TID_SKIP_UL_RESP, /* skip UL response tid */ + HTT_SCHED_TID_SKIP_UL = HTT_SCHED_TID_SKIP_UL_RESP, /* deprecated old name */ HTT_SCHED_TID_REMOVE_PAUSED, /* Removing the paused tid when number of sendn frames is zero */ HTT_SCHED_TID_REMOVE_NO_ENQ, /* Remove tid with zero queue depth */ - HTT_SCHED_TID_REMOVE_UL, /* UL tid remove */ + HTT_SCHED_TID_REMOVE_UL_RESP, /* Remove tid UL response */ + HTT_SCHED_TID_REMOVE_UL = HTT_SCHED_TID_REMOVE_UL_RESP, /* deprecated old name */ HTT_SCHED_TID_QUERY, /* Moving to next user and adding tid in prepend list when qstats update is pending */ HTT_SCHED_TID_SU_ONLY, /* Tid is eligible and TX_SCHED_SU_ONLY is true */ HTT_SCHED_TID_ELIGIBLE, /* Tid is eligible for scheduling */ + HTT_SCHED_TID_SKIP_EXCEPT_EAPOL, /* skip tid except eapol */ + HTT_SCHED_TID_SU_LOW_PRI_ONLY, /* su low priority tid only */ + HTT_SCHED_TID_SKIP_SOUND_IN_PROGRESS, /* skip tid sound in progress */ + HTT_SCHED_TID_SKIP_NO_UL_DATA, /* skip ul tid when no ul data */ + HTT_SCHED_TID_REMOVE_UL_NOT_CAPABLE, /* Remove tid that are not UL capable */ + HTT_SCHED_TID_UL_ELIGIBLE, /* Tid is eligible for UL scheduling */ + HTT_SCHED_TID_FALLBACK_TO_PREV_DECISION, /* Fall back to previous decision */ + HTT_SCHED_TID_SKIP_PEER_ALREADY_IN_TXQ, /* skip tid, peer is already available in the txq */ + HTT_SCHED_TID_SKIP_DELAY_UL_SCHED, /* skip tid delay UL schedule */ + HTT_SCHED_INELIGIBILITY_MAX, } htt_sched_txq_sched_ineligibility_tlv_enum; @@ -1977,6 +2046,35 @@ typedef struct { A_UINT32 sched_ineligibility[1]; /* indexed by htt_sched_txq_sched_ineligibility_tlv_enum */ } htt_sched_txq_sched_ineligibility_tlv_v; +typedef enum { + HTT_SCHED_SUPERCYCLE_TRIGGER_NONE = 0, /* Supercycle not triggerd */ + HTT_SCHED_SUPERCYCLE_TRIGGER_FORCED, /* forced supercycle trigger */ + HTT_SCHED_SUPERCYCLE_TRIGGER_LESS_NUM_TIDQ_ENTRIES, /* Num tidq entries is less than max_client threshold */ + HTT_SCHED_SUPERCYCLE_TRIGGER_LESS_NUM_ACTIVE_TIDS, /* Num active tids is less than max_client threshold */ + HTT_SCHED_SUPERCYCLE_TRIGGER_MAX_ITR_REACHED, /* max sched iteration reached */ + HTT_SCHED_SUPERCYCLE_TRIGGER_DUR_THRESHOLD_REACHED, /* duration threshold reached */ + HTT_SCHED_SUPERCYCLE_TRIGGER_TWT_TRIGGER, /* TWT supercycle trigger */ + HTT_SCHED_SUPERCYCLE_TRIGGER_MAX, +} htt_sched_txq_supercycle_triggers_tlv_enum; + +#define HTT_SCHED_TXQ_SUPERCYCLE_TRIGGERS_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) + +/* NOTE: Variable length TLV, use length spec to infer array size */ +typedef struct { + htt_tlv_hdr_t tlv_hdr; + /* + * supercycle_triggers[] is a histogram that counts the number of + * occurrences of each different reason for a transmit scheduler + * supercycle to be triggered. + * The htt_sched_txq_supercycle_triggers_tlv_enum is used to index + * supercycle_triggers[], e.g. supercycle_triggers[1] holds the number + * of times a supercycle has been forced. + * These supercycle trigger counts are not automatically reset, but + * are reset upon request. + */ + A_UINT32 supercycle_triggers[1/*HTT_SCHED_SUPERCYCLE_TRIGGER_MAX*/]; +} htt_sched_txq_supercycle_triggers_tlv_v; + #define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_M 0x000000ff #define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S 0 @@ -2101,6 +2199,7 @@ typedef struct { * - HTT_STATS_SCHED_TXQ_CMD_REAPED_TAG * - HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG * - HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG + * - HTT_STATS_SCHED_TXQ_SUPERCYCLE_TRIGGER_TAG */ /* NOTE: * This structure is for documentation, and cannot be safely used directly. @@ -2114,6 +2213,7 @@ typedef struct { htt_sched_txq_cmd_reaped_tlv_v cmd_reaped_tlv; htt_sched_txq_sched_order_su_tlv_v sched_order_su_tlv; htt_sched_txq_sched_ineligibility_tlv_v sched_ineligibility_tlv; + htt_sched_txq_supercycle_triggers_tlv_v sched_supercycle_trigger_tlv; } txq[1]; } htt_stats_tx_sched_t; @@ -3008,7 +3108,7 @@ typedef struct { /* == PDEV TX RATE CTRL STATS == */ -#define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12 +#define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4 #define HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5 #define HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4 @@ -3129,7 +3229,7 @@ typedef struct { #define HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4 #define HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8 -#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12 +#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4 #define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5 #define HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4 @@ -3260,6 +3360,14 @@ typedef struct { A_UINT32 rx_ulmumimo_mpdu_fail[HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER]; /* mpdu level */ A_UINT32 rx_ulofdma_non_data_nusers[HTT_RX_PDEV_MAX_OFDMA_NUM_USER]; A_UINT32 rx_ulofdma_data_nusers[HTT_RX_PDEV_MAX_OFDMA_NUM_USER]; + + /* + * NOTE - this TLV is already large enough that it causes the HTT message + * carrying it to be nearly at the message size limit that applies to + * many targets/hosts. + * No further fields should be added to this TLV without very careful + * review to ensure the size increase is acceptable. + */ } htt_rx_pdev_rate_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE @@ -3274,6 +3382,26 @@ typedef struct { htt_rx_pdev_rate_stats_tlv rate_tlv; } htt_rx_pdev_rate_stats_t; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT8 rssi_chain_ext[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS]; /* units = dB above noise floor */ + A_INT8 rx_per_chain_rssi_ext_in_dbm[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS]; + A_INT32 rssi_mcast_in_dbm; /* rx mcast signal strength value in dBm unit */ + A_INT32 rssi_mgmt_in_dbm; /* rx mgmt packet signal Strength value in dBm unit */ +} htt_rx_pdev_rate_ext_stats_tlv; + +/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT + * TLV_TAGS: + * - HTT_STATS_RX_PDEV_RATE_EXT_STATS_TAG + */ +/* NOTE: + * This structure is for documentation, and cannot be safely used directly. + * Instead, use the constituent TLV structures to fill/parse. + */ +typedef struct { + htt_rx_pdev_rate_ext_stats_tlv rate_tlv; +} htt_rx_pdev_rate_ext_stats_t; + #define HTT_STATS_CMN_MAC_ID_M 0x000000ff #define HTT_STATS_CMN_MAC_ID_S 0 @@ -3311,7 +3439,6 @@ typedef struct { */ A_UINT32 rx_ulofdma_data_ru_size_ppdu[HTT_RX_PDEV_STATS_NUM_RU_SIZE_160MHZ_CNTRS]; /* ppdu level */ A_UINT32 rx_ulofdma_non_data_ru_size_ppdu[HTT_RX_PDEV_STATS_NUM_RU_SIZE_160MHZ_CNTRS]; /* ppdu level */ - } htt_rx_pdev_ul_trigger_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_UL_TRIG_STATS @@ -3535,8 +3662,6 @@ typedef struct { ((_var) |= ((_val) << HTT_RX_PDEV_FW_STATS_MAC_ID_S)); \ } while (0) -#define HTT_STATS_SUBTYPE_MAX 16 - typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -3640,6 +3765,16 @@ typedef struct { A_UINT32 rx_recovery_reset_cnt; } htt_rx_pdev_fw_stats_tlv; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + /* peer mac address */ + htt_mac_addr peer_mac_addr; + /* Num of tx mgmt frames with subtype on peer level */ + A_UINT32 peer_tx_mgmt_subtype[HTT_STATS_SUBTYPE_MAX]; + /* Num of rx mgmt frames with subtype on peer level */ + A_UINT32 peer_rx_mgmt_subtype[HTT_STATS_SUBTYPE_MAX]; +} htt_peer_ctrl_path_txrx_stats_tlv; + #define HTT_STATS_PHY_ERR_MAX 43 typedef struct { @@ -3741,6 +3876,15 @@ typedef struct { htt_rx_pdev_fw_stats_phy_err_tlv fw_stats_phy_err_tlv; } htt_rx_pdev_stats_t; +/* STATS_TYPE : HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS + * TLV_TAGS: + * - HTT_STATS_PEER_CTRL_PATH_TXRX_STATS_TAG + * + */ +typedef struct { + htt_peer_ctrl_path_txrx_stats_tlv peer_ctrl_path_txrx_stats_tlv; +} htt_ctrl_path_txrx_stats_t; + #define HTT_PDEV_CCA_STATS_TX_FRAME_INFO_PRESENT (0x1) #define HTT_PDEV_CCA_STATS_RX_FRAME_INFO_PRESENT (0x2) #define HTT_PDEV_CCA_STATS_RX_CLEAR_INFO_PRESENT (0x4) @@ -4070,11 +4214,24 @@ typedef struct { A_UINT32 num_sr_tx_transmissions; /* CORRECTED - use this one */ A_UINT32 num_sr_tx_tranmissions; /* DEPRECATED - has typo in name */ }; - /* num_sr_rx_ge_pd_rssi_thr - * counter of rx from other BSS for which RSSI was above the - * packet-detection threshold specified for enabling spatial reuse - */ - A_UINT32 num_sr_rx_ge_pd_rssi_thr; + union { + /* + * Count the number of times the RSSI from an other-BSS signal + * is below the spatial reuse power threshold, thus providing an + * opportunity for spatial reuse since OBSS interference will be + * inconsequential. + */ + A_UINT32 num_spatial_reuse_opportunities; + + /* DEPRECATED: num_sr_rx_ge_pd_rssi_thr + * This old name has been deprecated because it does not + * clearly and accurately reflect the information stored within + * this field. + * Use the new name (num_spatial_reuse_opportunities) instead of + * the deprecated old name (num_sr_rx_ge_pd_rssi_thr). + */ + A_UINT32 num_sr_rx_ge_pd_rssi_thr; + }; } htt_pdev_obss_pd_stats_tlv; /* NOTE: diff --git a/drivers/staging/fw-api/fw/wlan_module_ids.h b/drivers/staging/fw-api/fw/wlan_module_ids.h index 1bb9d0196a69..9fbcb28b49aa 100755 --- a/drivers/staging/fw-api/fw/wlan_module_ids.h +++ b/drivers/staging/fw-api/fw/wlan_module_ids.h @@ -114,6 +114,7 @@ typedef enum { WLAN_MODULE_HPCS_PULSE, /* 0x50 */ WLAN_MODULE_DTF, /* 0x51 */ /* Deterministic Test Framework */ WLAN_MODULE_QUIET_IE, /* 0x52 */ + WLAN_MODULE_SHMEM_MGR, /* 0x53 */ WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, diff --git a/drivers/staging/fw-api/fw/wmi_services.h b/drivers/staging/fw-api/fw/wmi_services.h index e695fa87b44a..3effc68be2f2 100755 --- a/drivers/staging/fw-api/fw/wmi_services.h +++ b/drivers/staging/fw-api/fw/wmi_services.h @@ -415,6 +415,11 @@ typedef enum { WMI_SERVICE_QMI_STATS_SUPPORT = 225, WMI_SERVICE_CFR_CAPTURE_FILTER_SUPPORT = 226, /* Indicate FW Supports Channel Frequency Response (CFR) via WMI_CFR_CAPTURE_FILTER_CMDID */ WMI_SERVICE_STA_BSS_MAX_IDLE_TIME = 227, /* Indicate FW supports BSS Max Idle time feature via WMI_VDEV_BSS_MAX_IDLE_TIME_CMDID */ + WMI_SERVICE_BIP_CIPHER_SUPPORT = 228, /* FW supports new BIP_CIPHER suites (WMI_CIPHER_BIP_xxx) */ + WMI_SERVICE_BW_165MHZ_SUPPORT = 229, /* Indicate FW supports bandwidth 165MHz (i.e. 6 GHz in addition to 2.4 and 5) */ + WMI_SERVICE_BW_RESTRICTED_80P80_SUPPORT = WMI_SERVICE_BW_165MHZ_SUPPORT, + WMI_SERVICE_NAN_NDI_SAP_SAP_SCC_SUPPORT = 230, /* Support SAP + SAP + NAN discovery + NDI concurrency in SCC mode */ + WMI_SERVICE_NAN_VDEV_SUPPORT = 231, /* indicates firmware is dependent on host to create NAN vdev */ /******* ADD NEW SERVICES HERE *******/ diff --git a/drivers/staging/fw-api/fw/wmi_tlv_defs.h b/drivers/staging/fw-api/fw/wmi_tlv_defs.h index d5929cdc6dc6..2dafe02d9ade 100755 --- a/drivers/staging/fw-api/fw/wmi_tlv_defs.h +++ b/drivers/staging/fw-api/fw/wmi_tlv_defs.h @@ -1012,6 +1012,29 @@ typedef enum { WMITLV_TAG_STRUC_wmi_cfr_filter_group_config, WMITLV_TAG_STRUC_wmi_fd_tmpl_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_bss_max_idle_time_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param, + WMITLV_TAG_STRUC_wmi_atf_group_info, + WMITLV_TAG_STRUC_wmi_atf_grp_wmm_ac_cfg_request_fixed_param, + WMITLV_TAG_STRUC_wmi_atf_group_wmm_ac_info, + WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_atf_ext_info, + WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_channel_ani_info_tlv_param, + WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param, + WMITLV_TAG_STRUC_wmi_oem_data_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_config_vlan_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_stats_event_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_reason_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_scan_info_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_scan_channel_info_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_ap_info_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_result_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_neighbor_report_channel_info_tlv_param, + WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_auto_rate, + WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_probe, + WMITLV_TAG_STRUC_wmi_audio_aggr_update_sta_group_info, } WMITLV_TAG_ID; /* @@ -1424,9 +1447,18 @@ typedef enum { OP(WMI_AUDIO_AGGR_DEL_GROUP_CMDID) \ OP(WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID) \ OP(WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID) \ + OP(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID) \ OP(WMI_CFR_CAPTURE_FILTER_CMDID) \ OP(WMI_FD_TMPL_CMDID) \ OP(WMI_VDEV_BSS_MAX_IDLE_TIME_CMDID) \ + OP(WMI_ATF_SSID_GROUPING_REQUEST_CMDID) \ + OP(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID) \ + OP(WMI_PEER_ATF_EXT_REQUEST_CMDID) \ + OP(WMI_GET_CHANNEL_ANI_CMDID) \ + OP(WMI_PEER_CONFIG_VLAN_CMDID) \ + OP(WMI_SET_OCL_CMDID) \ + OP(WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID) \ + OP(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1615,6 +1647,7 @@ typedef enum { OP(WMI_PDEV_DIV_RSSI_ANTID_EVENTID) \ OP(WMI_OEM_DMA_RING_CFG_RSP_EVENTID) \ OP(WMI_OEM_DMA_BUF_RELEASE_EVENTID) \ + OP(WMI_OEM_DATA_EVENTID) \ OP(WMI_PDEV_BSS_CHAN_INFO_EVENTID) \ OP(WMI_UNIT_TEST_EVENTID) \ OP(WMI_PDEV_UPDATE_CTLTABLE_EVENTID) \ @@ -1663,6 +1696,8 @@ typedef enum { OP(WMI_ROAM_PREAUTH_START_EVENTID) \ OP(WMI_GET_ELNA_BYPASS_EVENTID) \ OP(WMI_ROAM_PMKID_REQUEST_EVENTID) \ + OP(WMI_GET_CHANNEL_ANI_EVENTID) \ + OP(WMI_ROAM_STATS_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3774,6 +3809,24 @@ WMITLV_CREATE_PARAM_STRUC(WMI_FWTEST_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_peer_info, peer_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_REQUEST_CMDID); +/* ATF Group Request commands */ +#define WMITLV_TABLE_WMI_ATF_SSID_GROUPING_REQUEST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param, wmi_atf_ssid_grp_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_group_info, group_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ATF_SSID_GROUPING_REQUEST_CMDID); + +/* ATF Group WMM Request commands */ +#define WMITLV_TABLE_WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_atf_grp_wmm_ac_cfg_request_fixed_param, wmi_atf_grp_wmm_ac_cfg_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_group_wmm_ac_info, group_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID); + +/* ATF EXTENDED PEER REQUEST commands */ +#define WMITLV_TABLE_WMI_PEER_ATF_EXT_REQUEST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param, wmi_peer_atf_ext_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_atf_ext_info, peer_ext_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_EXT_REQUEST_CMDID); + /* enable/disable and set the periodicity of periodic channel stats */ #define WMITLV_TABLE_WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_periodic_channel_stats_config_fixed_param, wmi_set_periodic_channel_stats_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3950,6 +4003,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BTM_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wlm_config_cmd_fixed_param, wmi_wlm_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID); +/* Event to send roam stats */ +#define WMITLV_TABLE_WMI_ROAM_STATS_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_stats_event_fixed_param, wmi_roam_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_reason, roam_trigger_reason, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_info, roam_scan_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_channel_info, roam_scan_chan_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_ap_info, roam_ap_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_result, roam_result, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_neighbor_report_info, roam_neighbor_report_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_neighbor_report_channel_info, roam_neighbor_report_chan_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_STATS_EVENTID); + /* Motion detection cmd */ #define WMITLV_TABLE_WMI_MOTION_DET_CONFIG_PARAM_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param, wmi_motion_det_config_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -4108,6 +4173,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_RAP_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, oem_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DATA_CMDID); +/* Set OCL cmd */ +#define WMITLV_TABLE_WMI_SET_OCL_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param, wmi_set_ocl_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SET_OCL_CMDID); + /* Set ELNA BYPASS cmd */ #define WMITLV_TABLE_WMI_SET_ELNA_BYPASS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_set_elna_bypass_cmd_fixed_param, wmi_set_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -4118,6 +4188,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SET_ELNA_BYPASS_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_cmd_fixed_param, wmi_get_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_CMDID); +/* Get channel ANI level cmd */ +#define WMITLV_TABLE_WMI_GET_CHANNEL_ANI_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param, wmi_get_channel_ani_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_CMDID); + /* Audio aggr config cmd */ #define WMITLV_TABLE_WMI_AUDIO_AGGR_ENABLE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_enable_cmd_fixed_param, wmi_audio_aggr_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -4141,12 +4217,30 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_retry, wmi_audio_aggr_set_group_retry_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID); +#define WMITLV_TABLE_WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_auto_rate, wmi_audio_aggr_set_group_auto_rate_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID); + +#define WMITLV_TABLE_WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_probe, wmi_audio_aggr_set_group_probe_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID); + +#define WMITLV_TABLE_WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_update_sta_group_info, wmi_audio_aggr_update_sta_group_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, au_groups, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID); + /* CFR Capture Filter cmd */ #define WMITLV_TABLE_WMI_CFR_CAPTURE_FILTER_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_cfr_capture_filter_cmd_fixed_param, wmi_cfr_capture_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_cfr_filter_group_config, filter_group_config, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CFR_CAPTURE_FILTER_CMDID); +/* VLAN config */ +#define WMITLV_TABLE_WMI_PEER_CONFIG_VLAN_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_config_vlan_cmd_fixed_param, wmi_peer_config_vlan_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CONFIG_VLAN_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -4376,7 +4470,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); /* TBTT offset Event */ #define WMITLV_TABLE_WMI_TBTTOFFSET_UPDATE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param, wmi_tbtt_offset_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbttoffset_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) + WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbttoffset_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) \ + WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbtt_qtime_low_us_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) \ + WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbtt_qtime_high_us_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) WMITLV_CREATE_PARAM_STRUC(WMI_TBTTOFFSET_UPDATE_EVENTID); /* TBTT EXT offset Event */ @@ -4598,6 +4694,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OEM_RESPONSE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_oem_dma_buf_release_entry, entries, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DMA_BUF_RELEASE_EVENTID); +/* oem data event */ +#define WMITLV_TABLE_WMI_OEM_DATA_EVENTID(id,op, buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_oem_data_event_fixed_param, wmi_oem_data_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DATA_EVENTID); + /* HOST SWBA Event */ #define WMITLV_TABLE_WMI_HOST_SWBA_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_host_swba_event_fixed_param, wmi_host_swba_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -5588,6 +5690,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_MGMT_OFFLOAD_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_event_fixed_param, wmi_get_elna_bypass_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_EVENTID); +/* channel ANI event */ +#define WMITLV_TABLE_WMI_GET_CHANNEL_ANI_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param, wmi_get_channel_ani_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel_ani_info_tlv_param, ani_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_EVENTID); #ifdef __cplusplus } diff --git a/drivers/staging/fw-api/fw/wmi_unified.h b/drivers/staging/fw-api/fw/wmi_unified.h index 58624016b3b2..acbda0108dd2 100755 --- a/drivers/staging/fw-api/fw/wmi_unified.h +++ b/drivers/staging/fw-api/fw/wmi_unified.h @@ -259,6 +259,7 @@ typedef enum { WMI_GRP_HPCS_PULSE, /* 0x42 */ WMI_GRP_AUDIO, /* 0x43 */ WMI_GRP_CFR_CAPTURE, /* 0x44 */ + WMI_GRP_ATM, /* 0x45 ATM (Air Time Management group) */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) @@ -586,6 +587,11 @@ typedef enum { /** unmap response with peer ids */ WMI_PEER_UNMAP_RESPONSE_CMDID, + /** WMI command for per-peer configuration of VLAN header operations + * during TX and RX + */ + WMI_PEER_CONFIG_VLAN_CMDID, + /* beacon/management specific commands */ @@ -997,6 +1003,10 @@ typedef enum { WMI_SET_ELNA_BYPASS_CMDID, /** get ELNA BYPASS status */ WMI_GET_ELNA_BYPASS_CMDID, + /** get ANI level of the channels */ + WMI_GET_CHANNEL_ANI_CMDID, + /** set OCL (One Chain Listen) mode */ + WMI_SET_OCL_CMDID, /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -1254,9 +1264,20 @@ typedef enum { WMI_AUDIO_AGGR_DEL_GROUP_CMDID, WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID, WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID, + WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID, + WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID, + WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID, /** WMI commands related to Channel Frequency Response Capture **/ WMI_CFR_CAPTURE_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_CFR_CAPTURE), + + /** WMI commands related to Air Time Management feature **/ + /** ATF SSID GROUPING REQUEST command */ + WMI_ATF_SSID_GROUPING_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ATM), + /** WMM ATF Configuration for groups */ + WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID, + /** ATF Peer Extended Request command */ + WMI_PEER_ATF_EXT_REQUEST_CMDID, } WMI_CMD_ID; typedef enum { @@ -1558,6 +1579,8 @@ typedef enum { WMI_ROAM_PREAUTH_START_EVENTID, /** Roaming PMKID request event */ WMI_ROAM_PMKID_REQUEST_EVENTID, + /** roam stats */ + WMI_ROAM_STATS_EVENTID, /** P2P disc found */ WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P), @@ -1763,6 +1786,9 @@ typedef enum { /** event to get ELNA BYPASS status */ WMI_GET_ELNA_BYPASS_EVENTID, + /** event to report ANI level of the channels */ + WMI_GET_CHANNEL_ANI_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), /** upload H_CV info WMI event @@ -1796,6 +1822,7 @@ typedef enum { WMI_OEM_RESPONSE_EVENTID, WMI_OEM_DMA_RING_CFG_RSP_EVENTID, WMI_OEM_DMA_BUF_RELEASE_EVENTID, + WMI_OEM_DATA_EVENTID, /* NAN Event */ WMI_NAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NAN), @@ -2159,6 +2186,20 @@ typedef enum { */ #define WMI_HE_MAX_MCS_4_SS_MASK(r,ss) ((3 & (r)) << (((ss) - 1) << 1)) +/* + * index ranges from 0 to 15, and is used for checking if MCS 12/13 is enabled + * for a particular NSS. + * The lower 8 bits (indices 0-7) within the 16 bits indicate MCS 12/13 + * enablement for BW <= 80MHz; the upper 8 bits (indices 8-15) within + * the 16 bits indicate MCS 12/13 enablement for BW > 80MHz. + * The 16 bits for the index values are within the upper bits (bits 31:16) + * of a 32-bit word. + */ +#define WMI_HE_EXTRA_MCS_SS_GET(he_mcs_map_ext, index) \ + WMI_GET_BITS(he_mcs_map_ext, 16 + index, 1) +#define WMI_HE_EXTRA_MCS_SS_SET(he_mcs_map_ext, index, value) \ + WMI_SET_BITS(he_mcs_map_ext, 16 + index, 1, value) + /* fragmentation support field value */ enum { WMI_HE_FRAG_SUPPORT_LEVEL0, /* No Fragmentation support */ @@ -3392,6 +3433,27 @@ typedef struct { * are used to read and write these bitfields. */ A_UINT32 msdu_flow_override_config1; + + /** @brief flags2 - contains flags used for the following purposes: + * Configure 11ax uplink ofdma/MU-MIMO feature in FW, when chipsets + * are brought up in Repeater/STA mode. + * + * @details + * Bits 3:0 + * Enable UL MU-OFDMA/MIMO for PDEVs WIFI0, WIFI1, WIFI2 + * This flags should only be set when a pdev has STA VAP + * in repeater/self-organizing-network modes. + * E.g. to enable UL RESP for 5G and 2G radios, value shall be + * 0b00000000000000000000000000000011 = 0x3. + * Host shall use UCI config for a radio to populate this value, + * each radio entry shall have "config re_ul_resp 1" value set. + * Hence this can be configured dynamically. + * + * Refer to the below WMI_RSRC_CFG_FLAGS2_RE_ULRESP_PDEV_CFG_GET/SET + * macros. + * Bits 31:4 - Reserved + */ + A_UINT32 flags2; } wmi_resource_config; #define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \ @@ -3576,6 +3638,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAG_BSS_MAX_IDLE_TIME_SUPPORT_GET(word32) \ WMI_RSRC_CFG_FLAG_GET((word32), BSS_MAX_IDLE_TIME_SUPPORT) +#define WMI_RSRC_CFG_FLAGS2_RE_ULRESP_PDEV_CFG_GET(flags2, pdev_id) \ + WMI_GET_BITS(flags2, pdev_id, 1) +#define WMI_RSRC_CFG_FLAGS2_RE_ULRESP_PDEV_CFG_SET(flags2, pdev_id, value) \ + WMI_SET_BITS(flags2, pdev_id, 1, value) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */ @@ -3866,6 +3933,10 @@ typedef struct { * as a passive channel */ A_UINT32 dwell_time_passive_6ghz; + /** + * Offset time is in milliseconds per channel. + */ + A_UINT32 scan_start_offset; /** * TLV (tag length value) parameters follow the scan_cmd @@ -5356,6 +5427,12 @@ typedef struct { wmi_mac_addr base_macaddr; } wmi_pdev_set_base_macaddr_cmd_fixed_param; + +enum wmi_spectral_scan_mode { + WMI_SPECTRAL_SCAN_NORMAL_MODE, + WMI_SPECTRAL_SCAN_AGILE_MODE, +}; + /* * For now, the spectral configuration is global rather than * per-vdev. The vdev is a placeholder and will be ignored @@ -5382,6 +5459,14 @@ typedef struct { A_UINT32 spectral_scan_bin_scale; A_UINT32 spectral_scan_dBm_adj; A_UINT32 spectral_scan_chn_mask; + /* See enum wmi_spectral_scan_mode */ + A_UINT32 spectral_scan_mode; + /* agile span center frequency (MHz), 0 for normal scan*/ + A_UINT32 spectral_scan_center_freq; + /* agile span primary channel frequency (MHz), 0 for normal scan*/ + A_UINT32 spectral_scan_chan_freq; + /* agile scan bandwidth (20, 40, 80, 80+80, 160), enum wmi_channel_width */ + A_UINT32 spectral_scan_chan_width; } wmi_vdev_spectral_configure_cmd_fixed_param; /* @@ -5397,6 +5482,8 @@ typedef struct { A_UINT32 trigger_cmd; /* 0 - ignore; 1 - enable, 2 - disable */ A_UINT32 enable_cmd; + /* See enum wmi_spectral_scan_mode */ + A_UINT32 spectral_scan_mode; } wmi_vdev_spectral_enable_cmd_fixed_param; typedef struct { @@ -5467,8 +5554,10 @@ typedef enum { WMI_CSA_IE_PRESENT = 0x00000001, WMI_XCSA_IE_PRESENT = 0x00000002, WMI_WBW_IE_PRESENT = 0x00000004, - WMI_CSWARP_IE_PRESENT = 0x00000008, + WMI_CSWRAP_IE_PRESENT = 0x00000008, + WMI_CSWARP_IE_PRESENT = WMI_CSWRAP_IE_PRESENT, /* deprecated: typo */ WMI_QSBW_ISE_PRESENT = 0x00000010, + WMI_CSWRAP_IE_EXTENDED_PRESENT = 0x00000020, /* Added bitmask to verify if the additional information is filled in */ } WMI_CSA_EVENT_IES_PRESENT_FLAG; /* wmi CSA receive event from beacon frame */ @@ -5482,9 +5571,23 @@ typedef struct { A_UINT32 csa_ie[2]; A_UINT32 xcsa_ie[2]; A_UINT32 wb_ie[2]; - A_UINT32 cswarp_ie; + union { + A_UINT32 cswrap_ie; /* use this */ + A_UINT32 cswarp_ie; /* deprecated (typo) */ + }; A_UINT32 ies_present_flag; /* WMI_CSA_EVENT_IES_PRESENT_FLAG */ A_UINT32 qsbw_ise; + /* cswrap_ie_extended: + * Stores full IEEE80211_ELEMID_CHAN_SWITCH_WRAP information element. + * The first two octets host the Element ID and Length fields. + * The IE comprises New Country Subelement (optional and max length 6), + * Wide Bandwidth Channel Subelement (optional and max length 5) and + * New Transmit Power Envelope subelement (optional and max length 7) + * The 4-byte words within cswrap_ie_extended[] use little endian ordering; + * the first octect of the IE resides in bits 7:0 of cswrap_ie_extended[0], + * the second octet resides in bits 15:8 of cswrap_ie_extended[0] and so on. + */ + A_UINT32 cswrap_ie_extended[5]; } wmi_csa_event_fixed_param; typedef enum { @@ -6378,6 +6481,7 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_pdev_bss_chan_info_request_fixed_param */ A_UINT32 param; /* 1 = read only, 2= read and clear */ + A_UINT32 pdev_id; /* pdev_id for identifying mac */ } wmi_pdev_bss_chan_info_request_fixed_param; typedef struct { @@ -6544,6 +6648,14 @@ typedef struct { * the noise floor. */ A_UINT32 ack_rssi; + /* xmit rate in kbps */ + A_UINT32 tx_rate; + /* phy mode WLAN_PHY_MODE of the channel defined in wlan_defs.h */ + A_UINT32 peer_phymode; + A_UINT32 retries_count; + /* current 64 bit TSF timestamp */ + A_UINT32 tx_tsf_l32; + A_UINT32 tx_tsf_u32; } wmi_mgmt_tx_compl_event_fixed_param; typedef struct { @@ -6666,6 +6778,7 @@ typedef struct { A_UINT32 rx_bss_cycle_count_low; /* low 31 bits of rx cycle cnt for my bss in 64bits format */ A_UINT32 rx_bss_cycle_count_high; /* high 31 bits of rx_cycle cnt for my bss in 64bits format */ + A_UINT32 pdev_id; /* pdev_id for identifying the MAC */ } wmi_pdev_bss_chan_info_event_fixed_param; typedef struct { @@ -9472,6 +9585,10 @@ typedef struct { #define WMI_CIPHER_AES_GCM 0x9 #define WMI_CIPHER_AES_GMAC 0xa #define WMI_CIPHER_WAPI_GCM_SM4 0xb +#define WMI_CIPHER_BIP_CMAC_128 0xc +#define WMI_CIPHER_BIP_CMAC_256 0xd +#define WMI_CIPHER_BIP_GMAC_128 0xe +#define WMI_CIPHER_BIP_GMAC_256 0xf typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_install_key_cmd_fixed_param */ @@ -9545,9 +9662,9 @@ typedef enum { /* Control to enable/disable FILS discovery frame tx in non-HT duplicate */ #define WMI_VDEV_6GHZ_BITMAP_NON_HT_DUPLICATE_FD_FRAME 0x4 /* Control to enable/disable periodic FILS discovery frame transmission */ -#define WMI_VDEV_6GHZ_BITMAP_FD_FRAME 0x8 +#define WMI_VDEV_6GHZ_BITMAP_FD_FRAME 0x8 /* deprecated */ /* Control to enable/disable periodic broadcast probe response transmission */ -#define WMI_VDEV_6GHZ_BITMAP_BCAST_PROBE_RSP 0x10 +#define WMI_VDEV_6GHZ_BITMAP_BCAST_PROBE_RSP 0x10 /* deprecated */ /** the definition of different VDEV parameters */ typedef enum { @@ -9929,7 +10046,8 @@ typedef enum { WMI_VDEV_PARAM_DISABLE_DYN_BW_RTS, /* 0x68 */ /** per ssid (vdev) based ATF strict/fair scheduling policy - * param values are WMI_ATF_SSID_FAIR_SCHED or WMI_ATF_SSID_STRICT_SCHED + * param values are WMI_ATF_SSID_FAIR_SCHED, WMI_ATF_SSID_STRICT_SCHED, + * or WMI_ATF_SSID_FAIR_SCHED_WITH_UB */ WMI_VDEV_PARAM_ATF_SSID_SCHED_POLICY, /* 0x69 */ @@ -10287,6 +10405,13 @@ typedef enum { */ WMI_VDEV_PARAM_6GHZ_PARAMS, /* 0x99 */ + /** + * VDEV parameter to enable or disable RTT initiator role + * Default : Enabled + * valid values: 0-Disable initiator role, 1-Enable initiator role. + */ + WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_ROLE, /* 0x9A */ + /*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are * prone to change. @@ -10505,16 +10630,22 @@ typedef struct { /** Upto 8 bits are available for Roaming module to be sent along with WMI_VDEV_PARAM_ROAM_FW_OFFLOAD WMI_VDEV_PARAM **/ -/* Enable Roaming FW offload LFR1.5/LFR2.0 implementation */ +/* Bit 0: Enable Roaming FW offload LFR1.5/LFR2.0 implementation */ #define WMI_ROAM_FW_OFFLOAD_ENABLE_FLAG 0x1 -/* Enable Roaming module in FW to do scan based on Final BMISS */ +/* Bit 1: Enable Roaming module in FW to do scan based on Final BMISS */ #define WMI_ROAM_BMISS_FINAL_SCAN_ENABLE_FLAG 0x2 -/** +/* Bit 2: * To enable/disable EAPOL_4WAY_HANDSHAKE process while roaming. * param value = 0 --> Enable EAPOL 4way handshake * param value = 1 --> Skip EAPOL 4way handshake */ #define WMI_VDEV_PARAM_SKIP_ROAM_EAPOL_4WAY_HANDSHAKE 0x4 +/* Bit 3: + * Scan type when WMI_ROAM_BMISS_FINAL_SCAN_ENABLE_FLAG is set: + * value = 0 --> Chanmap scan followed by one full scan if no candidate found. + * value = 1 --> Chanmap scan only + */ +#define WMI_ROAM_BMISS_FINAL_SCAN_TYPE_FLAG 0x8 /** slot time long */ #define WMI_VDEV_SLOT_TIME_LONG 0x1 @@ -11365,9 +11496,16 @@ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param */ /** bimtap of VDEVs that has tbtt offset updated */ A_UINT32 vdev_map; -/* The TLVs for tbttoffset_list will follow this TLV. - * tbtt offset list in the order of the LSB to MSB in the vdev_map bitmap +/* The TLVs for tbttoffset_list, tbtt_qtime_low_us_list, and + * tbtt_qtime_high_us_list will follow this TLV. + * - tbtt offset list in the order of the LSb to MSb in the vdev_map bitmap * A_UINT32 tbttoffset_list[WMI_MAX_AP_VDEV]; + * - tbtt qtime_low_us list(Lower 32 bit of qtime us) in the order of the + * LSb to MSb in the vdev_map bitmap + * A_UINT32 tbtt_qtime_low_us_list[WMI_MAX_AP_VDEV]; + * - tbtt qtime_high_us list(Higher 32 bit of qtime us) in the order of the + * LSb to MSb in the vdev_map bitmap + * A_UINT32 tbtt_qtime_high_us_list[WMI_MAX_AP_VDEV]; */ } wmi_tbtt_offset_event_fixed_param; @@ -11377,6 +11515,9 @@ typedef struct { A_UINT32 vdev_id; /** tbttoffset in TUs */ A_UINT32 tbttoffset; + /** absolute tbtt time in qtime us */ + A_UINT32 tbtt_qtime_low_us; /* bits 31:0 of qtime */ + A_UINT32 tbtt_qtime_high_us; /* bits 63:32 of qtime */ } wmi_tbtt_offset_info; /** Use this event if number of vdevs > 32 */ @@ -11809,6 +11950,12 @@ typedef struct { /* Per peer MISC stats enable or disable */ #define WMI_PEER_PARAM_MISC_STATS_ENABLE 0x22 +/* Per peer FW congestion enable or disable: + * A parameter value of 1 will disable FW tx congestion control for the peer, + * a parameter value 0f 0 will enable FW tx congestion control for the peer. + */ +#define WMI_PEER_PARAM_FW_CONGESTION_DISABLE 0x23 + /** mimo ps values for the parameter WMI_PEER_MIMO_PS_STATE */ #define WMI_PEER_MIMO_PS_NONE 0x0 #define WMI_PEER_MIMO_PS_STATIC 0x1 @@ -11954,7 +12101,16 @@ typedef struct { * value 1 - MCS 0-9 enabled for this NSS * value 2 - MCS 0-11 enabled for this NSS * value 3 - NSS disabled - * - WMI_HE_MAX_MCS_4_SS_MASK macro can be used for encoding this info + * WMI_HE_MAX_MCS_4_SS_MASK macro can be used for encoding this info + * + * - 8 bits x 2 are used for each Nss value for 2 categories of bandwidths, + * to indicate whether MCS 12 and 13 are enabled. + * Bits [16:23] used for checking if MCS 12/13 is enabled for a + * particular NSS (BW <= 80MHz) + * Bits [24:31] used for checking if MCS 12/13 is enabled for a + * particular NSS (BW > 80MHz) + * The WMI_HE_EXTRA_MCS_SS_[GET,SET] macros can be used for accessing + * these bit-fields. */ A_UINT32 tx_mcs_set; /* Negotiated TX HE rates(i.e. rate this node can TX to peer) */ } wmi_he_rate_set; @@ -11971,6 +12127,7 @@ typedef struct { #define WMI_PEER_APSD 0x00000800 /* U-APSD power save enabled */ #define WMI_PEER_HT 0x00001000 /* HT enabled */ #define WMI_PEER_40MHZ 0x00002000 /* 40MHz enabld */ +#define WMI_PEER_INTER_BSS_PEER 0x00004000 /* Inter BSS peer */ #define WMI_PEER_STBC 0x00008000 /* STBC Enabled */ #define WMI_PEER_LDPC 0x00010000 /* LDPC ENabled */ #define WMI_PEER_DYN_MIMOPS 0x00020000 /* Dynamic MIMO PS Enabled */ @@ -12095,6 +12252,12 @@ typedef struct { /* min data rate to be used in Mbps */ A_UINT32 min_data_rate; + /** HE 6 GHz Band Capabilities of the peer. + * (Defined in 9.4.2.261 HE 6GHz Band Capabilities element in 802.11ax_D5.0) + * valid when WMI_PEER_HE is set and WMI_PEER_VHT/HT are not set. + */ + A_UINT32 peer_he_caps_6ghz; + /* Following this struct are the TLV's: * A_UINT8 peer_legacy_rates[]; * A_UINT8 peer_ht_rates[]; @@ -12189,6 +12352,11 @@ typedef struct { A_UINT32 mac_clk_mhz; /** unique id identifying the VDEV */ A_UINT32 vdev_id; + /** + * Noise Floor value for all chain in dBm. + * If per_chain_noise_floor value is 0 then it should be ignored. + */ + A_UINT32 per_chain_noise_floor[WMI_MAX_CHAINS]; } wmi_chan_info_event_fixed_param; /** @@ -13073,13 +13241,22 @@ typedef struct wmi_fd_send_from_host { } wmi_fd_send_from_host_cmd_fixed_param; /* + * Control to send broadcast probe response instead of FD frames. + * When this flag is not set then FD frame will be transmitted when + * fd_period is non-zero + */ +#define WMI_FILS_FLAGS_BITMAP_BCAST_PROBE_RSP 0x1 + +/* * WMI command structure for FILS feature enable/disable */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_enable_fils_cmd_fixed_param */ /* VDEV identifier */ A_UINT32 vdev_id; - A_UINT32 fd_period; /* non-zero - enable Fils Discovery frames with this period (in TU), 0 - disable FD frames */ + A_UINT32 fd_period; /* non-zero - enable Fils Discovery frames or broadcast probe response with this period (in TU), + * 0 - disable FD and broadcast probe response frames */ + A_UINT32 flags; /* WMI_FILS_FLAGS_BITMAP flags */ } wmi_enable_fils_cmd_fixed_param; /* @@ -14058,6 +14235,7 @@ typedef enum wake_reason_e { WOW_REASON_PAGE_FAULT, /* Host wake up due to page fault */ WOW_REASON_ROAM_PREAUTH_START, WOW_REASON_ROAM_PMKID_REQUEST, + WOW_REASON_RFKILL, /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -17958,11 +18136,22 @@ typedef struct { */ } wmi_nan_cmd_param; +#define WMI_NAN_GET_RANGING_INITIATOR_ROLE(flag) WMI_GET_BITS(flag, 0, 1) +#define WMI_NAN_SET_RANGING_INITIATOR_ROLE(flag, val) WMI_SET_BITS(flag, 0, 1, val) +#define WMI_NAN_GET_RANGING_RESPONDER_ROLE(flag) WMI_GET_BITS(flag, 1, 1) +#define WMI_NAN_SET_RANGING_RESPONDER_ROLE(flag, val) WMI_SET_BITS(flag, 1, 1, val) + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_nan_host_config_param */ A_UINT32 nan_2g_disc_disable:1; /** This bit when set to 1 indicate NAN 2G discovery should be disabled */ A_UINT32 nan_5g_disc_disable:1; /** This bit when set to 1 indicate NAN 5G discovery should be disabled */ A_UINT32 reserved:30; + /** Flags: refer to WMI_NAN_GET/SET macros + * Bit 0 -> Nan ranging initiator role (0 - Disable, 1 - Enable) + * Bit 1 -> Nan ranging responder role (0 - Disable, 1 - Enable) + * Bits 2-31 -> Reserved + */ + A_UINT32 flags; } wmi_nan_host_config_param_PROTOTYPE; #define wmi_nan_host_config_param wmi_nan_host_config_param_PROTOTYPE @@ -17981,6 +18170,7 @@ typedef struct { A_UINT32 mac_id; /* MAC ID associated with NAN primary discovery channel; Valid only for NAN enable resp message identified by NAN_MSG_ID_ENABLE_RSP */ A_UINT32 status:1; /** This bit when set to 0 indicates status is successful; Valid only for NAN enable resp message identified by NAN_MSG_ID_ENABLE_RSP */ A_UINT32 reserved:31; + A_UINT32 vdev_id; /** Unique id identifying the vdev with type OPMODE_NAN; Valid only for NAN enable resp message identified by NAN_MSG_ID_ENABLE_RSP */ } wmi_nan_event_info_PROTOTYPE; #define wmi_nan_event_info wmi_nan_event_info_PROTOTYPE @@ -22480,8 +22670,9 @@ typedef struct { #define WMI_ATF_DENOMINATION 1000 /* Expressed in 1 part in 1000 (permille) */ -#define WMI_ATF_SSID_FAIR_SCHED 0 /** fair ATF scheduling for vdev */ -#define WMI_ATF_SSID_STRICT_SCHED 1 /** strict ATF scheduling for vdev */ +#define WMI_ATF_SSID_FAIR_SCHED 0 /** fair ATF scheduling for vdev */ +#define WMI_ATF_SSID_STRICT_SCHED 1 /** strict ATF scheduling for vdev */ +#define WMI_ATF_SSID_FAIR_SCHED_WITH_UB 2 /** fair ATF scheduling with upper bound for VDEV */ typedef struct { /** TLV tag and len; tag equals @@ -22504,6 +22695,104 @@ typedef struct { */ } wmi_peer_atf_request_fixed_param; +#define WMI_ATF_GROUP_SCHED_POLICY_BIT_POS 0 +#define WMI_ATF_GROUP_SCHED_POLICY_NUM_BITS 4 + +#define WMI_ATF_GROUP_GET_GROUP_SCHED_POLICY(atf_group_flags) \ + WMI_GET_BITS(atf_group_flags,WMI_ATF_GROUP_SCHED_POLICY_BIT_POS,WMI_ATF_GROUP_SCHED_POLICY_NUM_BITS) + +#define WMI_ATF_GROUP_SET_GROUP_SCHED_POLICY(atf_group_flags,val) \ + WMI_SET_BITS(atf_group_flags,WMI_ATF_GROUP_SCHED_POLICY_BIT_POS,WMI_ATF_GROUP_SCHED_POLICY_NUM_BITS,val) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_atf_group_info */ + A_UINT32 tlv_header; + A_UINT32 atf_group_id; /* ID of the Air Time Management group */ + /* atf_group_units + * Fraction of air time allowed for the group, in per mille units + * (from 0-1000). + * For example, to indicate that the group can use 12.3% of the air time, + * the atf_group_units setting would be 123. + */ + A_UINT32 atf_group_units; + /* atf_group_flags + * Bits 4-31 - Reserved (Shall be zero) + * Bits 0-3 - Group Schedule Policy (Fair/Strict/Fair with upper bound) + * Refer to WMI_ATF_SSID_ definitions + */ + A_UINT32 atf_group_flags; +} wmi_atf_group_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param */ + A_UINT32 pdev_id; + /* + * Following this structure is the TLV: + * struct wmi_atf_group_info group_info[]; + */ +} wmi_atf_ssid_grp_request_fixed_param; + +/* ATF Configurations for WMM ACs of a group, value for each AC shall be in + * percentage (0-100). + * This perecentage is relative to the residual airtime (derived by FW) + * configured for the group. + * When WMM ATF is not configured for a peer all values shall be 0. + */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_atf_group_wmm_ac_info + */ + A_UINT32 tlv_header; + A_UINT32 atf_group_id; /* ID of the Air Time Management group */ + A_UINT32 atf_units_be; + A_UINT32 atf_units_bk; + A_UINT32 atf_units_vi; + A_UINT32 atf_units_vo; +} wmi_atf_group_wmm_ac_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_atf_grp_wmm_ac_cfg_request_fixed_param */ + A_UINT32 pdev_id; + /* + * Following this structure is the TLV: + * struct wmi_atf_group_wmm_ac_info group_info[]; + */ +} wmi_atf_grp_wmm_ac_cfg_request_fixed_param; + +#define WMI_ATF_GROUP_CFG_PEER_BIT_POS 0 +#define WMI_ATF_GROUP_CFG_PEER_NUM_BITS 1 + +#define WMI_ATF_GROUP_GET_CFG_PEER_BIT(atf_peer_flags) \ + WMI_GET_BITS(atf_peer_flags,WMI_ATF_GROUP_CFG_PEER_BIT_POS,WMI_ATF_GROUP_CFG_PEER_NUM_BITS) + +#define WMI_ATF_GROUP_SET_CFG_PEER_BIT(atf_peer_flags,val) \ + WMI_SET_BITS(atf_peer_flags,WMI_ATF_GROUP_CFG_PEER_BIT_POS,WMI_ATF_GROUP_CFG_PEER_NUM_BITS,val) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_atf_ext_info */ + A_UINT32 tlv_header; + wmi_mac_addr peer_macaddr; + A_UINT32 atf_group_id; /* Group Id of the peers for ATF SSID grouping */ + /* atf_peer_flags + * Bits 1-31 - Reserved (Shall be zero) + * Bit 0 - Configured Peer Indication (0/1), this bit would be set by + * host to indicate that the peer has airtime % configured + * explicitly by user. + */ + A_UINT32 atf_peer_flags; +} wmi_peer_atf_ext_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param */ + A_UINT32 pdev_id; + /* + * Following this structure is the TLV: + * struct wmi_peer_atf_ext_info peer_ext_info[]; + */ +} wmi_peer_atf_ext_request_fixed_param; + /* Structure for Bandwidth Fairness peer information */ typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bwf_peer_info */ @@ -23340,6 +23629,10 @@ typedef enum wmi_coex_config_type { * config BTC separate chain mode or shared mode */ WMI_COEX_CONFIG_BTCOEX_SEPARATE_CHAIN_MODE = 44, + /* WMI_COEX_CONFIG_ENABLE_TPUT_SHAPING + * enable WLAN throughput shaping while BT scanning + */ + WMI_COEX_CONFIG_ENABLE_TPUT_SHAPING = 45, } WMI_COEX_CONFIG_TYPE; typedef struct { @@ -23790,6 +24083,15 @@ typedef struct { #define WMI_SUPPORT_CHAN_WIDTH_80P80_GET(flags) WMI_GET_BITS(flags, 4, 1) #define WMI_SUPPORT_CHAN_WIDTH_80P80_SET(flags, value) WMI_SET_BITS(flags, 4, 1, value) +#define WMI_SUPPORT_AGILE_SPECTRAL_GET(flags) WMI_GET_BITS(flags, 5, 1) +#define WMI_SUPPORT_AGILE_SPECTRAL_SET(flags, value) WMI_SET_BITS(flags, 5, 1, value) + +#define WMI_SUPPORT_AGILE_SPECTRAL_160_GET(flags) WMI_GET_BITS(flags, 6, 1) +#define WMI_SUPPORT_AGILE_SPECTRAL_160_SET(flags, value) WMI_SET_BITS(flags, 6, 1, value) + +#define WMI_SUPPORT_ADFS_160_GET(flags) WMI_GET_BITS(flags, 7, 1) +#define WMI_SUPPORT_ADFS_160_SET(flags, value) WMI_SET_BITS(flags, 7, 1, value) + #define WMI_SUPPORT_CHAIN_MASK_2G_GET(flags) WMI_GET_BITS(flags, 27, 1) #define WMI_SUPPORT_CHAIN_MASK_2G_SET(flags, value) WMI_SET_BITS(flags, 27, 1, value) @@ -23816,7 +24118,10 @@ typedef struct { supports_chan_width_80:1, supports_chan_width_160:1, supports_chan_width_80P80:1, - reserved:22, /* bits 26:5 */ + supports_agile_spectral:1, + supports_agile_spectral_160:1, + supports_aDFS_160:1, + reserved:19, /* bits 26:8 */ chain_mask_2G:1, chain_mask_5G:1, chain_mask_tx:1, @@ -24716,7 +25021,15 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_AUDIO_AGGR_DEL_GROUP_CMDID); WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID); WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID); + WMI_RETURN_STRING(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID); WMI_RETURN_STRING(WMI_CFR_CAPTURE_FILTER_CMDID); + WMI_RETURN_STRING(WMI_ATF_SSID_GROUPING_REQUEST_CMDID); + WMI_RETURN_STRING(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID); + WMI_RETURN_STRING(WMI_PEER_ATF_EXT_REQUEST_CMDID); + WMI_RETURN_STRING(WMI_GET_CHANNEL_ANI_CMDID); + WMI_RETURN_STRING(WMI_SET_OCL_CMDID); + WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID); + WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID); } return "Invalid WMI cmd"; @@ -26171,6 +26484,177 @@ typedef struct { */ } wmi_roam_scan_stats_event_fixed_param; +typedef enum { + WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER = 1, /* Roam scan triggered due to periodic timer expiry */ + WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER, /* Roam scan triggered due to inactivity detection */ + WMI_ROAM_TRIGGER_SUB_REASON_BTM_DI_TIMER, /* Roam scan triggered due to BTM Disassoc Imminent timeout */ + WMI_ROAM_TRIGGER_SUB_REASON_FULL_SCAN, /* Roam scan triggered due to partial scan failure */ +} WMI_ROAM_TRIGGER_SUB_REASON_ID; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_reason_tlv_param */ + /* + * timestamp is the absolute time w.r.t host timer which is synchronized + * between the host and target. + * This timestamp indicates the time when roam trigger happened. + */ + A_UINT32 timestamp; /* Timestamp in milli seconds */ + /* trigger_reason: + * Roam trigger reason from WMI_ROAM_TRIGGER_REASON_ID + */ + A_UINT32 trigger_reason; + /* trigger_sub_reason: + * Reason for each roam scan from WMI_ROAM_TRIGGER_SUB_REASON_ID, + * if multiple scans are triggered for a single roam trigger. + */ + A_UINT32 trigger_sub_reason; + A_UINT32 current_rssi; /* Connected AP rssi in dBm */ + /* roam_rssi_threshold: + * RSSI threshold value in dBm for low RSSI roam trigger. + */ + A_UINT32 roam_rssi_threshold; + A_UINT32 cu_load; /* Connected AP CU load percentage (0-100) */ + /* deauth_type: + * 1 -> De-authentication + * 2 -> Disassociation + */ + A_UINT32 deauth_type; + /* deauth_reason: + * De-authentication or disassociation reason. + * De-authentication / disassociation Values are enumerated in the + * 802.11 spec. + */ + A_UINT32 deauth_reason; + /* btm_request_mode: + * Mode Values are enumerated in the 802.11 spec. + */ + A_UINT32 btm_request_mode; + A_UINT32 disassoc_imminent_timer; /* in Milli seconds */ + /* validity_internal: + * Preferred candidate list validity interval in Milli seconds. + */ + A_UINT32 validity_internal; + /* candidate_list_count: + * Number of preferred candidates from BTM request. + */ + A_UINT32 candidate_list_count; + /* btm_response_status_code: + * Response status Values are enumerated in the 802.11 spec. + */ + A_UINT32 btm_response_status_code; +} wmi_roam_trigger_reason; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_info_tlv_param */ + /* roam_scan_type: + * 0 -> Partial roam scan + * 1 -> Full roam scan + */ + A_UINT32 roam_scan_type; + /* next_rssi_trigger_threshold: + * Updated RSSI threshold value in dBm for next roam trigger. + */ + A_UINT32 next_rssi_trigger_threshold; + A_UINT32 roam_scan_channel_count; /* Number of channels scanned during roam scan */ + A_UINT32 roam_ap_count; /* Number of roamable APs */ +} wmi_roam_scan_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_channel_info_tlv_param */ + A_UINT32 channel; /* Channel frequency in MHz */ +} wmi_roam_scan_channel_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_ap_info_tlv_param */ + /* + * timestamp is the absolute time w.r.t host timer which is synchronized + * between the host and target. + * This timestamp indicates the time when candidate AP is found + * during roam scan. + */ + A_UINT32 timestamp; /* Timestamp in milli seconds */ + A_UINT32 candidate_type; /* 0 - Candidate AP, 1 - Connected AP */ + wmi_mac_addr bssid; /* AP MAC address */ + A_UINT32 channel; /* AP channel frequency in MHz */ + A_UINT32 rssi; /* AP current rssi in dBm */ + A_UINT32 cu_load; /* AP current cu load percentage (0-100) */ + /* + * The score fields below don't have a pre-determined range, + * but use the sense that a higher score indicates a better + * roam candidate. + */ + A_UINT32 rssi_score; /* AP current rssi score */ + A_UINT32 cu_score; /* AP current cu score */ + A_UINT32 total_score; /* AP total score */ + A_UINT32 etp; /* AP Estimated Throughput (ETP) value in mbps */ +} wmi_roam_ap_info; + +typedef enum { + /* Failures reasons for not triggering roaming */ + WMI_ROAM_FAIL_REASON_NO_SCAN_START = 1, /* Roam scan not started */ + WMI_ROAM_FAIL_REASON_NO_AP_FOUND, /* No roamable APs found during roam scan */ + WMI_ROAM_FAIL_REASON_NO_CAND_AP_FOUND, /* No candidate APs found during roam scan */ + + /* Failure reasons after roaming is triggered */ + WMI_ROAM_FAIL_REASON_HOST, /* Roam fail due to VDEV STOP issued from Host */ + WMI_ROAM_FAIL_REASON_AUTH_SEND, /* Unable to send auth request frame */ + WMI_ROAM_FAIL_REASON_AUTH_RECV, /* Received auth response with error status code */ + WMI_ROAM_FAIL_REASON_NO_AUTH_RESP, /* Not receiving auth response frame */ + WMI_ROAM_FAIL_REASON_REASSOC_SEND, /* Unable to send reassoc request frame */ + WMI_ROAM_FAIL_REASON_REASSOC_RECV, /* Received reassoc response with error status code */ + WMI_ROAM_FAIL_REASON_NO_REASSOC_RESP, /* Not receiving reassoc response frame */ + WMI_ROAM_FAIL_REASON_EAPOL_TIMEOUT, /* EAPOL TIMEOUT */ + WMI_ROAM_FAIL_REASON_MLME, /* MLME internal error */ + WMI_ROAM_FAIL_REASON_INTERNAL_ABORT, /* Internal abort */ + + + WMI_ROAM_FAIL_REASON_UNKNOWN = 255, +} WMI_ROAM_FAIL_REASON_ID; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_result_tlv_param */ + /* + * timestamp is the absolute time w.r.t host timer which is synchronized + * between the host and target. + * This timestamp indicates the time when roaming is completed. + */ + A_UINT32 timestamp; /* Timestamp in milli seconds */ + A_UINT32 roam_status; /* 0 - Roaming is success, 1 - Roaming is failed */ + A_UINT32 roam_fail_reason; /* from WMI_ROAM_FAIL_REASON_ID */ +} wmi_roam_result; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param */ + /* request_type: + * 1 -> BTM query + * 2 -> 11K neighbor report request + */ + A_UINT32 request_type; + /* neighbor_report_request_timestamp: + * timestamp is the absolute time w.r.t host timer which is synchronized + * between the host and target. + * This timestamp indicates the time when neighbor report request + * is received. + */ + A_UINT32 neighbor_report_request_timestamp; /* in milli seconds */ + /* neighbor_report_response_timestamp: + * This timestamp indicates the time when neighbor report response is sent. + */ + A_UINT32 neighbor_report_response_timestamp; /* in milli seconds */ + A_UINT32 neighbor_report_channel_count; /* Number of channels received in neighbor report response */ +} wmi_roam_neighbor_report_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_channel_info_tlv_param */ + A_UINT32 channel; /* Channel frequency in MHz */ +} wmi_roam_neighbor_report_channel_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_stats_event_fixed_param */ + A_UINT32 vdev_id; + A_UINT32 roam_scan_trigger_count; /* Number of roam scans triggered */ +} wmi_roam_stats_event_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals wmi_txpower_query_cmd_fixed_param */ A_UINT32 request_id; /* unique request ID to distinguish the command / event set */ @@ -27795,33 +28279,76 @@ typedef struct { A_UINT32 en_dis; } wmi_get_elna_bypass_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** + * TLV (tag length value) parameters follow the + * structure. The TLV's are: + * list of channels (center freq of primary 20 MHz of the channel, in MHz) + * A_UINT32 channel_list[]; + */ +} wmi_get_channel_ani_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param + */ + A_UINT32 tlv_header; + /** + * TLV (tag length value) parameters follow the + * structure. The TLV's are: + * wmi_channel_ani_info_tlv_param ani_info[]; + */ +} wmi_get_channel_ani_event_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_channel_ani_info_tlv_param */ + A_UINT32 tlv_header; + /** channel freq (center of 20 MHz primary channel) in MHz */ + A_UINT32 chan_freq; + /** + * ANI (noise interference) level corresponding to the channel. + * Values range from [0-9], with higher values indicating more + * noise interference. + */ + A_UINT32 ani_level; +} wmi_channel_ani_info_tlv_param; + /* This command is to specify to enable/disable audio frame aggr */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_enable_cmd_fixed_param */ A_UINT32 aggr_enable; /* enable aggregation for audio frame */ A_UINT32 tbd_enable; /* enable time_based discarding for audio frame */ + A_UINT32 vdev_id; } wmi_audio_aggr_enable_cmd_fixed_param; typedef struct wmi_audio_aggr_rate_set_s { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_audio_aggr_rate_set */ A_UINT32 mcs; A_UINT32 bandwidth; /* 0 for 20M, 1 for 40M and 2 for 80M, etc. */ + A_UINT32 vdev_id; } WMI_AUDIO_AGGR_RATE_SET_T; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_add_group */ A_UINT32 group_id; /* id of audio group */ wmi_mac_addr multicast_addr; /* multicast address of audio group */ + A_UINT32 vdev_id; } wmi_audio_aggr_add_group_cmd_fixed_param; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_del_group */ A_UINT32 group_id; + A_UINT32 vdev_id; } wmi_audio_aggr_del_group_cmd_fixed_param; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_rate */ A_UINT32 group_id; + A_UINT32 vdev_id; /** * TLV (tag length value) parameters follow the * structure. The TLV's are: @@ -27833,8 +28360,66 @@ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_retry */ A_UINT32 group_id; A_UINT32 retry_thresh; + A_UINT32 vdev_id; } wmi_audio_aggr_set_group_retry_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 group_id; + /* + * bit0: if set, Enable HT20 + * bit1: if set, Enable HT40 + * bit2, bit3: Reserved + * bit4: if set, Enable VHT20 + * bit5: if set, Enable VHT40 + * bit6: if set, Enable VHT80 + * bit7 ~ bit31: Reserved + */ + A_UINT32 bw; + A_UINT32 mcs_min; + A_UINT32 mcs_max; + A_UINT32 mcs_offset; + A_UINT32 nss; +} wmi_audio_aggr_set_group_auto_rate_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 group_id; + A_UINT32 interval; +} wmi_audio_aggr_set_group_probe_cmd_fixed_param; + +typedef struct { + /** + * TLV tag and len; + * tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_update_sta_group_info */ + A_UINT32 tlv_header; + + /* vdev id */ + A_UINT32 vdev_id; /* which STA/vdev's group membership is being specified */ + + /* bitmap that indicates which groups this sta belongs to */ + A_UINT32 group_bmap; + +/* + * This fixed_param struct is followed by a TLV array of wmi_mac_addr, + * which specifies the multi-cast MAC address used for each group. + * The number of elements within the TLV array matches the number of bits + * set within group_bmap. + */ +} wmi_audio_aggr_update_sta_group_info_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param */ + A_UINT32 tlv_header; + /* VDEV identifier */ + A_UINT32 vdev_id; + /** enable/disable OCL, 1 - enable, 0 - disable*/ + A_UINT32 en_dis_chain; +} wmi_set_ocl_cmd_fixed_param; + #define WMI_CFR_GROUP_TA_ADDR_VALID_BIT_POS 0 #define WMI_CFR_GROUP_TA_ADDR_MASK_VALID_BIT_POS 1 @@ -27926,6 +28511,9 @@ typedef struct { WMI_GET_BITS(param, WMI_CFR_GROUP_NSS_BIT_POS, WMI_CFR_GROUP_NSS_MASK_NUM_BITS) typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_cfr_filter_group_config */ + A_UINT32 tlv_header; /* Filter group number for which the below filters needs to be applied */ A_UINT32 filter_group_id; /* Indicates which of the below filter's value is valid @@ -28040,7 +28628,8 @@ typedef struct { #define WMI_CFR_NDPA_NDP_ALL_EN_SET(param, value) \ WMI_SET_BITS(param, WMI_CFR_NDPA_NDP_ALL_EN_BIT_POS, 1, value) -#define WWMI_CFR_NDPA_NDP_ALL_EN_GET(param) \ +#define WWMI_CFR_NDPA_NDP_ALL_EN_GET WMI_CFR_NDPA_NDP_ALL_EN_GET +#define WMI_CFR_NDPA_NDP_ALL_EN_GET(param) \ WMI_GET_BITS(param, WMI_CFR_NDPA_NDP_ALL_EN_BIT_POS, 1) #define WMI_CFR_TA_RA_TYPE_FILTER_EN_SET(param, value) \ @@ -28049,7 +28638,8 @@ typedef struct { #define WMI_CFR_TA_RA_TYPE_FILTER_EN_GET(param) \ WMI_GET_BITS(param, WMI_CFR_TA_RA_TYPE_FILTER_EN_BIT_POS, 1) -#define WWMI_CFR_ALL_PACKET_EN_SET(param, value) \ +#define WWMI_CFR_ALL_PACKET_EN_SET WMI_CFR_ALL_PACKET_EN_SET +#define WMI_CFR_ALL_PACKET_EN_SET(param, value) \ WMI_SET_BITS(param, WMI_CFR_ALL_PACKET_EN_BIT_POS, 1, value) #define WMI_CFR_ALL_PACKET_EN_GET(param) \ @@ -28163,6 +28753,138 @@ typedef struct { */ } wmi_cfr_capture_filter_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_oem_data_event_fixed_param */ + A_UINT32 data_len; /** length in byte of data[]. */ +/* Following this structure is the TLV: + * A_UINT8 data[]; <-- length in byte given by field data_len. + * This data array contains OEM data, the payload begins with a field to tell the HOST regarding the kind of the OEM data. + */ +} wmi_oem_data_event_fixed_param; + +#define WMI_VLAN_TX_BIT_POS 0 +#define WMI_VLAN_RX_BIT_POS 1 +#define WMI_TX_INSERT_OR_STRIP_BIT_POS 2 +#define WMI_TX_STRIP_INSERT_VLAN_INNER_BIT_POS 3 +#define WMI_TX_STRIP_INSERT_VLAN_OUTER_BIT_POS 4 +#define WMI_RX_STRIP_VLAN_C_TAG_BIT_POS 5 +#define WMI_RX_STRIP_VLAN_S_TAG_BIT_POS 6 +#define WMI_RX_INSERT_VLAN_C_TAG_BIT_POS 7 +#define WMI_RX_INSERT_VLAN_S_TAG_BIT_POS 8 + +#define WMI_TX_INSERT_VLAN_INNER_TCI_NUM_BITS 16 +#define WMI_TX_INSERT_VLAN_INNER_TCI_BIT_POS 0 + +#define WMI_TX_INSERT_VLAN_OUTER_TCI_NUM_BITS 16 +#define WMI_TX_INSERT_VLAN_OUTER_TCI_BIT_POS 16 + + +#define WMI_VLAN_TX_SET(param, value) \ + WMI_SET_BITS(param, WMI_VLAN_TX_BIT_POS, 1, value) + +#define WMI_VLAN_TX_GET(param) \ + WMI_GET_BITS(param, WMI_VLAN_TX_BIT_POS, 1) + +#define WMI_VLAN_RX_SET(param, value) \ + WMI_SET_BITS(param, WMI_VLAN_RX_BIT_POS, 1, value) + +#define WMI_VLAN_RX_GET(param) \ + WMI_GET_BITS(param, WMI_VLAN_RX_BIT_POS, 1) + +#define WMI_TX_INSERT_OR_STRIP_SET(param, value) \ + WMI_SET_BITS(param, WMI_TX_INSERT_OR_STRIP_BIT_POS, 1, value) + +#define WMI_TX_INSERT_OR_STRIP_GET(param) \ + WMI_GET_BITS(param, WMI_TX_INSERT_OR_STRIP_BIT_POS, 1) + +#define WMI_TX_STRIP_INSERT_VLAN_INNER_SET(param, value) \ + WMI_SET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_INNER_BIT_POS, 1, value) + +#define WMI_TX_STRIP_INSERT_VLAN_INNER_GET(param) \ + WMI_GET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_INNER_BIT_POS, 1) + +#define WMI_TX_STRIP_INSERT_VLAN_OUTER_SET(param, value) \ + WMI_SET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_OUTER_BIT_POS, 1, value) + +#define WMI_TX_STRIP_INSERT_VLAN_OUTER_GET(param) \ + WMI_GET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_OUTER_BIT_POS, 1) + +#define WMI_RX_STRIP_VLAN_C_TAG_SET(param, value) \ + WMI_SET_BITS(param, WMI_RX_STRIP_VLAN_C_TAG_BIT_POS, 1, value) + +#define WMI_RX_STRIP_VLAN_C_TAG_GET(param) \ + WMI_GET_BITS(param, WMI_RX_STRIP_VLAN_C_TAG_BIT_POS, 1) + +#define WMI_RX_STRIP_VLAN_S_TAG_SET(param, value) \ + WMI_SET_BITS(param, WMI_RX_STRIP_VLAN_S_TAG_BIT_POS, 1, value) + +#define WMI_RX_STRIP_VLAN_S_TAG_GET(param) \ + WMI_GET_BITS(param, WMI_RX_STRIP_VLAN_S_TAG_BIT_POS, 1) + +#define WMI_RX_INSERT_VLAN_C_TAG_SET(param, value) \ + WMI_SET_BITS(param, WMI_RX_INSERT_VLAN_C_TAG_BIT_POS, 1, value) + +#define WMI_RX_INSERT_VLAN_C_TAG_GET(param) \ + WMI_GET_BITS(param, WMI_RX_INSERT_VLAN_C_TAG_BIT_POS, 1) + +#define WMI_RX_INSERT_VLAN_S_TAG_SET(param, value) \ + WMI_SET_BITS(param, WMI_RX_INSERT_VLAN_S_TAG_BIT_POS, 1, value) + +#define WMI_RX_INSERT_VLAN_S_TAG_GET(param) \ + WMI_GET_BITS(param, WMI_RX_INSERT_VLAN_S_TAG_BIT_POS, 1) + +#define WMI_TX_INSERT_VLAN_INNER_TCI_SET(param, value) \ + WMI_SET_BITS(param, WMI_TX_INSERT_VLAN_INNER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_INNER_TCI_NUM_BITS, value) + +#define WMI_TX_INSERT_VLAN_INNER_TCI_GET(param) \ + WMI_GET_BITS(param, WMI_TX_INSERT_VLAN_INNER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_INNER_TCI_NUM_BITS) + +#define WMI_TX_INSERT_VLAN_OUTER_TCI_SET(param, value) \ + WMI_SET_BITS(param, WMI_TX_INSERT_VLAN_OUTER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_OUTER_TCI_NUM_BITS, value) + +#define WMI_TX_INSERT_VLAN_OUTER_TCI_GET(param) \ + WMI_GET_BITS(param, WMI_TX_INSERT_VLAN_OUTER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_OUTER_TCI_NUM_BITS) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_config_vlan_cmd_fixed_param */ + A_UINT32 tlv_header; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /* peer_vlan_config_mask: + * Field indicates VLAN settings that need to set in RX and TX peer + * Bit 0: Indicates if the settings are present for TX peer + * [1 - present for TX peer] + * Bit 1: Indicates if the settings are present for RX peer + * [1 - present for RX peer] + * Bit 2: Setting the insert_or_strip bit in TX peer + * [0 - Strip, 1 - Insert] + * Bit 3: Setting the strip_insert_vlan_inner bit in TX peer + * [0 - Strip, 1 - Insert] + * Bit 4: Setting the strip_insert_vlan_outer bit in TX peer + * [0 - Strip, 1 - Insert] + * Bit 5: Setting the strip_vlan_c_tag_decap bit in RX peer [1 - Strip] + * Bit 6: Setting the strip_vlan_s_tag_decap bit in RX peer [1 - Strip] + * Bit 7: Setting the rx_insert_vlan_c_tag_padding bit in RX peer + * [1 - Insert] + * Bit 8: Setting the rx_insert_vlan_s_tag_padding bit in RX peer + * [1 - Insert] + */ + A_UINT32 peer_vlan_config_mask; + + /* insert_vlan_tci: + * Field indicates the word that needs to be inserted in the + * inner or outer tag, if insertion is enabled by the + * TX peer strip_insert_vlan_{inner,outer} fields along with + * insert_or_strip field + * Bits 0:15 insert_vlan_inner_tci + * Bits 16:31 insert_vlan_outer_tci + */ + A_UINT32 insert_vlan_tci; + /* VDEV identifier */ + A_UINT32 vdev_id; +} wmi_peer_config_vlan_cmd_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 7f450e8ae63f..675a7afd23ca 100755 --- a/drivers/staging/fw-api/fw/wmi_version.h +++ b/drivers/staging/fw-api/fw/wmi_version.h @@ -36,7 +36,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_ 725 +#define __WMI_REVISION_ 757 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work |
