summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNachiket Kukade <nkukade@codeaurora.org>2018-02-14 18:01:48 +0530
committersnandini <snandini@codeaurora.org>2018-02-22 14:56:02 -0800
commitf496b7c2d764a83800248a86165ef22dfe2d5dff (patch)
treea9e1969afe9a45b36f3ad6a1b567b94d6c3207f4
parent83f7d146bad03c239260b6860224da75238ed471 (diff)
qcacld-3.0: Schedule ROC dequeue work when roam connection fails
Remain on Channel requests are queued if any connection is in progress. The work that dequeues and executes them is scheduled after the connection is successful. In case where a roaming is unsuccessful, the work is never scheduled stalling the p2p listen operation in the upper layer. Schedule ROC dequeue work when roam abort is received. Change-Id: I80dc817760e092ec7f41d60a40593ec62bea6145 CRs-Fixed: 2189893
-rw-r--r--core/hdd/src/wlan_hdd_assoc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index 76f3bb2b8612..95bc1db75312 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -4894,6 +4894,7 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
hdd_station_ctx_t *pHddStaCtx = NULL;
QDF_STATUS status = QDF_STATUS_SUCCESS;
struct cfg80211_bss *bss_status;
+ hdd_context_t *pHddCtx;
if (eCSR_ROAM_UPDATE_SCAN_RESULT != roamStatus)
hdd_debug("CSR Callback: status= %d result= %d roamID=%d",
@@ -4906,6 +4907,7 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
pWextState = WLAN_HDD_GET_WEXT_STATE_PTR(pAdapter);
pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
+ pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
/* Omitting eCSR_ROAM_UPDATE_SCAN_RESULT as this is too frequent */
if (eCSR_ROAM_UPDATE_SCAN_RESULT != roamStatus)
@@ -5243,6 +5245,7 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
pAdapter->roam_ho_fail = false;
pHddStaCtx->ft_carrier_on = false;
complete(&pAdapter->roaming_comp_var);
+ schedule_delayed_work(&pHddCtx->roc_req_work, 0);
break;
default: