Browse Source

qcacmn: Fix for missing M2/M4 connectivity log

Issue is: During roaming when tx completion status for M2/M4 frames
are received before peer_id mapping is done, opmode is left to its
default value QDF_MAX_NO_OF_MODE. Because of this opmode value
connectivity log is skipped.

Fix is: In tx completion status path, if peer is NULL then derive
the vdev from the tx descriptor vdev_id, extract and set op_mode.

Change-Id: I4a15b01e792bf26276f529e64c67b0ba3ea5c9ac
CRs-Fixed: 3646119
Srinivas Girigowda 1 year ago
parent
commit
a9395459c0
1 changed files with 8 additions and 0 deletions
  1. 8 0
      dp/wifi3.0/dp_tx.c

+ 8 - 0
dp/wifi3.0/dp_tx.c

@@ -6065,6 +6065,14 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
 	if (!txrx_peer) {
 		dp_info_rl("peer is null or deletion in progress");
 		DP_STATS_INC_PKT(soc, tx.tx_invalid_peer, 1, length);
+
+		vdev = dp_vdev_get_ref_by_id(soc, tx_desc->vdev_id,
+					     DP_MOD_ID_CDP);
+		if (qdf_likely(vdev)) {
+			op_mode = vdev->qdf_opmode;
+			dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP);
+		}
+
 		goto out_log;
 	}
 	vdev = txrx_peer->vdev;