Commit ca27d182 authored by kaliu's avatar kaliu Committed by Madan Mohan Koyyalamudi
Browse files

qcacld-2.0: eSmeCommandDelStaSession stuck in smeCmdActiveList

1.Use iw tool to let dut connect to remote ap, dut is working on wlan0.
2.At same time, use hostapd to start sap also on interface wlan0.

In item1, before connect to ap, dut will do an internal scan to search ap,
if scan result matched configured ap profile, dut trys to connect to ap.

In item2, when starting sap, found it's sta mode it will try to disconnect
dut with remote ap and close sta session.

  #1 If ap start action happened in item1's scan period, trying disconnecting
  won't take effect as currently sta has not yet connected with remote ap.
  So after item1's scan finished, dut continues to do connection.

  #2 During closing sta session, sme issued eSmeCommandDelStaSession, as
  currently sta is doing connection, so session is in started status, this
  cause closure failed, so there is no chance to remove cmd in smeCmdActiveList.
  While cmd pending in smeCmdActiveList for 120s, driver issued crash.

The solution is in item1 after scan complete to check whether it's
needed to start following connection. If stop action has been issued
during scan period, then don't do the connection.

Change-Id: If632e21cb13277fba371ff1bf8df97febf856d09
CRs-Fixed: 923375
parent a39dff6c
......@@ -680,7 +680,8 @@ typedef enum
eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTED,
// Participating in a Infra network and connected to a peer
eCSR_ASSOC_STATE_TYPE_INFRA_CONNECTED,
// Disconnecting with AP or stop connecting process
eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTING,
}eCsrConnectState;
......
......@@ -7457,6 +7457,8 @@ eHalStatus csrRoamDisconnectInternal(tpAniSirGlobal pMac, tANI_U32 sessionId, eC
}
else
{
pMac->roam.roamSession[sessionId].connectState =
eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTING;
csrScanAbortScanForSSID(pMac, sessionId);
status = eHAL_STATUS_CMD_NOT_QUEUED;
smsLog( pMac, LOG1, FL(" Disconnect cmd not queued, Roam command is not present"
......
......@@ -1733,6 +1733,12 @@ eHalStatus csrScanHandleSearchForSSID(tpAniSirGlobal pMac, tSmeCmd *pCommand)
status = csrScanGetResult(pMac, pScanFilter, &hBSSList);
if(!HAL_STATUS_SUCCESS(status))
break;
if (pMac->roam.roamSession[sessionId].connectState ==
eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTING) {
smsLog(pMac, LOGE, FL("upper layer issued disconnetion"));
status = eHAL_STATUS_FAILURE;
break;
}
status = csrRoamIssueConnect(pMac, sessionId, pProfile, hBSSList, eCsrHddIssued,
pCommand->u.scanCmd.roamId, eANI_BOOLEAN_TRUE, eANI_BOOLEAN_TRUE);
if(!HAL_STATUS_SUCCESS(status))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment