Browse Source

qcacld-3.0: Trim the ACS scan channel list as per acs config

Trim the scan channel list for ACS based on the channel list provided
from user space as part of acs config.

Change-Id: Iaafa6f78098c59782478351e206ae360d50b89bc
CRs-Fixed: 2177457
Tushnim Bhattacharyya 7 years ago
parent
commit
691680ed4c
3 changed files with 26 additions and 1 deletions
  1. 0 1
      core/sap/src/sap_ch_select.c
  2. 11 0
      core/sap/src/sap_fsm.c
  3. 15 0
      core/sap/src/sap_internal.h

+ 0 - 1
core/sap/src/sap_ch_select.c

@@ -492,7 +492,6 @@ void sap_update_unsafe_channel_list(tHalHandle hal, struct sap_context *sap_ctx)
  *
  * Return: channel number if in acs channel list or SAP_CHANNEL_NOT_SELECTED
  */
-static
 uint8_t sap_channel_in_acs_channel_list(uint8_t channel_num,
 					struct sap_context *sap_ctx,
 					tSapChSelSpectInfo *spect_info_params)

+ 11 - 0
core/sap/src/sap_fsm.c

@@ -4092,6 +4092,7 @@ static QDF_STATUS sap_get_channel_list(struct sap_context *sap_ctx,
 	uint8_t i;
 #endif
 	tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
+	tSapChSelSpectInfo spect_info_obj = { NULL, 0 };
 
 	if (NULL == hal) {
 		QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -4159,6 +4160,16 @@ static QDF_STATUS sap_get_channel_list(struct sap_context *sap_ctx,
 		      wlan_reg_get_channel_state(mac_ctx->pdev, loop_count)))))
 			continue;
 
+		/*
+		 * Skip the channels which are not in ACS config from user
+		 * space
+		 */
+		if (SAP_CHANNEL_NOT_SELECTED ==
+			sap_channel_in_acs_channel_list(
+				WLAN_REG_CH_NUM(loop_count),
+				sap_ctx, &spect_info_obj))
+			continue;
+
 #ifdef FEATURE_WLAN_CH_AVOID
 		for (i = 0; i < NUM_CHANNELS; i++) {
 			if (safe_channels[i].channelNumber ==

+ 15 - 0
core/sap/src/sap_internal.h

@@ -484,6 +484,21 @@ uint8_t sap_indicate_radar(struct sap_context *sap_ctx);
  */
 uint8_t sap_select_default_oper_chan(struct sap_acs_cfg *acs_cfg);
 
+/**
+ * sap_channel_in_acs_channel_list() - check if channel in acs channel list
+ * @channel_num: channel to check
+ * @sap_ctx: struct ptSapContext
+ * @spect_info_params: strcut tSapChSelSpectInfo
+ *
+ * This function checks if specified channel is in the configured ACS channel
+ * list.
+ *
+ * Return: channel number if in acs channel list or SAP_CHANNEL_NOT_SELECTED
+ */
+uint8_t sap_channel_in_acs_channel_list(uint8_t channel_num,
+					struct sap_context *sap_ctx,
+					tSapChSelSpectInfo *spect_info_params);
+
 #ifdef __cplusplus
 }
 #endif