From 7157add22c1661a2d24b75c4d031350f9d69ce6c Mon Sep 17 00:00:00 2001 From: Sai Rupesh Chevuru Date: Fri, 28 Jul 2023 12:48:42 +0530 Subject: [PATCH] qcacmn: Avoid wdi events for bss peer As the bss peer is closely tied with the vdev creation and deletion, listeners might be uninitialized and result race conditions. send an event only to the connected peers. Change-Id: Ia0ae063c92bba38d2fb67fe4eae84f5562991fa2 CRs-Fixed: 3574176 --- dp/inc/cdp_txrx_cmn_struct.h | 2 +- dp/wifi3.0/dp_main.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index bc5540a524..c4e2f7ea7f 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -3245,7 +3245,7 @@ struct cdp_pdev_attach_params { * @pdev_id: PDEV ID */ struct cdp_txrx_peer_params_update { - uint8_t vdev_id; + uint8_t vdev_id; uint8_t *peer_mac; uint8_t chip_id; uint8_t pdev_id; diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 30450a9330..cded70c875 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -4591,12 +4591,14 @@ static QDF_STATUS dp_txrx_peer_detach(struct dp_soc *soc, struct dp_peer *peer) peer->txrx_peer = NULL; pdev = txrx_peer->vdev->pdev; - params.vdev_id = peer->vdev->vdev_id; - params.peer_mac = peer->mac_addr.raw; + if (!peer->bss_peer) { + params.vdev_id = peer->vdev->vdev_id; + params.peer_mac = peer->mac_addr.raw; - dp_wdi_event_handler(WDI_EVENT_PEER_DELETE, soc, - (void *)¶ms, peer->peer_id, - WDI_NO_VAL, pdev->pdev_id); + dp_wdi_event_handler(WDI_EVENT_PEER_DELETE, soc, + (void *)¶ms, peer->peer_id, + WDI_NO_VAL, pdev->pdev_id); + } dp_peer_defrag_rx_tids_deinit(txrx_peer); /* @@ -4683,6 +4685,9 @@ static QDF_STATUS dp_txrx_peer_attach(struct dp_soc *soc, struct dp_peer *peer) dp_txrx_peer_attach_add(soc, peer, txrx_peer); + if (peer->bss_peer) + return QDF_STATUS_SUCCESS; + params.peer_mac = peer->mac_addr.raw; params.vdev_id = peer->vdev->vdev_id; params.chip_id = dp_mlo_get_chip_id(soc);