From e1c2e73b6c17f46c81684947aba6d2f17f9df9dd Mon Sep 17 00:00:00 2001 From: Jinwei Chen Date: Fri, 8 May 2020 15:58:40 +0800 Subject: [PATCH] qcacmn: move vdev_id_map[vdev_id] null setting after dp_rx_vdev_detach In dp_vdev_detach_wifi3(), the vdev_id_map[vdev_id] set to null is happened before dp_rx_vdev_detach(). but the call back done by dp_rx_vdev_detach still need to get the vdev pointer by vdev_id, it will return NULL by current logic. Move vdev_id_map[vdev_id] null setting after dp_rx_vdev_detach(). Change-Id: Ibaf506cfef83d68a21033e67395c37f53aeb4489 CRs-Fixed: 2681712 --- dp/wifi3.0/dp_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 6595d8f692..430007389b 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -4946,8 +4946,6 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, pdev = vdev->pdev; - soc->vdev_id_map[vdev->vdev_id] = NULL; - if (wlan_op_mode_sta == vdev->opmode) { if (vdev->vap_self_peer) dp_peer_delete_wifi3((struct cdp_soc_t *)soc, @@ -4969,6 +4967,12 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, dp_vdev_flush_peers((struct cdp_vdev *)vdev, true); dp_rx_vdev_detach(vdev); + /* + * move it after dp_rx_vdev_detach(), + * as the call back done in dp_rx_vdev_detach() + * still need to get vdev pointer by vdev_id. + */ + soc->vdev_id_map[vdev->vdev_id] = NULL; /* * Use peer_ref_mutex while accessing peer_list, in case * a peer is in the process of being removed from the list.