From 58d8a1fa36e9478e90488b7cdbb5ee7bcbb51403 Mon Sep 17 00:00:00 2001 From: Kabilan Kannan Date: Tue, 10 Oct 2017 01:36:39 -0700 Subject: [PATCH] qcacmn: Fix TDLS set state cmd sequence in concurrent TDLS connections TDLS set state cmd to firmware is going out of sequence, if STA is disconnected, when concurrent TDLS connections are active. This out of sequence causes crash in the firmware. Fix the out of sequence issue, by grouping all the TDLS delete peer commands into one single command. Change-Id: Idd315d544c46bcf063881bff5be70cb5d9ad0ea2 CRs-Fixed: 2123838 --- inc/wlan_cfg80211_tdls.h | 3 +++ src/wlan_cfg80211_tdls.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/inc/wlan_cfg80211_tdls.h b/inc/wlan_cfg80211_tdls.h index 9dc2da3bfc02..404495cc8141 100644 --- a/inc/wlan_cfg80211_tdls.h +++ b/inc/wlan_cfg80211_tdls.h @@ -224,6 +224,7 @@ hdd_notify_sta_connect(uint8_t session_id, * hdd_notify_sta_disconnect() - notify sta disconnect to TDLS * @session_id: pointer to soc object * @lfr_roam: indicate, whether disconnect due to lfr roam + * @bool user_disconnect: disconnect from user space * @vdev: vdev object manager * * Notify sta disconnect event to TDLS component @@ -232,6 +233,7 @@ hdd_notify_sta_connect(uint8_t session_id, */ void hdd_notify_sta_disconnect(uint8_t session_id, bool lfr_roam, + bool user_disconnect, struct wlan_objmgr_vdev *vdev); /** @@ -262,6 +264,7 @@ hdd_notify_sta_connect(uint8_t session_id, static inline void hdd_notify_sta_disconnect(uint8_t session_id, bool lfr_roam, + bool user_disconnect, struct wlan_objmgr_vdev *vdev) { diff --git a/src/wlan_cfg80211_tdls.c b/src/wlan_cfg80211_tdls.c index 08fc91b1bcdc..837c062abfa2 100644 --- a/src/wlan_cfg80211_tdls.c +++ b/src/wlan_cfg80211_tdls.c @@ -140,6 +140,7 @@ hdd_notify_sta_connect(uint8_t session_id, void hdd_notify_sta_disconnect(uint8_t session_id, bool lfr_roam, + bool user_disconnect, struct wlan_objmgr_vdev *vdev) { struct tdls_sta_notify_params notify_info; @@ -147,6 +148,7 @@ void hdd_notify_sta_disconnect(uint8_t session_id, notify_info.session_id = session_id; notify_info.lfr_roam = lfr_roam; notify_info.vdev = vdev; + notify_info.user_disconnect = user_disconnect; ucfg_tdls_notify_sta_disconnect(¬ify_info); }