diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 1cc8e26812f1..06ae46383a8a 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -1076,6 +1076,9 @@ static void dp_rx_msdu_stats_update(struct dp_soc *soc, nss = hal_rx_msdu_start_nss_get(rx_tlv_hdr); pkt_type = hal_rx_msdu_start_get_pkt_type(rx_tlv_hdr); + /* Save tid to skb->priority */ + DP_RX_TID_SAVE(nbuf, tid); + DP_STATS_INC(vdev->pdev, rx.bw[bw], 1); DP_STATS_INC(vdev->pdev, rx.reception_type[reception_type], 1); DP_STATS_INCC(vdev->pdev, rx.nss[nss], 1, diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 6681c615b1eb..4215299c4d8b 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -1036,6 +1036,11 @@ static void dp_tx_classify_tid(struct dp_vdev *vdev, qdf_nbuf_t nbuf, qdf_llc_t *llcHdr; struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev; + DP_TX_TID_OVERRIDE(msdu_info, nbuf); + + if (vdev->dscp_tid_map_id <= 1) + return; + /* for mesh packets don't do any classification */ if (qdf_unlikely(vdev->mesh_vdev)) return; @@ -1922,8 +1927,7 @@ qdf_nbuf_t dp_tx_send(void *vap_dev, qdf_nbuf_t nbuf) * map to a TID and store in msdu_info. This is later used * to fill in TCL Input descriptor (per-packet TID override). */ - if (vdev->dscp_tid_map_id > 1) - dp_tx_classify_tid(vdev, nbuf, &msdu_info); + dp_tx_classify_tid(vdev, nbuf, &msdu_info); /* Reset the control block */ qdf_nbuf_reset_ctxt(nbuf); diff --git a/dp/wifi3.0/dp_tx.h b/dp/wifi3.0/dp_tx.h index 382c4e2a8ff8..d258fa604af1 100644 --- a/dp/wifi3.0/dp_tx.h +++ b/dp/wifi3.0/dp_tx.h @@ -206,6 +206,20 @@ void dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev, qdf_nbuf_t netbuf); #endif +#ifdef ATH_TX_PRI_OVERRIDE +#define DP_TX_TID_OVERRIDE((_msdu_info), _nbuf) \ + ((_msdu_info)->tid = qdf_nbuf_get_priority(_nbuf)) +#else +#define DP_TX_TID_OVERRIDE(_msdu_info, _nbuf) +#endif + +#ifdef ATH_RX_PRI_SAVE +#define DP_RX_TID_SAVE(_nbuf, _tid) \ + (qdf_nbuf_set_priority(_nbuf, _tid)) +#else +#define DP_RX_TID_SAVE(_nbuf, _tid) +#endif + /* TODO TX_FEATURE_NOT_YET */ static inline void dp_tx_comp_process_exception(struct dp_tx_desc_s *tx_desc) {