Browse Source

qcacld-3.0: Don't find dsrc channel based on channel number

Channel number may be same for different bands due to which
non-dsrc channel may be treated as dsrc or vice-versa.

Fix is to find channel is dscrc or non-dsrc based on frequency.

Change-Id: I349172713dda6880771e14231aeb1b4419a86e01
CRs-Fixed: 2902986
sheenam monga 4 years ago
parent
commit
1f6cb040c4

+ 1 - 1
components/tdls/core/src/wlan_tdls_peer.c

@@ -535,7 +535,7 @@ void tdls_extract_peer_state_param(struct tdls_peer_update_state *peer_param,
 
 		if (CHANNEL_STATE_INVALID != ch_state &&
 		    CHANNEL_STATE_DFS != ch_state &&
-		    !wlan_reg_is_dsrc_chan(pdev, chan_id)) {
+		    !wlan_reg_is_dsrc_freq(ch_freq)) {
 			peer_param->peer_cap.peer_chan[num].chan_id = chan_id;
 			peer_param->peer_cap.peer_chan[num].pwr =
 				wlan_reg_get_channel_reg_power(pdev, chan_id);

+ 2 - 31
core/hdd/src/wlan_hdd_cfg80211.c

@@ -15179,34 +15179,6 @@ wlan_hdd_extscan_get_valid_channels_policy[EXTSCAN_CONFIG_MAX + 1] = {
 	[EXTSCAN_CONFIG_MAX_CHANNELS] = {.type = NLA_U32},
 };
 
-/**
- * hdd_remove_dsrc_channels () - remove dsrc chanels
- * @hdd_ctx: hdd context
- * @wiphy: Pointer to wireless phy
- * @chan_list: channel list
- * @num_channels: number of channels
- *
- * Return: none
- */
-static void hdd_remove_dsrc_channels(struct hdd_context *hdd_ctx,
-				     struct wiphy *wiphy, uint32_t *chan_list,
-				     uint8_t *num_channels)
-{
-	uint8_t num_chan_temp = 0;
-	int i;
-
-	for (i = 0; i < *num_channels; i++) {
-		if (!wlan_reg_is_dsrc_chan(hdd_ctx->pdev,
-					   wlan_reg_freq_to_chan(
-					   hdd_ctx->pdev,
-					   chan_list[i]))) {
-			chan_list[num_chan_temp] = chan_list[i];
-			num_chan_temp++;
-		}
-	}
-	*num_channels = num_chan_temp;
-}
-
 /**
  * hdd_remove_passive_channels () - remove passive channels
  * @wiphy: Pointer to wireless phy
@@ -15323,7 +15295,6 @@ __wlan_hdd_cfg80211_extscan_get_valid_channels(struct wiphy *wiphy,
 
 	num_channels = QDF_MIN(num_channels, max_channels);
 
-	hdd_remove_dsrc_channels(hdd_ctx, wiphy, chan_list, &num_channels);
 	if ((QDF_SAP_MODE == adapter->device_mode) ||
 	    !strncmp(hdd_get_fwpath(), "ap", 2))
 		hdd_remove_passive_channels(wiphy, chan_list,
@@ -24078,8 +24049,8 @@ void wlan_hdd_init_chan_info(struct hdd_context *hdd_ctx)
 
 	num_5g = QDF_ARRAY_SIZE(hdd_channels_5_ghz);
 	for (; (index - num_2g) < num_5g; index++) {
-		if (wlan_reg_is_dsrc_chan(hdd_ctx->pdev,
-		    hdd_channels_5_ghz[index - num_2g].hw_value))
+		if (wlan_reg_is_dsrc_freq(
+		    hdd_channels_5_ghz[index - num_2g].center_freq))
 			continue;
 		hdd_ctx->chan_info[index].freq =
 			hdd_channels_5_ghz[index - num_2g].center_freq;

+ 3 - 3
core/mac/src/pe/lim/lim_process_tdls.c

@@ -233,9 +233,9 @@ static void populate_dot11f_tdls_offchannel_params(
 				validChan[i], nss_5g, nss_2g);
 			continue;
 		} else {
-			if (wlan_reg_is_dsrc_chan(mac->pdev, validChan[i])) {
-				pe_debug("skipping channel: %d from the valid channel list",
-					validChan[i]);
+			if (wlan_reg_is_dsrc_freq(ch_freq)) {
+				pe_debug("skipping freq: %d from the valid freq list",
+					 ch_freq);
 				continue;
 			}
 		}

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

@@ -484,7 +484,7 @@ static bool sap_chan_sel_init(mac_handle_t mac_handle,
 			continue;
 
 		/* Skip DSRC channels */
-		if (wlan_reg_is_dsrc_chan(mac->pdev, channel))
+		if (wlan_reg_is_dsrc_freq(pSpectCh->chan_freq))
 			continue;
 
 		/*