qcacmn: Add vdev delete notify callback
Add vdev delete notify callback for DP vdev, which is called when dp_vdev is freed. This will notify the osif/non-cmn dp layer upon dp_vdev delete. Change-Id: I22110ebd048066e84644c04b4903c50dd61c61a4 CRs-Fixed: 3696638
This commit is contained in:

committed by
Ravindra Konda

parent
37cd1d31ac
commit
a5c5711971
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -4984,6 +4984,7 @@ static QDF_STATUS dp_vdev_register_wifi3(struct cdp_soc_t *soc_hdl,
|
||||
#endif
|
||||
vdev->me_convert = txrx_ops->me_convert;
|
||||
vdev->get_tsf_time = txrx_ops->get_tsf_time;
|
||||
vdev->vdev_del_notify = txrx_ops->vdev_del_notify;
|
||||
|
||||
dp_vdev_register_rx_eapol(vdev, txrx_ops);
|
||||
|
||||
@@ -6339,6 +6340,8 @@ void dp_vdev_unref_delete(struct dp_soc *soc, struct dp_vdev *vdev,
|
||||
{
|
||||
ol_txrx_vdev_delete_cb vdev_delete_cb = NULL;
|
||||
void *vdev_delete_context = NULL;
|
||||
ol_txrx_vdev_delete_cb vdev_del_notify = NULL;
|
||||
void *vdev_del_noitfy_ctx = NULL;
|
||||
uint8_t vdev_id = vdev->vdev_id;
|
||||
struct dp_pdev *pdev = vdev->pdev;
|
||||
struct dp_vdev *tmp_vdev = NULL;
|
||||
@@ -6361,8 +6364,12 @@ void dp_vdev_unref_delete(struct dp_soc *soc, struct dp_vdev *vdev,
|
||||
vdev_delete_cb = vdev->delete.callback;
|
||||
vdev_delete_context = vdev->delete.context;
|
||||
|
||||
dp_info("deleting vdev object %pK ("QDF_MAC_ADDR_FMT")- its last peer is done",
|
||||
vdev, QDF_MAC_ADDR_REF(vdev->mac_addr.raw));
|
||||
vdev_del_notify = vdev->vdev_del_notify;
|
||||
vdev_del_noitfy_ctx = vdev->osif_vdev;
|
||||
|
||||
dp_info("deleting vdev object %pK (" QDF_MAC_ADDR_FMT ")%s",
|
||||
vdev, QDF_MAC_ADDR_REF(vdev->mac_addr.raw),
|
||||
vdev_del_notify ? " with del_notify" : "");
|
||||
|
||||
if (wlan_op_mode_monitor == vdev->opmode) {
|
||||
dp_monitor_vdev_delete(soc, vdev);
|
||||
@@ -6394,8 +6401,6 @@ free_vdev:
|
||||
|
||||
dp_cfg_event_record_vdev_evt(soc, DP_CFG_EVENT_VDEV_UNREF_DEL,
|
||||
vdev);
|
||||
dp_info("deleting vdev object %pK ("QDF_MAC_ADDR_FMT")",
|
||||
vdev, QDF_MAC_ADDR_REF(vdev->mac_addr.raw));
|
||||
wlan_minidump_remove(vdev, sizeof(*vdev), soc->ctrl_psoc,
|
||||
WLAN_MD_DP_VDEV, "dp_vdev");
|
||||
qdf_mem_free(vdev);
|
||||
@@ -6403,6 +6408,9 @@ free_vdev:
|
||||
|
||||
if (vdev_delete_cb)
|
||||
vdev_delete_cb(vdev_delete_context);
|
||||
|
||||
if (vdev_del_notify)
|
||||
vdev_del_notify(vdev_del_noitfy_ctx);
|
||||
}
|
||||
|
||||
qdf_export_symbol(dp_vdev_unref_delete);
|
||||
|
Reference in New Issue
Block a user