summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspuligil <quic_spuligil@quicinc.com>2023-02-24 12:01:07 -0800
committerspuligil <quic_spuligil@quicinc.com>2023-02-24 12:01:46 -0800
commitad19db4e2dcb94d6bb4d079cb1c25e31837fb545 (patch)
tree297191e3f6dd6ff676d768eaa4c6eb932776dfea
parentd05796773e1bee9e9b0285f2fa09ad589c4aa385 (diff)
downloadwlan-fw-api-ad19db4e2dcb94d6bb4d079cb1c25e31837fb545.tar.gz
fw-api: CL 21737959 - update fw common interface files
WMI, HTT stats: add UL OFDMA trigger specs + stats Change-Id: I783619550c9ecbf3587556e5194cd2f2457cd409 CRs-Fixed: 2262693
-rw-r--r--fw/htt.h8
-rw-r--r--fw/htt_ppdu_stats.h5
-rw-r--r--fw/htt_stats.h31
-rw-r--r--fw/wmi_services.h1
-rw-r--r--fw/wmi_tlv_defs.h24
-rw-r--r--fw/wmi_unified.h90
-rw-r--r--fw/wmi_version.h2
7 files changed, 159 insertions, 2 deletions
diff --git a/fw/htt.h b/fw/htt.h
index 8912b77..5459982 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -782,6 +782,7 @@ typedef enum {
HTT_STATS_TX_PDEV_MLO_ABORT_TAG = 177, /* htt_tx_pdev_stats_mlo_abort_tlv_v */
HTT_STATS_TX_PDEV_MLO_TXOP_ABORT_TAG = 178, /* htt_tx_pdev_stats_mlo_txop_abort_tlv_v */
HTT_STATS_UMAC_SSR_TAG = 179, /* htt_umac_ssr_stats_tlv */
+ HTT_STATS_PEER_BE_OFDMA_STATS_TAG = 180, /* htt_peer_be_ofdma_stats_tlv */
HTT_STATS_MAX_TAG,
@@ -19009,9 +19010,11 @@ struct htt_ul_ofdma_user_info_v0 {
};
#define HTT_UL_OFDMA_USER_INFO_V0_BITMAP_W0 \
- A_UINT32 w0_fw_rsvd:30; \
+ A_UINT32 w0_fw_rsvd:29; \
+ A_UINT32 w0_manual_ulofdma_trig:1; \
A_UINT32 w0_valid:1; \
A_UINT32 w0_version:1;
+
struct htt_ul_ofdma_user_info_v0_bitmap_w0 {
HTT_UL_OFDMA_USER_INFO_V0_BITMAP_W0
};
@@ -19101,6 +19104,9 @@ enum HTT_UL_OFDMA_TRIG_TYPE {
#define HTT_UL_OFDMA_USER_INFO_V0_W0_FW_INTERNAL_M 0x0000ffff
#define HTT_UL_OFDMA_USER_INFO_V0_W0_FW_INTERNAL_S 0
+#define HTT_UL_OFDMA_USER_INFO_V0_W0_MANUAL_ULOFDMA_TRIG_M 0x20000000
+#define HTT_UL_OFDMA_USER_INFO_V0_W0_MANUAL_ULOFDMA_TRIG_S 29
+
#define HTT_UL_OFDMA_USER_INFO_V0_W0_VALID_M 0x40000000
#define HTT_UL_OFDMA_USER_INFO_V0_W0_VALID_S 30
diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h
index 83802fb..85ff6c3 100644
--- a/fw/htt_ppdu_stats.h
+++ b/fw/htt_ppdu_stats.h
@@ -876,6 +876,11 @@ typedef struct {
reserved3: 31;
};
};
+ /* is_manual_ulofdma_trigger:
+ * Flag to indicate if a given UL OFDMA trigger is manually triggered
+ * from the Host
+ */
+ A_UINT32 is_manual_ulofdma_trigger;
} htt_ppdu_stats_common_tlv;
#define HTT_PPDU_STATS_USER_COMMON_TLV_TID_NUM_M 0x000000ff
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index b5cc19f..ed2765c 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -148,6 +148,7 @@ enum htt_dbg_ext_stats_type {
* 6 bit htt_msdu_flow_stats_tlv
* 7 bit htt_peer_sched_stats_tlv
* 8 bit htt_peer_ax_ofdma_stats_tlv
+ * 9 bit htt_peer_be_ofdma_stats_tlv
* - config_param2: [Bit31 : Bit0] mac_addr31to0
* - config_param3: [Bit15 : Bit0] mac_addr47to32
* [Bit 16] If this bit is set, reset per peer stats
@@ -1866,6 +1867,7 @@ typedef enum {
HTT_MSDU_FLOW_STATS_TLV = 6,
HTT_PEER_SCHED_STATS_TLV = 7,
HTT_PEER_AX_OFDMA_STATS_TLV = 8,
+ HTT_PEER_BE_OFDMA_STATS_TLV = 9,
HTT_PEER_STATS_MAX_TLV = 31,
} htt_peer_stats_tlv_enum;
@@ -1909,8 +1911,20 @@ typedef struct {
/* Last updated value of DL and UL queue depths for each peer per AC */
A_UINT32 last_updated_dl_qdepth[HTT_NUM_AC_WMM];
A_UINT32 last_updated_ul_qdepth[HTT_NUM_AC_WMM];
+ /* Per peer Manual 11ax UL OFDMA trigger and trigger error counts */
+ A_UINT32 ax_manual_ulofdma_trig_count;
+ A_UINT32 ax_manual_ulofdma_trig_err_count;
} htt_peer_ax_ofdma_stats_tlv;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 peer_id;
+ /* Per peer Manual 11be UL OFDMA trigger and trigger error counts */
+ A_UINT32 be_manual_ulofdma_trig_count;
+ A_UINT32 be_manual_ulofdma_trig_err_count;
+} htt_peer_be_ofdma_stats_tlv;
+
+
/* config_param0 */
#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_M 0x00000001
@@ -2000,6 +2014,7 @@ typedef struct _htt_peer_stats {
htt_tx_tid_stats_v1_tlv tx_tid_stats_v1[1];
htt_peer_sched_stats_tlv peer_sched_stats;
htt_peer_ax_ofdma_stats_tlv ax_ofdma_stats;
+ htt_peer_be_ofdma_stats_tlv be_ofdma_stats;
} htt_peer_stats_t;
/* =========== ACTIVE PEER LIST ========== */
@@ -2518,6 +2533,14 @@ typedef struct {
A_UINT32 standalone_ax_bsr_trigger_tried[HTT_NUM_AC_WMM];
/** 11AX HE MU Standalone Freq. BSRP Trigger completed with error(s) */
A_UINT32 standalone_ax_bsr_trigger_err[HTT_NUM_AC_WMM];
+ /** 11AX HE Manual Single-User UL OFDMA Trigger frame sent over the air */
+ A_UINT32 manual_ax_su_ulofdma_basic_trigger[HTT_NUM_AC_WMM];
+ /** 11AX HE Manual Single-User UL OFDMA Trigger completed with error(s) */
+ A_UINT32 manual_ax_su_ulofdma_basic_trigger_err[HTT_NUM_AC_WMM];
+ /** 11AX HE Manual Multi-User UL OFDMA Trigger frame sent over the air */
+ A_UINT32 manual_ax_mu_ulofdma_basic_trigger[HTT_NUM_AC_WMM];
+ /** 11AX HE Manual Multi-User UL OFDMA Trigger completed with error(s) */
+ A_UINT32 manual_ax_mu_ulofdma_basic_trigger_err[HTT_NUM_AC_WMM];
} htt_tx_selfgen_ax_stats_tlv;
typedef struct {
@@ -2565,6 +2588,14 @@ typedef struct {
A_UINT32 standalone_be_bsr_trigger_tried[HTT_NUM_AC_WMM];
/** 11BE EHT MU Standalone Freq. BSRP Trigger completed with error(s) */
A_UINT32 standalone_be_bsr_trigger_err[HTT_NUM_AC_WMM];
+ /** 11BE EHT Manual Single-User UL OFDMA Trigger frame sent over the air */
+ A_UINT32 manual_be_su_ulofdma_basic_trigger[HTT_NUM_AC_WMM];
+ /** 11BE EHT Manual Single-User UL OFDMA Trigger completed with error(s) */
+ A_UINT32 manual_be_su_ulofdma_basic_trigger_err[HTT_NUM_AC_WMM];
+ /** 11BE EHT Manual Multi-User UL OFDMA Trigger frame sent over the air */
+ A_UINT32 manual_be_mu_ulofdma_basic_trigger[HTT_NUM_AC_WMM];
+ /** 11BE EHT Manual Multi-User UL OFDMA Trigger completed with error(s) */
+ A_UINT32 manual_be_mu_ulofdma_basic_trigger_err[HTT_NUM_AC_WMM];
} htt_tx_selfgen_be_stats_tlv;
typedef struct { /* DEPRECATED */
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index aeae8d5..b0e5ec6 100644
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -618,6 +618,7 @@ typedef enum {
WMI_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT = 365, /* Support rx peer meta data v1a and v1b */
WMI_SERVICE_CFR_CAPTURE_PDEV_ID_SOC = 366, /* Host can send PDEV_ID_SOC with CFR capture request and FW can derive pdev_id from TA address */
WMI_SERVICE_11BE_MLO_TDLS_SUPPORT = 367, /* Indicates FW supports 11be MLO TDLS. Host should enable 11be on TDLS only when FW indicates the support. */
+ WMI_SERVICE_MANUAL_ULOFDMA_TRIGGER_SUPPORT = 368, /* Support for Host triggered Manual UL OFDMA trigger frame feature */
WMI_MAX_EXT2_SERVICE
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index 15ff785..fc1a9da 100644
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -1346,6 +1346,9 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_mlo_vdev_get_link_info_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_vdev_link_info_event_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_vdev_link_info,
+ WMITLV_TAG_STRUC_wmi_vdev_set_manual_su_trig_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_vdev_set_manual_mu_trig_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_manual_ul_ofdma_trig_feedback_evt_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -1867,6 +1870,8 @@ typedef enum {
OP(WMI_PDEV_SET_TGTR2P_TABLE_CMDID) \
OP(WMI_PEER_BULK_SET_CMDID) \
OP(WMI_MLO_VDEV_GET_LINK_INFO_CMDID) \
+ OP(WMI_VDEV_SET_ULOFDMA_MANUAL_SU_TRIG_CMDID) \
+ OP(WMI_VDEV_SET_ULOFDMA_MANUAL_MU_TRIG_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -2169,6 +2174,7 @@ typedef enum {
OP(WMI_PDEV_SET_TGTR2P_TABLE_EVENTID) \
OP(WMI_CSA_IE_RECEIVED_EVENTID) \
OP(WMI_MLO_VDEV_LINK_INFO_EVENTID) \
+ OP(WMI_MANUAL_UL_OFDMA_TRIG_FEEDBACK_EVENTID) \
/* add new EVT_LIST elements above this line */
@@ -5304,6 +5310,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_TGTR2P_TABLE_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_vdev_get_link_info_cmd_fixed_param, wmi_mlo_vdev_get_link_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_VDEV_GET_LINK_INFO_CMDID);
+/* WMI command to set Manual SU UL OFDMA Trigger params */
+#define WMITLV_TABLE_WMI_VDEV_SET_ULOFDMA_MANUAL_SU_TRIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_set_manual_su_trig_cmd_fixed_param, wmi_vdev_set_manual_su_trig_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_ULOFDMA_MANUAL_SU_TRIG_CMDID);
+
+/* WMI command to set Manual MU UL OFDMA Trigger params */
+#define WMITLV_TABLE_WMI_VDEV_SET_ULOFDMA_MANUAL_MU_TRIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_set_manual_mu_trig_cmd_fixed_param, wmi_vdev_set_manual_mu_trig_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, peer_macaddr, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_ULOFDMA_MANUAL_MU_TRIG_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
@@ -7198,6 +7215,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_CSA_IE_RECEIVED_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_vdev_link_info, mlo_vdev_link_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_VDEV_LINK_INFO_EVENTID);
+/* Manual UL OFDMA Trigger Feedback Event */
+#define WMITLV_TABLE_WMI_MANUAL_UL_OFDMA_TRIG_FEEDBACK_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_manual_ul_ofdma_trig_feedback_evt_fixed_param, wmi_manual_ul_ofdma_trig_feedback_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, peer_macaddr, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_MANUAL_UL_OFDMA_TRIG_FEEDBACK_EVENTID);
+
+
#ifdef __cplusplus
}
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index d5535af..30a755d 100644
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -316,6 +316,7 @@ typedef enum {
WMI_GRP_QUIET_OFL, /* 0x4a Quiet offloads */
WMI_GRP_ODD, /* 0x4b ODD */
WMI_GRP_TDMA, /* 0x4c TDMA */
+ WMI_GRP_MANUAL_UL_TRIG /* 0x4d Manual UL OFDMA Trigger */
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -1563,6 +1564,13 @@ typedef enum {
/* WMI commands specific to TDMA */
WMI_TDMA_SCHEDULE_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_TDMA),
+
+ /* WMI commands specific to manually-triggered UL */
+ /** WMI Command to set Manual SU UL OFDMA trigger parameters */
+ WMI_VDEV_SET_ULOFDMA_MANUAL_SU_TRIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MANUAL_UL_TRIG),
+
+ /** WMI Command to set Manual MU UL OFDMA trigger parameters */
+ WMI_VDEV_SET_ULOFDMA_MANUAL_MU_TRIG_CMDID,
} WMI_CMD_ID;
typedef enum {
@@ -2375,6 +2383,12 @@ typedef enum {
/* ODD events */
WMI_ODD_LIVEDUMP_RESPONSE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_ODD),
+
+ /** WMI events specific to manually-triggered UL */
+ /**
+ * WMI Event to send Manual UL OFDMA Trigger frame status feedback to Host
+ */
+ WMI_MANUAL_UL_OFDMA_TRIG_FEEDBACK_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MANUAL_UL_TRIG),
} WMI_EVT_ID;
/* defines for OEM message sub-types */
@@ -33415,6 +33429,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_HPA_CMDID);
WMI_RETURN_STRING(WMI_PDEV_SET_TGTR2P_TABLE_CMDID); /* To set target rate to power table */
WMI_RETURN_STRING(WMI_MLO_VDEV_GET_LINK_INFO_CMDID);
+ WMI_RETURN_STRING(WMI_VDEV_SET_ULOFDMA_MANUAL_SU_TRIG_CMDID);
+ WMI_RETURN_STRING(WMI_VDEV_SET_ULOFDMA_MANUAL_MU_TRIG_CMDID);
}
return (A_UINT8 *) "Invalid WMI cmd";
@@ -41991,6 +42007,80 @@ typedef struct {
A_UINT32 chan_freq; /* Channel frequency in MHz */
} wmi_mlo_vdev_link_info;
+/* Manual UL OFDMA trigger frame data structures */
+
+typedef enum {
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_NONE,
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_RESP, /* response timeout, mismatch,
+ * BW mismatch, mimo ctrl mismatch,
+ * CRC error.. */
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_FILT, /* blocked by tx filtering */
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_FIFO, /* fifo, misc errors in HW */
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_SWABORT, /* software initiated abort
+ * (TX_ABORT) */
+
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_MAX = 0xff,
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_INVALID =
+ WMI_UL_OFDMA_MANUAL_TRIG_TXERR_MAX
+} wmi_ul_ofdma_manual_trig_txerr_t;
+
+typedef struct {
+ /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_manual_ul_ofdma_trig_feedback_evt_fixed_param */
+ A_UINT32 tlv_header;
+
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+
+ /* To indicate whether feedback event is for SU (0) or MU trigger (1) */
+ A_UINT32 feedback_trig_type;
+
+ /* Feedback Params */
+ A_UINT32 curr_su_manual_trig_count;
+ A_UINT32 remaining_su_manual_trig;
+ A_UINT32 remaining_mu_trig_peers;
+ A_UINT32 manual_trig_status; /* holds a wmi_ul_ofdma_manual_trig_txerr_t */
+
+ /**
+ * This TLV is followed by TLVs below:
+ * wmi_mac_addr peer_macaddr[];
+ * Array length corresponds to the number of triggered peers
+ */
+} wmi_manual_ul_ofdma_trig_feedback_evt_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_set_manual_mu_trig_cmd_fixed_param */
+ A_UINT32 tlv_header;
+
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+
+ /* Configurable Parameters for manual UL OFDMA Multi-User Trigger frame */
+ A_UINT32 manual_trig_preferred_ac;
+ /**
+ * This TLV is followed by TLVs below:
+ * wmi_mac_addr peer_macaddr[];
+ * The array has one element for each peer to be included in the
+ * manually-triggered UL MU transmission.
+ */
+} wmi_vdev_set_manual_mu_trig_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_set_manual_su_trig_cmd_fixed_param */
+ A_UINT32 tlv_header;
+
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+
+ /* Configurable Parameters for manual UL OFDMA Single-User Trigger frame */
+ wmi_mac_addr peer_macaddr;
+ A_UINT32 manual_trig_preferred_ac;
+ A_UINT32 num_su_manual_trig;
+ A_UINT32 manual_trig_length;
+ A_UINT32 manual_trig_mcs;
+ A_UINT32 manual_trig_nss;
+ A_INT32 manual_trig_target_rssi; /* units = dBm */
+} wmi_vdev_set_manual_su_trig_cmd_fixed_param;
+
/* ADD NEW DEFS HERE */
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index 49ed977..d22f82b 100644
--- a/fw/wmi_version.h
+++ b/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_ 1291
+#define __WMI_REVISION_ 1292
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work