Browse Source

qcacld-3.0: Calculate secondary channel frequency properly

While calling wlan_reg_set_channel_params_for_freq, calculate
secondary channel frequency properly.

Change-Id: I1fef09d47774eab12f774d86e8eced983bccd366
CRs-Fixed: 2766702
Amar Singhal 4 years ago
parent
commit
d5f37aa8bd
1 changed files with 9 additions and 1 deletions
  1. 9 1
      core/mac/src/pe/lim/lim_utils.c

+ 9 - 1
core/mac/src/pe/lim/lim_utils.c

@@ -8672,6 +8672,7 @@ QDF_STATUS lim_pre_vdev_start(struct mac_context *mac,
 	enum reg_wifi_band band;
 	uint8_t band_mask;
 	struct ch_params ch_params = {0};
+	qdf_freq_t sec_chan_freq = 0;
 
 	band = wlan_reg_freq_to_band(session->curr_op_freq);
 	band_mask = 1 << band;
@@ -8687,8 +8688,15 @@ QDF_STATUS lim_pre_vdev_start(struct mac_context *mac,
 					   session->ch_center_freq_seg1,
 					   band_mask);
 
+	if (band == (REG_BAND_2G) && (ch_params.ch_width == CH_WIDTH_40MHZ)) {
+		if (ch_params.mhz_freq_seg0 ==  session->curr_op_freq + 10)
+			sec_chan_freq = session->curr_op_freq + 20;
+		if (ch_params.mhz_freq_seg0 ==  session->curr_op_freq - 10)
+			sec_chan_freq = session->curr_op_freq - 20;
+	}
+
 	wlan_reg_set_channel_params_for_freq(mac->pdev, session->curr_op_freq,
-					     0, &ch_params);
+					     sec_chan_freq, &ch_params);
 
 	pe_debug("vdev id %d freq %d seg0 %d seg1 %d ch_width %d cac_duration_ms %d beacon_interval %d hidden_ssid: %d dtimPeriod %d slot_time %d bcn tx rate %d mhz seg0 %d mhz seg1 %d",
 		 session->vdev_id, session->curr_op_freq,