Browse Source

qcacmn: fix tid overwrite/save FRs for HK

Fix tid overwrite and save features' brokage for HK

Change-Id: I71985a73f65ad4ddf79ae9a2efb00c5de12b9cd8
Neil Zhao 7 years ago
parent
commit
488763687b
3 changed files with 23 additions and 2 deletions
  1. 3 0
      dp/wifi3.0/dp_rx.c
  2. 6 2
      dp/wifi3.0/dp_tx.c
  3. 14 0
      dp/wifi3.0/dp_tx.h

+ 3 - 0
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,

+ 6 - 2
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);

+ 14 - 0
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)
 {