qcacmn: Take peer ref count and dec it after using
Currently peer reference is used with out taking any ref count. In parallel context execution on different core peer reference may be cleaned up in peer unmap event. So take ref count while using the peer reference and decrement after done with it. Change-Id: I02ca172cbdc4309fabd3bbbad00940826662bbd3 CRs-Fixed: 2301963
This commit is contained in:

gecommit door
nshrivas

bovenliggende
97d6a98c03
commit
26d471ec56
@@ -2400,6 +2400,8 @@ dp_rx_sec_ind_handler(void *soc_handle, uint16_t peer_id,
|
||||
* all security types and last pn for WAPI) once REO command API
|
||||
* is available
|
||||
*/
|
||||
|
||||
dp_peer_unref_del_find_by_id(peer);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_WIN
|
||||
@@ -2768,6 +2770,7 @@ uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
|
||||
{
|
||||
struct dp_soc *soc = (struct dp_soc *)soc_handle;
|
||||
struct dp_peer *peer;
|
||||
uint8_t vdev_id;
|
||||
|
||||
peer = dp_peer_find_by_id(soc, peer_id);
|
||||
|
||||
@@ -2781,7 +2784,11 @@ uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
|
||||
}
|
||||
|
||||
qdf_mem_copy(peer_mac, peer->mac_addr.raw, 6);
|
||||
return peer->vdev->vdev_id;
|
||||
vdev_id = peer->vdev->vdev_id;
|
||||
|
||||
dp_peer_unref_del_find_by_id(peer);
|
||||
|
||||
return vdev_id;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2850,3 +2857,20 @@ void dp_set_michael_key(struct cdp_peer *peer_handle,
|
||||
qdf_mem_copy(&peer->security[sec_index].michael_key[0],
|
||||
key, IEEE80211_WEP_MICLEN);
|
||||
}
|
||||
|
||||
bool dp_peer_find_by_id_valid(struct dp_soc *soc, uint16_t peer_id)
|
||||
{
|
||||
struct dp_peer *peer = dp_peer_find_by_id(soc, peer_id);
|
||||
|
||||
if (peer) {
|
||||
/*
|
||||
* Decrement the peer ref which is taken as part of
|
||||
* dp_peer_find_by_id if PEER_LOCK_REF_PROTECT is enabled
|
||||
*/
|
||||
dp_peer_unref_del_find_by_id(peer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
Verwijs in nieuw issue
Block a user