qcacmn: Avoid peer free notification for self peer

The peer free notification is sent for all peers
including self peer. The primiary intent of using this notification
is to make sure all the connected peers are disconnected.

Also when the peer free notification is sent, the peer is already
freed and we cannot identify if the peer free is for self peer

The self peer free notification for STA is causing issues
where BSS peer delete is skipped as part of bringing down the VDEV SM.

CRs-Fixed: 2755824
Change-Id: I276177788a51dcdd948caeb734eaa896edf520dd
This commit is contained in:
Vivek
2020-09-01 16:31:09 +05:30
committed by snandini
parent d95c9bb377
commit 7f45fb6521

View File

@@ -74,6 +74,7 @@ static QDF_STATUS wlan_objmgr_peer_obj_free(struct wlan_objmgr_peer *peer)
struct wlan_objmgr_vdev *vdev;
uint8_t *macaddr;
uint8_t vdev_id;
bool peer_free_notify = true;
if (!peer) {
obj_mgr_err("PEER is NULL");
@@ -90,6 +91,10 @@ static QDF_STATUS wlan_objmgr_peer_obj_free(struct wlan_objmgr_peer *peer)
return QDF_STATUS_E_FAILURE;
}
/* Notify peer free only for non self peer*/
if (peer == wlan_vdev_get_selfpeer(vdev))
peer_free_notify = false;
vdev_id = wlan_vdev_get_id(vdev);
/* get PSOC from VDEV, if it is NULL, return */
@@ -131,7 +136,9 @@ static QDF_STATUS wlan_objmgr_peer_obj_free(struct wlan_objmgr_peer *peer)
qdf_spinlock_destroy(&peer->peer_lock);
qdf_mem_free(peer);
wlan_objmgr_vdev_peer_freed_notify(vdev);
if (peer_free_notify)
wlan_objmgr_vdev_peer_freed_notify(vdev);
wlan_objmgr_vdev_release_ref(vdev, WLAN_OBJMGR_ID);
return QDF_STATUS_SUCCESS;