|
@@ -441,6 +441,7 @@ 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_MAX_TAG,
|
|
|
} htt_tlv_tag_t;
|
|
@@ -509,6 +510,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
|
|
|
|
|
@@ -1371,6 +1375,7 @@ 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 */
|
|
@@ -1938,7 +1943,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))
|
|
@@ -1947,7 +1952,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))
|
|
@@ -1974,16 +1979,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;
|
|
|
|
|
@@ -1996,6 +2014,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
|
|
|
|
|
@@ -2120,6 +2167,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.
|
|
@@ -2133,6 +2181,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;
|
|
|
|