qcacld-3.0: Get/Release ref_cnt for objects store and release
Add get and release reference counts for PSOC/PDEV/VDEV/PEER objects reference storing and releasing as per the latest reference count implementation. Change-Id: I1715be7f8e47b52fa36bb070443051dd99703eb0 CRs-Fixed: 2001058
This commit is contained in:

committed by
qcabuildsw

parent
b4272f9466
commit
3a1823f12d
@@ -53,6 +53,8 @@ int hdd_release_and_destroy_psoc(hdd_context_t *hdd_ctx)
|
|||||||
if (!psoc)
|
if (!psoc)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
wlan_objmgr_print_ref_all_objects_per_psoc(psoc);
|
||||||
|
|
||||||
return qdf_status_to_os_return(wlan_objmgr_psoc_obj_delete(psoc));
|
return qdf_status_to_os_return(wlan_objmgr_psoc_obj_delete(psoc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,9 +125,8 @@ int hdd_create_and_store_vdev(struct wlan_objmgr_pdev *pdev,
|
|||||||
wlan_objmgr_vdev_obj_delete(vdev);
|
wlan_objmgr_vdev_obj_delete(vdev);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
adapter->hdd_vdev = vdev;
|
|
||||||
|
|
||||||
wlan_objmgr_peer_ref_peer(peer);
|
adapter->hdd_vdev = vdev;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -177,7 +178,6 @@ int hdd_add_peer_object(struct wlan_objmgr_vdev *vdev,
|
|||||||
if (!peer)
|
if (!peer)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
wlan_objmgr_peer_ref_peer(peer);
|
|
||||||
hdd_info("Peer object "MAC_ADDRESS_STR" add success!",
|
hdd_info("Peer object "MAC_ADDRESS_STR" add success!",
|
||||||
MAC_ADDR_ARRAY(mac_addr));
|
MAC_ADDR_ARRAY(mac_addr));
|
||||||
|
|
||||||
@@ -203,18 +203,12 @@ int hdd_remove_peer_object(struct wlan_objmgr_vdev *vdev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
peer = wlan_objmgr_find_peer(psoc, mac_addr);
|
peer = wlan_objmgr_get_peer(psoc, mac_addr, WLAN_HDD_ID_OBJ_MGR);
|
||||||
if (peer) {
|
if (peer) {
|
||||||
/* Unref to decrement ref happened in find_peer */
|
/* Unref to decrement ref happened in find_peer */
|
||||||
wlan_objmgr_peer_unref_peer(peer);
|
wlan_objmgr_peer_release_ref(peer, WLAN_HDD_ID_OBJ_MGR);
|
||||||
|
|
||||||
/*
|
wlan_objmgr_peer_obj_delete(peer);
|
||||||
* Unref to decrement ref of create_peer. This
|
|
||||||
* is needed until new ref count implementation
|
|
||||||
* is done. Object manager will delete peer once
|
|
||||||
* ref count is 0.
|
|
||||||
*/
|
|
||||||
wlan_objmgr_peer_unref_peer(peer);
|
|
||||||
|
|
||||||
hdd_info("Peer obj "MAC_ADDRESS_STR" deleted",
|
hdd_info("Peer obj "MAC_ADDRESS_STR" deleted",
|
||||||
MAC_ADDR_ARRAY(mac_addr));
|
MAC_ADDR_ARRAY(mac_addr));
|
||||||
|
@@ -108,6 +108,7 @@ tSirRetStatus mac_open(struct wlan_objmgr_psoc *psoc, tHalHandle *pHalHandle,
|
|||||||
{
|
{
|
||||||
tpAniSirGlobal p_mac = NULL;
|
tpAniSirGlobal p_mac = NULL;
|
||||||
tSirRetStatus status = eSIR_SUCCESS;
|
tSirRetStatus status = eSIR_SUCCESS;
|
||||||
|
QDF_STATUS qdf_status;
|
||||||
|
|
||||||
if (pHalHandle == NULL)
|
if (pHalHandle == NULL)
|
||||||
return eSIR_FAILURE;
|
return eSIR_FAILURE;
|
||||||
@@ -131,7 +132,12 @@ tSirRetStatus mac_open(struct wlan_objmgr_psoc *psoc, tHalHandle *pHalHandle,
|
|||||||
*/
|
*/
|
||||||
p_mac->hHdd = hHdd;
|
p_mac->hHdd = hHdd;
|
||||||
|
|
||||||
/* Increase psoc ref count once APIs are available in object manager */
|
qdf_status = wlan_objmgr_psoc_try_get_ref(psoc, WLAN_LEGACY_MAC_ID);
|
||||||
|
if (QDF_IS_STATUS_ERROR(qdf_status)) {
|
||||||
|
sys_log(p_mac, LOGE, FL("PSOC get ref failure\n"));
|
||||||
|
return eSIR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
p_mac->psoc = psoc;
|
p_mac->psoc = psoc;
|
||||||
*pHalHandle = (tHalHandle) p_mac;
|
*pHalHandle = (tHalHandle) p_mac;
|
||||||
|
|
||||||
@@ -187,7 +193,7 @@ tSirRetStatus mac_close(tHalHandle hHal)
|
|||||||
|
|
||||||
log_deinit(pMac);
|
log_deinit(pMac);
|
||||||
|
|
||||||
/* Decrease psoc ref count once APIs are available in object manager */
|
wlan_objmgr_psoc_release_ref(pMac->psoc, WLAN_LEGACY_MAC_ID);
|
||||||
pMac->psoc = NULL;
|
pMac->psoc = NULL;
|
||||||
/* Finally, de-allocate the global MAC datastructure: */
|
/* Finally, de-allocate the global MAC datastructure: */
|
||||||
qdf_mem_free(pMac);
|
qdf_mem_free(pMac);
|
||||||
|
@@ -2866,10 +2866,11 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen,
|
|||||||
|
|
||||||
wh = (struct ieee80211_frame *)(qdf_nbuf_data(tx_frame));
|
wh = (struct ieee80211_frame *)(qdf_nbuf_data(tx_frame));
|
||||||
mac_addr = wh->i_addr1;
|
mac_addr = wh->i_addr1;
|
||||||
peer = wlan_objmgr_find_peer(psoc, mac_addr);
|
peer = wlan_objmgr_get_peer(psoc, mac_addr, WLAN_MGMT_NB_ID);
|
||||||
if (!peer) {
|
if (!peer) {
|
||||||
mac_addr = wh->i_addr2;
|
mac_addr = wh->i_addr2;
|
||||||
peer = wlan_objmgr_find_peer(psoc, mac_addr);
|
peer = wlan_objmgr_get_peer(psoc, mac_addr,
|
||||||
|
WLAN_MGMT_NB_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = wlan_mgmt_txrx_mgmt_frame_tx(peer,
|
status = wlan_mgmt_txrx_mgmt_frame_tx(peer,
|
||||||
|
@@ -1939,7 +1939,11 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc, void *cds_context,
|
|||||||
qdf_wake_lock_create(&wma_handle->wow_wake_lock, "wlan_wow_wl");
|
qdf_wake_lock_create(&wma_handle->wow_wake_lock, "wlan_wow_wl");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Increase psoc ref count once APIs are available in object manager */
|
qdf_status = wlan_objmgr_psoc_try_get_ref(psoc, WLAN_LEGACY_WMA_ID);
|
||||||
|
if (QDF_IS_STATUS_ERROR(qdf_status)) {
|
||||||
|
WMA_LOGE("%s: PSOC get_ref fails", __func__);
|
||||||
|
return qdf_status;
|
||||||
|
}
|
||||||
wma_handle->psoc = psoc;
|
wma_handle->psoc = psoc;
|
||||||
|
|
||||||
/* Attach mc_thread context processing function */
|
/* Attach mc_thread context processing function */
|
||||||
@@ -3560,7 +3564,7 @@ QDF_STATUS wma_close(void *cds_ctx)
|
|||||||
wmi_desc_pool_deinit(wma_handle);
|
wmi_desc_pool_deinit(wma_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decrease psoc ref count once APIs are available in object manager */
|
wlan_objmgr_psoc_release_ref(wma_handle->psoc, WLAN_LEGACY_WMA_ID);
|
||||||
wma_handle->psoc = NULL;
|
wma_handle->psoc = NULL;
|
||||||
target_if_close();
|
target_if_close();
|
||||||
wma_target_if_close(wma_handle);
|
wma_target_if_close(wma_handle);
|
||||||
|
Reference in New Issue
Block a user