From 173f9e6b1d34aa2dbc2e69358710b5df22e013e2 Mon Sep 17 00:00:00 2001 From: Neha Bisht Date: Mon, 25 Jul 2022 10:25:36 +0530 Subject: [PATCH] qcacmn: Use cpu index for tx. ring id The list of SW descriptors that we create from the HW descriptors in DP Tx completion path is corrupted in intra-bss path. This is causing a crash when corrupted descriptor is accessed. The cause of corruption seems to be due to incorrect rings being accessed. Use cpu index to fetch tx. ring IDs. Change-Id: I5342b7c4e24df983900fde79f36df8395bf628cb CRs-Fixed: 3223420 --- dp/wifi3.0/dp_rx.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 83194fbc34..3154053590 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -866,7 +866,6 @@ bool dp_rx_intrabss_mcbc_fwd(struct dp_soc *soc, struct dp_txrx_peer *ta_peer, { uint16_t len; qdf_nbuf_t nbuf_copy; - uint8_t ring_id = QDF_NBUF_CB_RX_CTX_ID(nbuf); if (dp_rx_intrabss_eapol_drop_check(soc, ta_peer, rx_tlv_hdr, nbuf)) @@ -890,7 +889,7 @@ bool dp_rx_intrabss_mcbc_fwd(struct dp_soc *soc, struct dp_txrx_peer *ta_peer, qdf_mem_set(nbuf_copy->cb, 0x0, sizeof(nbuf_copy->cb)); dp_classify_critical_pkts(soc, ta_peer->vdev, nbuf_copy); - dp_rx_nbuf_queue_mapping_set(nbuf_copy, ring_id); + dp_rx_nbuf_queue_mapping_set(nbuf_copy, qdf_get_cpu()); if (soc->arch_ops.dp_rx_intrabss_handle_nawds(soc, ta_peer, nbuf_copy, tid_stats)) return false; @@ -927,7 +926,6 @@ bool dp_rx_intrabss_ucast_fwd(struct dp_soc *soc, struct dp_txrx_peer *ta_peer, struct cdp_tid_rx_stats *tid_stats) { uint16_t len; - uint8_t ring_id = QDF_NBUF_CB_RX_CTX_ID(nbuf); len = QDF_NBUF_CB_RX_PKT_LEN(nbuf); @@ -956,7 +954,7 @@ bool dp_rx_intrabss_ucast_fwd(struct dp_soc *soc, struct dp_txrx_peer *ta_peer, qdf_mem_set(nbuf->cb, 0x0, sizeof(nbuf->cb)); dp_classify_critical_pkts(soc, ta_peer->vdev, nbuf); - dp_rx_nbuf_queue_mapping_set(nbuf, ring_id); + dp_rx_nbuf_queue_mapping_set(nbuf, qdf_get_cpu()); if (!dp_tx_send((struct cdp_soc_t *)soc, tx_vdev_id, nbuf)) { DP_PEER_PER_PKT_STATS_INC_PKT(ta_peer, rx.intra_bss.pkts, 1,