summaryrefslogtreecommitdiff
path: root/CORE/SAP/src
diff options
context:
space:
mode:
authorYun Park <yunp@qca.qualcomm.com>2014-08-30 15:56:24 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-09-02 10:59:43 -0700
commit3d4df6fd95d034ef65f0128e2a2438263cd0ddcd (patch)
tree654ee26ae34378f48c961dbe2f1e9c177a736c66 /CORE/SAP/src
parent176fb240520d688e7638dcf057ac8f8a3a9b4355 (diff)
qcacld: StopBss when no available channel after radar detection
When no channel is available from random channel selection after radar detection, call StopBss or make StartBss failed. This change includes sending WLAN_SVC_DFS_ALL_CHANNEL_UNAVAIL_IND Netlink event. Change-Id: Ib1384f0634db3c8f2ff80716b88386ff4894bd52 CRs-Fixed: 717713 (cherry picked from commit a6f590809bf4d890bf9d6b8f8855f5714ad633ad)
Diffstat (limited to 'CORE/SAP/src')
-rw-r--r--CORE/SAP/src/sapApiLinkCntl.c13
-rw-r--r--CORE/SAP/src/sapFsm.c17
2 files changed, 24 insertions, 6 deletions
diff --git a/CORE/SAP/src/sapApiLinkCntl.c b/CORE/SAP/src/sapApiLinkCntl.c
index 3695bc3eae50..adbcaff458a2 100644
--- a/CORE/SAP/src/sapApiLinkCntl.c
+++ b/CORE/SAP/src/sapApiLinkCntl.c
@@ -432,6 +432,11 @@ WLANSAP_RoamCallback
VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
FL("Received Radar Indication"));
+ VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_MED,
+ "sapdfs: Indicate eSAP_DFS_RADAR_DETECT to HDD");
+ sapSignalHDDevent(sapContext, NULL, eSAP_DFS_RADAR_DETECT,
+ (v_PVOID_t) eSAP_STATUS_SUCCESS);
+
/* sync to latest DFS-NOL */
sapSignalHDDevent(sapContext, NULL, eSAP_DFS_NOL_GET,
(v_PVOID_t) eSAP_STATUS_SUCCESS);
@@ -447,6 +452,14 @@ WLANSAP_RoamCallback
pMac->sap.SapDfsInfo.user_provided_target_channel = 0;
}
+ if (pMac->sap.SapDfsInfo.target_channel == 0) {
+ /* No available channel found */
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ FL("No available channel found, StopBss!!!"));
+ WLANSAP_StopBss((v_PVOID_t)sapContext);
+ break;
+ }
+
pMac->sap.SapDfsInfo.cac_state = eSAP_DFS_DO_NOT_SKIP_CAC;
sap_CacResetNotify(hHal);
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c
index dab13f174f15..39cad7f1fc7a 100644
--- a/CORE/SAP/src/sapFsm.c
+++ b/CORE/SAP/src/sapFsm.c
@@ -932,7 +932,9 @@ static v_U8_t sapRandomChannelSel(ptSapContext sapContext)
"%s[%d]: Target channel Index = %d target_channel = %d",
__func__,__LINE__, i, target_channel);
} else {
- target_channel = sapContext->channel;
+ sapSignalHDDevent(sapContext, NULL, eSAP_DFS_NO_AVAILABLE_CHANNEL,
+ (v_PVOID_t) eSAP_STATUS_SUCCESS);
+ target_channel = 0;
}
return target_channel;
@@ -1780,6 +1782,7 @@ sapSignalHDDevent
case eSAP_DFS_CAC_START:
case eSAP_DFS_CAC_END:
case eSAP_DFS_RADAR_DETECT:
+ case eSAP_DFS_NO_AVAILABLE_CHANNEL:
VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
"In %s, SAP event callback event = %s : %d", __func__,
"eSAP_DFS event", sapHddevent);
@@ -2502,6 +2505,13 @@ sapFsm
/* find a new available channel */
ch = sapRandomChannelSel(sapContext);
+ if (ch == 0) {
+ /* No available channel found */
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ FL("No available channel found!!!"));
+ return VOS_STATUS_E_FAULT;
+ }
+
VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
FL("channel %d is in NOL, StartBss on new channel %d"),
sapContext->channel, ch);
@@ -2796,11 +2806,6 @@ sapFsm
/* Radar is seen on the current operating channel
* send CSA IE for all associated stations
*/
- VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_MED,
- "sapdfs: Indicate eSAP_DFS_RADAR_DETECT to HDD");
-
- sapSignalHDDevent(sapContext, NULL, eSAP_DFS_RADAR_DETECT,
- (v_PVOID_t) eSAP_STATUS_SUCCESS);
if (pMac != NULL)
{
/* Request for CSA IE transmission */