ソースを参照

qcacmn: Fix MLO link stats issues

Add link_id check while aggregatin stats into vdev at 
time of peer unmap, otherwise vdev stats are aggregated 
twice and hence give incorrect output.

Also comment out link_id fetch in BE Rx path as it is 
currently not enabled.

Change-Id: I91ceab4c6380bbd6e0cb2717adb2413e9e8e4221
CRs-Fixed: 3435688
Harsh Kumar Bijlani 2 年 前
コミット
2d75a88f1e
2 ファイル変更7 行追加4 行削除
  1. 2 0
      dp/wifi3.0/be/dp_be_rx.c
  2. 5 4
      dp/wifi3.0/dp_stats.c

+ 2 - 0
dp/wifi3.0/be/dp_be_rx.c

@@ -565,6 +565,7 @@ done:
 
 		rx_bufs_used++;
 
+#ifdef DP_MLO_LINK_STATS_SUPPORT
 		/* MLD Link Peer Statistics support */
 		if (txrx_peer->is_mld_peer && rx_pdev->link_peer_stats) {
 			link_id = ((dp_rx_get_msdu_hw_link_id(nbuf)) + 1);
@@ -573,6 +574,7 @@ done:
 		} else {
 			link_id = 0;
 		}
+#endif
 
 		/* when hlos tid override is enabled, save tid in
 		 * skb->priority

+ 5 - 4
dp/wifi3.0/dp_stats.c

@@ -8565,10 +8565,11 @@ void dp_update_vdev_stats_on_peer_unmap(struct dp_vdev *vdev,
 
 	if (IS_MLO_DP_LINK_PEER(peer)) {
 		link_id = dp_get_peer_hw_link_id(soc, pdev);
-		per_pkt_stats = &txrx_peer->
-				stats[link_id].per_pkt_stats;
-		DP_UPDATE_PER_PKT_STATS(vdev_stats,
-					per_pkt_stats);
+		if (link_id > 0) {
+			per_pkt_stats =
+				&txrx_peer->stats[link_id].per_pkt_stats;
+			DP_UPDATE_PER_PKT_STATS(vdev_stats, per_pkt_stats);
+		}
 	}
 
 link_stats: