Browse Source

qcacld-3.0: Replace channel with frequency in wlan_mlme_reg

Replace channel ID with frequency in struct wlan_mlme_reg.

Change-Id: I71fcec5014e451cf912f187c79a1939d2d7e54ad
CRs-Fixed: 2518897
Tushnim Bhattacharyya 5 years ago
parent
commit
d1d0db9db2

+ 17 - 1
components/mlme/core/src/wlan_mlme_main.c

@@ -2270,6 +2270,9 @@ static void mlme_init_reg_cfg(struct wlan_objmgr_psoc *psoc,
 			      struct wlan_mlme_reg *reg)
 {
 	qdf_size_t valid_channel_list_num = 0;
+	uint8_t channel_list[CFG_VALID_CHANNEL_LIST_LEN];
+	uint8_t i;
+	struct wlan_objmgr_pdev *pdev = NULL;
 
 	reg->self_gen_frm_pwr = cfg_get(psoc, CFG_SELF_GEN_FRM_PWR);
 	reg->etsi13_srd_chan_in_master_mode =
@@ -2281,10 +2284,23 @@ static void mlme_init_reg_cfg(struct wlan_objmgr_psoc *psoc,
 						CFG_ENABLE_11D_IN_WORLD_MODE);
 	reg->scan_11d_interval = cfg_get(psoc, CFG_SCAN_11D_INTERVAL);
 	qdf_uint8_array_parse(cfg_default(CFG_VALID_CHANNEL_LIST),
-			      reg->valid_channel_list,
+			      channel_list,
 			      CFG_VALID_CHANNEL_LIST_LEN,
 			      &valid_channel_list_num);
 	reg->valid_channel_list_num = (uint8_t)valid_channel_list_num;
+
+	pdev = wlan_objmgr_get_pdev_by_id(psoc, 0, WLAN_MLME_NB_ID);
+	if (!pdev) {
+		mlme_legacy_err("null pdev");
+		return;
+	}
+
+	for (i = 0; i < valid_channel_list_num; i++)
+		reg->valid_channel_freq_list[i] =
+			wlan_reg_chan_to_freq(pdev, channel_list[i]);
+
+	wlan_objmgr_pdev_release_ref(pdev, WLAN_MLME_NB_ID);
+
 	qdf_str_lcopy(reg->country_code, cfg_default(CFG_COUNTRY_CODE),
 		      sizeof(reg->country_code));
 	reg->country_code_len = (uint8_t)sizeof(reg->country_code);

+ 2 - 2
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -2040,7 +2040,7 @@ struct wlan_mlme_mwc {
  * @restart_beaconing_on_ch_avoid: restart beaconing on ch avoid
  * @indoor_channel_support: indoor channel support
  * @scan_11d_interval: scan 11d interval
- * @valid_channel_list: array for valid channel list
+ * @valid_channel_freq_list: array for valid channel list
  * @valid_channel_list_num: valid channel list number
  * @country_code: country code
  * @country_code_len: country code length
@@ -2056,7 +2056,7 @@ struct wlan_mlme_reg {
 		restart_beaconing_on_ch_avoid;
 	bool indoor_channel_support;
 	uint32_t scan_11d_interval;
-	uint8_t valid_channel_list[CFG_VALID_CHANNEL_LIST_LEN];
+	uint32_t valid_channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN];
 	uint8_t valid_channel_list_num;
 	uint8_t country_code[CFG_COUNTRY_CODE_LEN + 1];
 	uint8_t country_code_len;

+ 5 - 4
components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -3732,7 +3732,8 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
 				uint32_t *value);
 
 /**
- * ucfg_mlme_get_valid_channel_list() - get valid channel list
+ * ucfg_mlme_get_valid_channel_freq_list() - get valid channel
+ * list
  * @psoc: pointer to psoc object
  * @channel_list: pointer to return channel list
  * @channel_list_num: pointer to return channel list number
@@ -3740,9 +3741,9 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
  * Return: QDF Status
  */
 QDF_STATUS
-ucfg_mlme_get_valid_channel_list(struct wlan_objmgr_psoc *psoc,
-				 uint8_t *channel_list,
-				 uint32_t *channel_list_num);
+ucfg_mlme_get_valid_channel_freq_list(struct wlan_objmgr_psoc *psoc,
+				      uint32_t *channel_list,
+				      uint32_t *channel_list_num);
 
 #ifdef FEATURE_LFR_SUBNET_DETECTION
 /**

+ 22 - 6
components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c

@@ -1500,27 +1500,43 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
 }
 
 QDF_STATUS
-ucfg_mlme_get_valid_channel_list(struct wlan_objmgr_psoc *psoc,
-				 uint8_t *channel_list,
-				 uint32_t *channel_list_num)
+ucfg_mlme_get_valid_channel_freq_list(struct wlan_objmgr_psoc *psoc,
+				      uint32_t *channel_list,
+				      uint32_t *channel_list_num)
 {
 	struct wlan_mlme_psoc_obj *mlme_obj;
 	qdf_size_t valid_channel_list_num = 0;
+	uint8_t tmp_channel_list[CFG_VALID_CHANNEL_LIST_LEN];
+	uint8_t i;
+	struct wlan_objmgr_pdev *pdev = NULL;
 
 	mlme_obj = mlme_get_psoc_obj(psoc);
 	if (!mlme_obj) {
 		qdf_uint8_array_parse(cfg_default(CFG_VALID_CHANNEL_LIST),
-				      channel_list,
+				      tmp_channel_list,
 				      CFG_VALID_CHANNEL_LIST_LEN,
 				      &valid_channel_list_num);
 		*channel_list_num = (uint8_t)valid_channel_list_num;
 		mlme_legacy_err("Failed to get MLME Obj");
+		pdev = wlan_objmgr_get_pdev_by_id(psoc, 0, WLAN_MLME_NB_ID);
+		if (!pdev) {
+			mlme_legacy_err("null pdev");
+			return QDF_STATUS_E_INVAL;
+		}
+
+		for (i = 0; i < valid_channel_list_num; i++) {
+			channel_list[i] =
+				wlan_reg_chan_to_freq(pdev, tmp_channel_list[i]);
+		}
+
+		wlan_objmgr_pdev_release_ref(pdev, WLAN_MLME_NB_ID);
+
 		return QDF_STATUS_E_INVAL;
 	}
 
 	*channel_list_num = (uint32_t)mlme_obj->cfg.reg.valid_channel_list_num;
-	qdf_mem_copy(channel_list, mlme_obj->cfg.reg.valid_channel_list,
-		     *channel_list_num);
+	for (i = 0; i < *channel_list_num; i++)
+		channel_list[i] = mlme_obj->cfg.reg.valid_channel_freq_list[i];
 
 	return QDF_STATUS_SUCCESS;
 }

+ 10 - 8
core/hdd/src/wlan_hdd_cfg80211.c

@@ -14695,7 +14695,7 @@ QDF_STATUS wlan_hdd_validate_operation_channel(struct hdd_adapter *adapter,
 					       int channel)
 {
 	uint32_t num_ch = 0;
-	u8 valid_ch[CFG_VALID_CHANNEL_LIST_LEN];
+	uint32_t valid_ch[CFG_VALID_CHANNEL_LIST_LEN];
 	u32 indx = 0;
 	bool is_valid_channel = false;
 	uint8_t count;
@@ -14721,10 +14721,11 @@ QDF_STATUS wlan_hdd_validate_operation_channel(struct hdd_adapter *adapter,
 			return QDF_STATUS_E_FAILURE;
 		}
 	} else {
-		ucfg_mlme_get_valid_channel_list(hdd_ctx->psoc, valid_ch,
-						 &num_ch);
+		ucfg_mlme_get_valid_channel_freq_list(hdd_ctx->psoc, valid_ch,
+						      &num_ch);
 		for (indx = 0; indx < num_ch; indx++) {
-			if (channel == valid_ch[indx])
+			if (channel ==
+				wlan_reg_freq_to_chan(hdd_ctx->pdev, valid_ch[indx]))
 				break;
 		}
 
@@ -19685,7 +19686,7 @@ static int __wlan_hdd_cfg80211_join_ibss(struct wiphy *wiphy,
 	if (NULL !=
 		params->chandef.chan) {
 		uint32_t numChans = CFG_VALID_CHANNEL_LIST_LEN;
-		uint8_t validChan[CFG_VALID_CHANNEL_LIST_LEN];
+		uint32_t validChan[CFG_VALID_CHANNEL_LIST_LEN];
 		int indx;
 
 		/* Get channel number */
@@ -19694,11 +19695,12 @@ static int __wlan_hdd_cfg80211_join_ibss(struct wiphy *wiphy,
 			chandef.
 			chan->
 			center_freq);
-		ucfg_mlme_get_valid_channel_list(hdd_ctx->psoc, validChan,
-						 &numChans);
+		ucfg_mlme_get_valid_channel_freq_list(hdd_ctx->psoc, validChan,
+						      &numChans);
 
 		for (indx = 0; indx < numChans; indx++) {
-			if (channelNum == validChan[indx])
+			if (channelNum ==
+				wlan_reg_freq_to_chan(hdd_ctx->pdev, validChan[indx]))
 				break;
 		}
 		if (indx >= numChans) {

+ 5 - 2
core/mac/src/pe/lim/lim_process_tdls.c

@@ -205,8 +205,11 @@ static void populate_dot11f_tdls_offchannel_params(
 	uint8_t nss_5g;
 
 	numChans = mac->mlme_cfg->reg.valid_channel_list_num;
-	qdf_mem_copy(validChan, mac->mlme_cfg->reg.valid_channel_list,
-		     mac->mlme_cfg->reg.valid_channel_list_num);
+
+	for (i = 0; i < mac->mlme_cfg->reg.valid_channel_list_num; i++) {
+		validChan[i] = wlan_reg_freq_to_chan(mac->pdev,
+						     mac->mlme_cfg->reg.valid_channel_freq_list[i]);
+	}
 
 	if (wlan_reg_is_5ghz_ch_freq(pe_session->curr_op_freq))
 		band = BAND_5G;

+ 6 - 2
core/mac/src/pe/lim/lim_send_messages.c

@@ -600,6 +600,7 @@ QDF_STATUS lim_send_ht40_obss_scanind(struct mac_context *mac_ctx,
 	struct scheduler_msg msg = {0};
 	uint8_t chan_list[CFG_VALID_CHANNEL_LIST_LEN];
 	uint8_t channel24gnum, count;
+	uint8_t i;
 
 	ht40_obss_scanind = qdf_mem_malloc(sizeof(struct obss_ht40_scanind));
 	if (!ht40_obss_scanind)
@@ -631,8 +632,11 @@ QDF_STATUS lim_send_ht40_obss_scanind(struct mac_context *mac_ctx,
 			mac_ctx->pdev, session->curr_op_freq),
 			session->ch_width);
 	channelnum = mac_ctx->mlme_cfg->reg.valid_channel_list_num;
-	qdf_mem_copy(chan_list, mac_ctx->mlme_cfg->reg.valid_channel_list,
-		     channelnum);
+	for (i = 0; i < channelnum; i++) {
+		chan_list[i] = wlan_reg_freq_to_chan(mac_ctx->pdev,
+						     mac_ctx->mlme_cfg->reg.valid_channel_freq_list[i]);
+	}
+
 	/* Extract 24G channel list */
 	channel24gnum = 0;
 	for (count = 0; count < channelnum &&

+ 3 - 7
core/mac/src/pe/lim/lim_utils.c

@@ -4427,8 +4427,6 @@ void lim_add_channel_status_info(struct mac_context *p_mac,
 bool lim_is_channel_valid_for_channel_switch(struct mac_context *mac, uint8_t channel)
 {
 	uint8_t index;
-	uint32_t validChannelListLen = CFG_VALID_CHANNEL_LIST_LEN;
-	tSirMacChanNum validChannelList[CFG_VALID_CHANNEL_LIST_LEN];
 	bool ok = false;
 
 	if (policy_mgr_is_chan_ok_for_dnbs(mac->psoc, channel, &ok)) {
@@ -4441,11 +4439,9 @@ bool lim_is_channel_valid_for_channel_switch(struct mac_context *mac, uint8_t ch
 		return false;
 	}
 
-	validChannelListLen = mac->mlme_cfg->reg.valid_channel_list_num;
-	qdf_mem_copy(validChannelList, mac->mlme_cfg->reg.valid_channel_list,
-		     mac->mlme_cfg->reg.valid_channel_list_num);
-	for (index = 0; index < validChannelListLen; index++) {
-		if (validChannelList[index] != channel)
+	for (index = 0; index < mac->mlme_cfg->reg.valid_channel_list_num; index++) {
+		if (mac->mlme_cfg->reg.valid_channel_freq_list[index] !=
+		    wlan_reg_chan_to_freq(mac->pdev, channel))
 			continue;
 
 		ok = policy_mgr_is_valid_for_channel_switch(mac->psoc,

+ 5 - 2
core/sme/src/common/sme_api.c

@@ -1130,6 +1130,7 @@ QDF_STATUS sme_get_valid_channels(uint8_t *chan_list, uint32_t *list_len)
 {
 	struct mac_context *mac_ctx = sme_get_mac_context();
 	uint32_t num_valid_chan;
+	uint8_t i;
 
 	if (!mac_ctx) {
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
@@ -1146,8 +1147,10 @@ QDF_STATUS sme_get_valid_channels(uint8_t *chan_list, uint32_t *list_len)
 		num_valid_chan = *list_len;
 	}
 	*list_len = num_valid_chan;
-	qdf_mem_copy(chan_list, mac_ctx->mlme_cfg->reg.valid_channel_list,
-		     *list_len);
+	for (i = 0; i < *list_len; i++) {
+		chan_list[i] = wlan_reg_freq_to_chan(mac_ctx->pdev,
+						     mac_ctx->mlme_cfg->reg.valid_channel_freq_list[i]);
+	}
 
 	return QDF_STATUS_SUCCESS;
 }

+ 9 - 9
core/sme/src/csr/csr_api_roam.c

@@ -13370,14 +13370,15 @@ QDF_STATUS csr_get_cfg_valid_channels(struct mac_context *mac, uint8_t *pChannel
 {
 	uint8_t num_chan_temp = 0;
 	int i;
+	uint8_t chan;
 
 	*pNumChan = (uint32_t)mac->mlme_cfg->reg.valid_channel_list_num;
-	qdf_mem_copy(pChannels, mac->mlme_cfg->reg.valid_channel_list,
-		     *pNumChan);
 
 	for (i = 0; i < *pNumChan; i++) {
-		if (!wlan_reg_is_dsrc_chan(mac->pdev, pChannels[i])) {
-			pChannels[num_chan_temp] = pChannels[i];
+		chan = wlan_reg_freq_to_chan(mac->pdev,
+					     mac->mlme_cfg->reg.valid_channel_freq_list[i]);
+		if (!wlan_reg_is_dsrc_chan(mac->pdev, chan)) {
+			pChannels[num_chan_temp] = chan;
 			num_chan_temp++;
 		}
 	}
@@ -13392,13 +13393,12 @@ QDF_STATUS csr_get_cfg_valid_freqs(struct mac_context *mac,
 {
 	uint8_t num_chan_temp = 0;
 	int i;
-	uint8_t chan;
+	uint32_t chan;
 
 	for (i = 0; i < mac->mlme_cfg->reg.valid_channel_list_num; i++) {
-		chan = mac->mlme_cfg->reg.valid_channel_list[i];
-		if (!wlan_reg_is_dsrc_chan(mac->pdev, chan)) {
-			freq_list[num_chan_temp] =
-				wlan_reg_chan_to_freq(mac->pdev, chan);
+		chan = mac->mlme_cfg->reg.valid_channel_freq_list[i];
+		if (!wlan_reg_is_dsrc_chan(mac->pdev, wlan_reg_freq_to_chan(mac->pdev, chan))) {
+			freq_list[num_chan_temp] = chan;
 			num_chan_temp++;
 		}
 	}

+ 6 - 2
core/sme/src/csr/csr_api_scan.c

@@ -1460,14 +1460,18 @@ static void csr_set_cfg_valid_channel_list(struct mac_context *mac,
 					   uint8_t NumChannels)
 {
 	QDF_STATUS status;
+	uint8_t i;
 
 	QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
 		  "%s: dump valid channel list(NumChannels(%d))",
 		  __func__, NumChannels);
 	QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
 			   pChannelList, NumChannels);
-	qdf_mem_copy(mac->mlme_cfg->reg.valid_channel_list, pChannelList,
-		     NumChannels);
+	for (i = 0; i < NumChannels; i++) {
+		mac->mlme_cfg->reg.valid_channel_freq_list[i] =
+			wlan_reg_chan_to_freq(mac->pdev, pChannelList[i]);
+	}
+
 	mac->mlme_cfg->reg.valid_channel_list_num = NumChannels;
 
 	QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,