wlan: Fix sap to operate on valid channel.

sometimes when no channel is picked in acs, sap is picking
the start channel which could be an invalid channel as per
the country accquired. This fix ensures to pick valid channel
among the given range if no channel is picked in acs, if none
of the channels are valid in the given range as per the country
accquired then a default channel in 2.4G is picked.

Change-Id: Ie6aec7d3cc9318ead1acb628bedf6be0c0688d1c
CRs-Fixed: 724937
diff --git a/CORE/SAP/src/sapApiLinkCntl.c b/CORE/SAP/src/sapApiLinkCntl.c
index 550adf8..56c24de 100644
--- a/CORE/SAP/src/sapApiLinkCntl.c
+++ b/CORE/SAP/src/sapApiLinkCntl.c
@@ -143,6 +143,7 @@
     void *pTempHddCtx;
     tWLAN_SAPEvent sapEvent; /* State machine event */
     v_U8_t operChannel = 0;
+    v_U8_t i = 0;
     VOS_STATUS sapstatus;
     v_U32_t event;
 
@@ -186,7 +187,7 @@
             event = eSAP_CHANNEL_SELECTION_FAILED;
             VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_ABORT/FAILURE", scanStatus);
     }
-    
+
     if (operChannel == SAP_CHANNEL_NOT_SELECTED)
 #ifdef SOFTAP_CHANNEL_RANGE
     {
@@ -198,7 +199,16 @@
         {
             if(psapContext->channelList != NULL)
             {
-                psapContext->channel = psapContext->channelList[0];
+                 psapContext->channel = SAP_DEFAULT_CHANNEL;
+                 for ( i = 0 ; i < psapContext->numofChannel ; i++)
+                 {
+                    if (NV_CHANNEL_ENABLE ==
+                        vos_nv_getChannelEnabledState(psapContext->channelList[i]))
+                    {
+                        psapContext->channel = psapContext->channelList[i];
+                        break;
+                    }
+                 }
             }
             else
             {
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c
index 57317b3..a63f965 100644
--- a/CORE/SAP/src/sapFsm.c
+++ b/CORE/SAP/src/sapFsm.c
@@ -235,6 +235,8 @@
 
         scanRequest.requestType = eCSR_SCAN_SOFTAP_CHANNEL_RANGE;
 
+        sapContext->numofChannel = numOfChannels;
+
         sapContext->channelList = channelList;
 
 #endif
diff --git a/CORE/SAP/src/sapInternal.h b/CORE/SAP/src/sapInternal.h
index 98a7811..ceb7c48 100644
--- a/CORE/SAP/src/sapInternal.h
+++ b/CORE/SAP/src/sapInternal.h
@@ -213,6 +213,7 @@
     v_U32_t           nStaAddIeLength;
     v_U8_t            pStaAddIE[MAX_ASSOC_IND_IE_LEN]; 
     v_U8_t            *channelList;
+    v_U8_t            numofChannel;
     tSapChannelListInfo SapChnlList;
 
     tANI_BOOLEAN       allBandScanned;