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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user