diff --git a/components/pmo/core/inc/wlan_pmo_objmgr.h b/components/pmo/core/inc/wlan_pmo_objmgr.h index 44600253e9a8..b82d70d78fbe 100644 --- a/components/pmo/core/inc/wlan_pmo_objmgr.h +++ b/components/pmo/core/inc/wlan_pmo_objmgr.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2020 The Linux Foundation. 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 @@ -41,7 +41,6 @@ #define pmo_peer_put_ref(peer) wlan_objmgr_peer_release_ref(peer, WLAN_PMO_ID) #define pmo_vdev_get_ref(vdev) wlan_objmgr_vdev_try_get_ref(vdev, WLAN_PMO_ID) -#define pmo_vdev_put_ref(vdev) wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID) #define pmo_pdev_get_ref(pdev) wlan_objmgr_pdev_try_get_ref(pdev, WLAN_PMO_ID) #define pmo_pdev_put_ref(pdev) wlan_objmgr_pdev_release_ref(pdev, WLAN_PMO_ID) @@ -120,21 +119,6 @@ pmo_vdev_get_id(struct wlan_objmgr_vdev *vdev) /* Tree Navigation: psoc */ -static inline struct wlan_objmgr_vdev * -pmo_psoc_get_vdev(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id) -{ - struct wlan_objmgr_vdev *vdev; - - if (vdev_id >= WLAN_UMAC_PSOC_MAX_VDEVS) - return NULL; - - wlan_psoc_obj_lock(psoc); - vdev = psoc->soc_objmgr.wlan_vdev_list[vdev_id]; - wlan_psoc_obj_unlock(psoc); - - return vdev; -} - static inline struct pmo_psoc_priv_obj * pmo_psoc_get_priv(struct wlan_objmgr_psoc *psoc) { diff --git a/components/pmo/core/src/wlan_pmo_arp.c b/components/pmo/core/src/wlan_pmo_arp.c index 55ec5404f038..c40e4a2e8fe5 100644 --- a/components/pmo/core/src/wlan_pmo_arp.c +++ b/components/pmo/core/src/wlan_pmo_arp.c @@ -214,21 +214,17 @@ QDF_STATUS pmo_core_arp_check_offload(struct wlan_objmgr_psoc *psoc, bool active_offload_cond, is_applied_cond; enum QDF_OPMODE opmode; - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_INVAL; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - opmode = pmo_get_vdev_opmode(vdev); if (opmode == QDF_NDI_MODE) { pmo_debug("ARP offload is not supported in NaN mode"); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); return QDF_STATUS_E_INVAL; } @@ -245,11 +241,11 @@ QDF_STATUS pmo_core_arp_check_offload(struct wlan_objmgr_psoc *psoc, if (active_offload_cond && is_applied_cond) { pmo_debug("active offload is enabled and offload already sent"); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); return QDF_STATUS_E_INVAL; } } - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; } @@ -271,17 +267,15 @@ QDF_STATUS pmo_core_cache_arp_offload_req(struct pmo_arp_req *arp_req) goto out; } - vdev = pmo_psoc_get_vdev(arp_req->psoc, arp_req->vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(arp_req->psoc, + arp_req->vdev_id, + WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_INVAL; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - status = pmo_core_arp_offload_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto dec_ref; @@ -291,7 +285,7 @@ QDF_STATUS pmo_core_cache_arp_offload_req(struct pmo_arp_req *arp_req) status = pmo_core_cache_arp_in_vdev_priv(arp_req, vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -322,7 +316,7 @@ QDF_STATUS pmo_core_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev) status = pmo_core_flush_arp_from_vdev_priv(vdev); def_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -356,7 +350,7 @@ QDF_STATUS pmo_core_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev, status = pmo_core_do_enable_arp_offload(vdev, vdev_id, trigger); put_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out:; return status; @@ -388,7 +382,7 @@ QDF_STATUS pmo_core_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev, status = pmo_core_do_disable_arp_offload(vdev, vdev_id, trigger); def_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -430,7 +424,7 @@ pmo_core_get_arp_offload_params(struct wlan_objmgr_vdev *vdev, qdf_spin_unlock_bh(&vdev_ctx->pmo_vdev_lock); put_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); diff --git a/components/pmo/core/src/wlan_pmo_gtk.c b/components/pmo/core/src/wlan_pmo_gtk.c index 426475253abe..d62fbb1c7685 100644 --- a/components/pmo/core/src/wlan_pmo_gtk.c +++ b/components/pmo/core/src/wlan_pmo_gtk.c @@ -216,7 +216,7 @@ QDF_STATUS pmo_core_cache_gtk_offload_req(struct wlan_objmgr_vdev *vdev, status = pmo_core_cache_gtk_req_in_vdev_priv(vdev, gtk_req); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -250,7 +250,7 @@ QDF_STATUS pmo_core_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev) status = pmo_core_flush_gtk_req_from_vdev_priv(vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -282,7 +282,7 @@ QDF_STATUS pmo_core_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev) } status = pmo_core_do_enable_gtk_offload(vdev, vdev_ctx, op_gtk_req); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: if (op_gtk_req) qdf_mem_free(op_gtk_req); @@ -318,7 +318,7 @@ QDF_STATUS pmo_core_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev) status = pmo_core_do_disable_gtk_offload(vdev, vdev_ctx, op_gtk_req); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: if (op_gtk_req) qdf_mem_free(op_gtk_req); @@ -358,7 +358,7 @@ QDF_STATUS pmo_core_get_gtk_rsp(struct wlan_objmgr_vdev *vdev, /* send cmd to fwr */ status = pmo_tgt_get_gtk_rsp(vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); diff --git a/components/pmo/core/src/wlan_pmo_hw_filter.c b/components/pmo/core/src/wlan_pmo_hw_filter.c index 328872a3ac1c..bdee718502bb 100644 --- a/components/pmo/core/src/wlan_pmo_hw_filter.c +++ b/components/pmo/core/src/wlan_pmo_hw_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2020 The Linux Foundation. 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 @@ -41,7 +41,7 @@ QDF_STATUS pmo_core_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev) if (wlan_vdev_is_up(vdev) != QDF_STATUS_SUCCESS) { status = QDF_STATUS_E_NOSUPPORT; - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); goto exit_with_status; } @@ -55,7 +55,7 @@ QDF_STATUS pmo_core_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev) req.enable = true; status = pmo_tgt_conf_hw_filter(pmo_vdev_get_psoc(vdev), &req); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); exit_with_status: pmo_exit(); @@ -78,7 +78,7 @@ QDF_STATUS pmo_core_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev) if (wlan_vdev_is_up(vdev) != QDF_STATUS_SUCCESS) { status = QDF_STATUS_E_NOSUPPORT; - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); goto exit_with_status; } @@ -92,7 +92,7 @@ QDF_STATUS pmo_core_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev) req.enable = false; status = pmo_tgt_conf_hw_filter(pmo_vdev_get_psoc(vdev), &req); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); exit_with_status: pmo_exit(); diff --git a/components/pmo/core/src/wlan_pmo_mc_addr_filtering.c b/components/pmo/core/src/wlan_pmo_mc_addr_filtering.c index 8bc24fbf7da6..606776b29064 100644 --- a/components/pmo/core/src/wlan_pmo_mc_addr_filtering.c +++ b/components/pmo/core/src/wlan_pmo_mc_addr_filtering.c @@ -113,7 +113,7 @@ QDF_STATUS pmo_core_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev) pmo_tgt_send_enhance_multicast_offload_req(vdev, true); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); exit_with_status: @@ -132,7 +132,7 @@ QDF_STATUS pmo_core_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev) pmo_tgt_send_enhance_multicast_offload_req(vdev, false); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); exit_with_status: pmo_exit(); @@ -248,29 +248,22 @@ uint8_t pmo_core_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc) int pmo_core_get_mc_addr_list_count(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id) { - QDF_STATUS status; struct wlan_objmgr_vdev *vdev; struct pmo_vdev_priv_obj *vdev_ctx; uint8_t mc_cnt; - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); return PMO_INVALID_MC_ADDR_COUNT; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) { - pmo_warn("failed to get vdev reference"); - return PMO_INVALID_MC_ADDR_COUNT; - } - vdev_ctx = pmo_vdev_get_priv(vdev); qdf_spin_lock_bh(&vdev_ctx->pmo_vdev_lock); mc_cnt = vdev_ctx->vdev_mc_list_req.mc_cnt; qdf_spin_unlock_bh(&vdev_ctx->pmo_vdev_lock); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); return mc_cnt; } @@ -278,28 +271,21 @@ int pmo_core_get_mc_addr_list_count(struct wlan_objmgr_psoc *psoc, void pmo_core_set_mc_addr_list_count(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, uint8_t count) { - QDF_STATUS status; struct pmo_vdev_priv_obj *vdev_ctx; struct wlan_objmgr_vdev *vdev; - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); return; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) { - pmo_warn("failed to get vdev reference"); - return; - } - vdev_ctx = pmo_vdev_get_priv(vdev); qdf_spin_lock_bh(&vdev_ctx->pmo_vdev_lock); vdev_ctx->vdev_mc_list_req.mc_cnt = count; qdf_spin_unlock_bh(&vdev_ctx->pmo_vdev_lock); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); } static QDF_STATUS pmo_core_mc_addr_flitering_sanity( @@ -346,20 +332,15 @@ QDF_STATUS pmo_core_cache_mc_addr_list( goto out; } - vdev = pmo_psoc_get_vdev(mc_list_config->psoc, mc_list_config->vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mc_list_config->psoc, + mc_list_config->vdev_id, + WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_NULL_VALUE; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) { - pmo_warn("failed to get vdev reference"); - status = QDF_STATUS_E_INVAL; - goto out; - } - status = pmo_core_mc_addr_flitering_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto dec_ref; @@ -370,7 +351,7 @@ QDF_STATUS pmo_core_cache_mc_addr_list( status = pmo_core_cache_mc_addr_list_in_vdev_priv(mc_list_config, vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -388,20 +369,13 @@ QDF_STATUS pmo_core_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc, goto out; } - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_NULL_VALUE; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) { - pmo_warn("failed to get vdev reference"); - status = QDF_STATUS_E_INVAL; - goto out; - } - status = pmo_core_mc_addr_flitering_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto dec_ref; @@ -412,7 +386,7 @@ QDF_STATUS pmo_core_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc, status = pmo_core_flush_mc_addr_list_from_vdev_priv(vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -479,17 +453,13 @@ QDF_STATUS pmo_core_enable_mc_addr_filtering_in_fwr( if (QDF_IS_STATUS_ERROR(status)) goto exit_with_status; - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_INVAL; goto put_psoc; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto put_psoc; - status = pmo_core_mc_addr_flitering_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto put_vdev; @@ -503,7 +473,7 @@ QDF_STATUS pmo_core_enable_mc_addr_filtering_in_fwr( status = pmo_core_handle_enable_mc_list_trigger(vdev, trigger); put_vdev: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); put_psoc: pmo_psoc_put_ref(psoc); @@ -576,17 +546,13 @@ QDF_STATUS pmo_core_disable_mc_addr_filtering_in_fwr( goto out; } - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_NULL_VALUE; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - status = pmo_core_mc_addr_flitering_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto put_ref; @@ -601,7 +567,7 @@ QDF_STATUS pmo_core_disable_mc_addr_filtering_in_fwr( status = pmo_core_handle_disable_mc_list_trigger(vdev, trigger); put_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: @@ -628,17 +594,13 @@ pmo_core_get_mc_addr_list(struct wlan_objmgr_psoc *psoc, if (QDF_IS_STATUS_ERROR(status)) goto exit_with_status; - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_INVAL; goto put_psoc; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto put_psoc; - status = pmo_core_mc_addr_flitering_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto put_vdev; @@ -649,7 +611,7 @@ pmo_core_get_mc_addr_list(struct wlan_objmgr_psoc *psoc, qdf_spin_unlock_bh(&vdev_ctx->pmo_vdev_lock); put_vdev: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); put_psoc: pmo_psoc_put_ref(psoc); diff --git a/components/pmo/core/src/wlan_pmo_ns.c b/components/pmo/core/src/wlan_pmo_ns.c index 1942be8131cd..eaf58ff33413 100644 --- a/components/pmo/core/src/wlan_pmo_ns.c +++ b/components/pmo/core/src/wlan_pmo_ns.c @@ -253,21 +253,17 @@ QDF_STATUS pmo_core_ns_check_offload(struct wlan_objmgr_psoc *psoc, bool active_offload_cond, is_applied_cond; enum QDF_OPMODE opmode; - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_INVAL; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - opmode = pmo_get_vdev_opmode(vdev); if (opmode == QDF_NDI_MODE) { pmo_debug("NS offload not supported in NaN mode"); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); return QDF_STATUS_E_INVAL; } @@ -284,11 +280,11 @@ QDF_STATUS pmo_core_ns_check_offload(struct wlan_objmgr_psoc *psoc, if (active_offload_cond && is_applied_cond) { pmo_debug("active offload is enabled and offload already sent"); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); return QDF_STATUS_E_INVAL; } } - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; } @@ -310,17 +306,15 @@ QDF_STATUS pmo_core_cache_ns_offload_req(struct pmo_ns_req *ns_req) goto out; } - vdev = pmo_psoc_get_vdev(ns_req->psoc, ns_req->vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(ns_req->psoc, + ns_req->vdev_id, + WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); status = QDF_STATUS_E_INVAL; goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - status = pmo_core_ns_offload_sanity(vdev); if (status != QDF_STATUS_SUCCESS) goto dec_ref; @@ -333,7 +327,7 @@ QDF_STATUS pmo_core_cache_ns_offload_req(struct pmo_ns_req *ns_req) status = pmo_core_cache_ns_in_vdev_priv(ns_req, vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -364,7 +358,7 @@ QDF_STATUS pmo_core_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev) status = pmo_core_flush_ns_from_vdev_priv(vdev); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -423,7 +417,7 @@ skip_ns_dynamic_check: vdev_id, vdev, trigger); status = pmo_core_do_enable_ns_offload(vdev, vdev_id, trigger); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; @@ -474,7 +468,7 @@ skip_ns_dynamic_check: status = pmo_core_do_disable_ns_offload(vdev, vdev_id, trigger); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -516,7 +510,7 @@ pmo_core_get_ns_offload_params(struct wlan_objmgr_vdev *vdev, qdf_spin_unlock_bh(&vdev_ctx->pmo_vdev_lock); dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); diff --git a/components/pmo/core/src/wlan_pmo_suspend_resume.c b/components/pmo/core/src/wlan_pmo_suspend_resume.c index f9d58d024e80..3a27602d3f25 100644 --- a/components/pmo/core/src/wlan_pmo_suspend_resume.c +++ b/components/pmo/core/src/wlan_pmo_suspend_resume.c @@ -316,7 +316,6 @@ static void pmo_core_set_suspend_dtim(struct wlan_objmgr_psoc *psoc) struct pmo_vdev_priv_obj *vdev_ctx; struct pmo_psoc_priv_obj *psoc_ctx; bool li_offload_support = false; - QDF_STATUS status; pmo_psoc_with_ctx(psoc, psoc_ctx) { li_offload_support = psoc_ctx->caps.li_offload; @@ -327,20 +326,17 @@ static void pmo_core_set_suspend_dtim(struct wlan_objmgr_psoc *psoc) /* Iterate through VDEV list */ for (vdev_id = 0; vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS; vdev_id++) { - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_PMO_ID); if (!vdev) continue; - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - continue; - vdev_ctx = pmo_vdev_get_priv(vdev); if (!pmo_is_listen_interval_user_set(vdev_ctx) && !li_offload_support) pmo_core_set_vdev_suspend_dtim(psoc, vdev, vdev_ctx); pmo_configure_vdev_suspend_params(psoc, vdev, vdev_ctx); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); } } @@ -386,7 +382,8 @@ void pmo_core_configure_dynamic_wake_events(struct wlan_objmgr_psoc *psoc) qdf_mem_zero(enable_mask, sizeof(uint32_t) * BM_LEN); qdf_mem_zero(disable_mask, sizeof(uint32_t) * BM_LEN); - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_PMO_ID); if (!vdev) continue; @@ -433,19 +430,16 @@ static void pmo_core_enable_runtime_pm_offloads(struct wlan_objmgr_psoc *psoc) { uint8_t vdev_id; struct wlan_objmgr_vdev *vdev; - QDF_STATUS status; /* Iterate through VDEV list */ for (vdev_id = 0; vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS; vdev_id++) { - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_PMO_ID); if (!vdev) continue; - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - continue; pmo_register_action_frame_patterns(vdev, QDF_RUNTIME_SUSPEND); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); } } @@ -462,7 +456,7 @@ static void pmo_core_disable_runtime_pm_offloads(struct wlan_objmgr_psoc *psoc) continue; pmo_clear_action_frame_patterns(vdev); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); } } @@ -602,7 +596,6 @@ static void pmo_core_set_resume_dtim(struct wlan_objmgr_psoc *psoc) struct pmo_vdev_priv_obj *vdev_ctx; struct pmo_psoc_priv_obj *psoc_ctx; bool li_offload_support = false; - QDF_STATUS status; pmo_psoc_with_ctx(psoc, psoc_ctx) { li_offload_support = psoc_ctx->caps.li_offload; @@ -613,20 +606,17 @@ static void pmo_core_set_resume_dtim(struct wlan_objmgr_psoc *psoc) /* Iterate through VDEV list */ for (vdev_id = 0; vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS; vdev_id++) { - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_PMO_ID); if (!vdev) continue; - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - continue; - vdev_ctx = pmo_vdev_get_priv(vdev); if (!pmo_is_listen_interval_user_set(vdev_ctx) && !li_offload_support) pmo_core_set_vdev_resume_dtim(psoc, vdev, vdev_ctx); pmo_configure_vdev_resume_params(psoc, vdev, vdev_ctx); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); } } @@ -1575,7 +1565,7 @@ QDF_STATUS pmo_core_config_listen_interval(struct wlan_objmgr_vdev *vdev, } dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -1616,7 +1606,7 @@ QDF_STATUS pmo_core_config_modulated_dtim(struct wlan_objmgr_vdev *vdev, if (!max_dtim) { pmo_err("Invalid dtim period"); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); return QDF_STATUS_E_INVAL; } @@ -1665,7 +1655,7 @@ QDF_STATUS pmo_core_config_modulated_dtim(struct wlan_objmgr_vdev *vdev, } } - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); return status; diff --git a/components/pmo/core/src/wlan_pmo_wow.c b/components/pmo/core/src/wlan_pmo_wow.c index 7f77c8156b5f..da64fe03524b 100644 --- a/components/pmo/core/src/wlan_pmo_wow.c +++ b/components/pmo/core/src/wlan_pmo_wow.c @@ -66,7 +66,7 @@ QDF_STATUS pmo_core_del_wow_pattern(struct wlan_objmgr_vdev *vdev) for (id = 0; id < pattern_count; id++) status = pmo_tgt_del_wow_pattern(vdev, id, true); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: return status; } @@ -130,7 +130,7 @@ QDF_STATUS pmo_core_add_wow_user_pattern(struct wlan_objmgr_vdev *vdev, if (status != QDF_STATUS_SUCCESS) pmo_err("Failed to add wow pattern %d", ptrn->pattern_id); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -164,7 +164,7 @@ QDF_STATUS pmo_core_del_wow_user_pattern(struct wlan_objmgr_vdev *vdev, if (!pmo_get_wow_user_ptrn(vdev_ctx)) pmo_register_wow_default_patterns(vdev); rel_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -175,7 +175,6 @@ void pmo_core_enable_wakeup_event(struct wlan_objmgr_psoc *psoc, uint32_t vdev_id, WOW_WAKE_EVENT_TYPE wow_event) { - QDF_STATUS status; struct wlan_objmgr_vdev *vdev; uint32_t bitmap[PMO_WOW_MAX_EVENT_BM_LEN] = {0}; @@ -186,21 +185,17 @@ void pmo_core_enable_wakeup_event(struct wlan_objmgr_psoc *psoc, goto out; } - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - pmo_set_wow_event_bitmap(wow_event, PMO_WOW_MAX_EVENT_BM_LEN, bitmap); pmo_tgt_enable_wow_wakeup_event(vdev, bitmap); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit(); @@ -210,7 +205,6 @@ void pmo_core_disable_wakeup_event(struct wlan_objmgr_psoc *psoc, uint32_t vdev_id, WOW_WAKE_EVENT_TYPE wow_event) { - QDF_STATUS status; struct wlan_objmgr_vdev *vdev; uint32_t bitmap[PMO_WOW_MAX_EVENT_BM_LEN] = {0}; @@ -219,21 +213,17 @@ void pmo_core_disable_wakeup_event(struct wlan_objmgr_psoc *psoc, return; } - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is NULL"); return; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - return; - pmo_set_wow_event_bitmap(wow_event, PMO_WOW_MAX_EVENT_BM_LEN, bitmap); pmo_tgt_disable_wow_wakeup_event(vdev, bitmap); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); } /** @@ -249,23 +239,19 @@ bool pmo_is_beaconing_vdev_up(struct wlan_objmgr_psoc *psoc) struct wlan_objmgr_vdev *vdev; enum QDF_OPMODE vdev_opmode; bool is_beaconing; - QDF_STATUS status; /* Iterate through VDEV list */ for (vdev_id = 0; vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS; vdev_id++) { - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_PMO_ID); if (!vdev) continue; - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - continue; - vdev_opmode = pmo_get_vdev_opmode(vdev); is_beaconing = pmo_is_vdev_in_beaconning_mode(vdev_opmode) && QDF_IS_STATUS_SUCCESS(wlan_vdev_is_up(vdev)); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); if (is_beaconing) return true; @@ -298,7 +284,6 @@ bool pmo_core_is_wow_applicable(struct wlan_objmgr_psoc *psoc) int vdev_id; struct wlan_objmgr_vdev *vdev; bool is_wow_applicable = false; - QDF_STATUS status; if (!psoc) { pmo_err("psoc is null"); @@ -327,14 +312,11 @@ bool pmo_core_is_wow_applicable(struct wlan_objmgr_psoc *psoc) /* Iterate through VDEV list */ for (vdev_id = 0; vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS; vdev_id++) { - vdev = pmo_psoc_get_vdev(psoc, vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_PMO_ID); if (!vdev) continue; - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - continue; - if (wlan_vdev_is_up(vdev) == QDF_STATUS_SUCCESS) { pmo_debug("STA is connected, enabling wow"); is_wow_applicable = true; @@ -353,7 +335,7 @@ bool pmo_core_is_wow_applicable(struct wlan_objmgr_psoc *psoc) is_wow_applicable = true; } - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); if (is_wow_applicable) return true; diff --git a/components/pmo/dispatcher/src/wlan_pmo_obj_mgmt_api.c b/components/pmo/dispatcher/src/wlan_pmo_obj_mgmt_api.c index a181330d9bbe..390a99e06ffe 100644 --- a/components/pmo/dispatcher/src/wlan_pmo_obj_mgmt_api.c +++ b/components/pmo/dispatcher/src/wlan_pmo_obj_mgmt_api.c @@ -282,7 +282,7 @@ QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev) /* Register default wow patterns with firmware */ pmo_register_wow_default_patterns(vdev); - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); /* * The above APIs should return a status but don't. diff --git a/components/pmo/dispatcher/src/wlan_pmo_tgt_gtk.c b/components/pmo/dispatcher/src/wlan_pmo_tgt_gtk.c index cfd5de72d964..ceb7e449945c 100644 --- a/components/pmo/dispatcher/src/wlan_pmo_tgt_gtk.c +++ b/components/pmo/dispatcher/src/wlan_pmo_tgt_gtk.c @@ -129,7 +129,8 @@ QDF_STATUS pmo_tgt_gtk_rsp_evt(struct wlan_objmgr_psoc *psoc, goto out; } - vdev = pmo_psoc_get_vdev(psoc, rsp_param->vdev_id); + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, rsp_param->vdev_id, + WLAN_PMO_ID); if (!vdev) { pmo_err("vdev is null vdev_id:%d psoc:%pK", rsp_param->vdev_id, psoc); @@ -137,10 +138,6 @@ QDF_STATUS pmo_tgt_gtk_rsp_evt(struct wlan_objmgr_psoc *psoc, goto out; } - status = pmo_vdev_get_ref(vdev); - if (QDF_IS_STATUS_ERROR(status)) - goto out; - vdev_ctx = pmo_vdev_get_priv(vdev); status = pmo_get_vdev_bss_peer_mac_addr(vdev, &rsp_param->bssid); @@ -169,7 +166,7 @@ QDF_STATUS pmo_tgt_gtk_rsp_evt(struct wlan_objmgr_psoc *psoc, } dec_ref: - pmo_vdev_put_ref(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_PMO_ID); out: pmo_exit();