瀏覽代碼

qcacmn: Add a feature flag for 4.9 GHz channels

Condition 4.9 GHz channels under a macro CONFIG_49GHZ_CHAN
since only WIN uses these channels and not MCC.
This reduces kmalloc memory allocation in regulatory
component.

Change-Id: Ie9241dd68909f68fa70012b664c7bc7cf050c1a5
CRs-Fixed: 2766046
Gururaj Pandurangi 4 年之前
父節點
當前提交
a30081e58e

+ 38 - 4
umac/regulatory/core/src/reg_build_chan_list.c

@@ -960,6 +960,40 @@ void reg_propagate_mas_chan_list_to_pdev(struct wlan_objmgr_psoc *psoc,
 	}
 }
 
+/**
+ * reg_populate_49g_band_channels() - For all the valid 4.9GHz regdb channels
+ * in the master channel list, find the regulatory rules and call
+ * reg_fill_channel_info() to populate master channel list with txpower,
+ * antennagain, BW info, etc.
+ * @reg_rule_5g: Pointer to regulatory rule.
+ * @num_5g_reg_rules: Number of regulatory rules.
+ * @min_bw_5g: Minimum regulatory bandwidth.
+ * @mas_chan_list: Pointer to the master channel list.
+ */
+#ifdef CONFIG_49GHZ_CHAN
+static void
+reg_populate_49g_band_channels(struct cur_reg_rule *reg_rule_5g,
+			       uint32_t num_5g_reg_rules,
+			       uint16_t min_bw_5g,
+			       struct regulatory_channel *mas_chan_list)
+{
+	reg_populate_band_channels(MIN_49GHZ_CHANNEL,
+				   MAX_49GHZ_CHANNEL,
+				   reg_rule_5g,
+				   num_5g_reg_rules,
+				   min_bw_5g,
+				   mas_chan_list);
+}
+#else
+static void
+reg_populate_49g_band_channels(struct cur_reg_rule *reg_rule_5g,
+			       uint32_t num_5g_reg_rules,
+			       uint16_t min_bw_5g,
+			       struct regulatory_channel *mas_chan_list)
+{
+}
+#endif /* CONFIG_49GHZ_CHAN */
+
 /**
  * reg_populate_6g_band_channels() - For all the valid 6GHz regdb channels
  * in the master channel list, find the regulatory rules and call
@@ -1225,10 +1259,10 @@ QDF_STATUS reg_process_master_chan_list(
 		reg_populate_band_channels(MIN_5GHZ_CHANNEL, MAX_5GHZ_CHANNEL,
 					   reg_rule_5g, num_5g_reg_rules,
 					   min_bw_5g, mas_chan_list);
-		reg_populate_band_channels(MIN_49GHZ_CHANNEL,
-					   MAX_49GHZ_CHANNEL,
-					   reg_rule_5g, num_5g_reg_rules,
-					   min_bw_5g, mas_chan_list);
+		reg_populate_49g_band_channels(reg_rule_5g,
+					       num_5g_reg_rules,
+					       min_bw_5g,
+					       mas_chan_list);
 		reg_populate_6g_band_channels(reg_rule_5g,
 					      num_5g_reg_rules,
 					      min_bw_5g,

+ 14 - 12
umac/regulatory/core/src/reg_services_common.c

@@ -191,7 +191,7 @@ const struct chan_map channel_map_us[NUM_CHANNELS] = {
 	[CHAN_ENUM_2467] = {2467, 12, 20, 40},
 	[CHAN_ENUM_2472] = {2472, 13, 20, 40},
 	[CHAN_ENUM_2484] = {2484, 14, 20, 20},
-
+#ifdef CONFIG_49GHZ_CHAN
 	[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -234,7 +234,7 @@ const struct chan_map channel_map_us[NUM_CHANNELS] = {
 	[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
-
+#endif /* CONFIG_49GHZ_CHAN */
 	[CHAN_ENUM_5180] = {5180, 36, 2, 160},
 	[CHAN_ENUM_5200] = {5200, 40, 2, 160},
 	[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -361,7 +361,7 @@ const struct chan_map channel_map_eu[NUM_CHANNELS] = {
 	[CHAN_ENUM_2467] = {2467, 12, 20, 40},
 	[CHAN_ENUM_2472] = {2472, 13, 20, 40},
 	[CHAN_ENUM_2484] = {2484, 14, 20, 20},
-
+#ifdef CONFIG_49GHZ_CHAN
 	[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -404,7 +404,7 @@ const struct chan_map channel_map_eu[NUM_CHANNELS] = {
 	[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
-
+#endif /* CONFIG_49GHZ_CHAN */
 	[CHAN_ENUM_5180] = {5180, 36, 2, 160},
 	[CHAN_ENUM_5200] = {5200, 40, 2, 160},
 	[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -531,7 +531,7 @@ const struct chan_map channel_map_jp[NUM_CHANNELS] = {
 	[CHAN_ENUM_2467] = {2467, 12, 20, 40},
 	[CHAN_ENUM_2472] = {2472, 13, 20, 40},
 	[CHAN_ENUM_2484] = {2484, 14, 20, 20},
-
+#ifdef CONFIG_49GHZ_CHAN
 	[CHAN_ENUM_4912] = {4912, 182, 5, 5},
 	[CHAN_ENUM_4915] = {4915, 183, 10, 10},
 	[CHAN_ENUM_4917] = {4917, 183, 5, 5},
@@ -574,7 +574,7 @@ const struct chan_map channel_map_jp[NUM_CHANNELS] = {
 	[CHAN_ENUM_5057] = {5057, 11, 5, 5},
 	[CHAN_ENUM_5060] = {5060, 12, 20, 20},
 	[CHAN_ENUM_5080] = {5080, 16, 20, 20},
-
+#endif /* CONFIG_49GHZ_CHAN */
 	[CHAN_ENUM_5180] = {5180, 36, 2, 160},
 	[CHAN_ENUM_5200] = {5200, 40, 2, 160},
 	[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -701,7 +701,7 @@ const struct chan_map channel_map_global[NUM_CHANNELS] = {
 	[CHAN_ENUM_2467] = {2467, 12, 20, 40},
 	[CHAN_ENUM_2472] = {2472, 13, 20, 40},
 	[CHAN_ENUM_2484] = {2484, 14, 20, 20},
-
+#ifdef CONFIG_49GHZ_CHAN
 	[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -744,7 +744,7 @@ const struct chan_map channel_map_global[NUM_CHANNELS] = {
 	[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
-
+#endif /* CONFIG_49GHZ_CHAN */
 	[CHAN_ENUM_5180] = {5180, 36, 2, 160},
 	[CHAN_ENUM_5200] = {5200, 40, 2, 160},
 	[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -871,7 +871,7 @@ const struct chan_map channel_map_china[NUM_CHANNELS] = {
 	[CHAN_ENUM_2467] = {2467, 12, 20, 40},
 	[CHAN_ENUM_2472] = {2472, 13, 20, 40},
 	[CHAN_ENUM_2484] = {2484, 14, 20, 20},
-
+#ifdef CONFIG_49GHZ_CHAN
 	[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -914,7 +914,7 @@ const struct chan_map channel_map_china[NUM_CHANNELS] = {
 	[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
 	[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
-
+#endif /* CONFIG_49GHZ_CHAN */
 	[CHAN_ENUM_5180] = {5180, 36, 2, 160},
 	[CHAN_ENUM_5200] = {5200, 40, 2, 160},
 	[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -2724,7 +2724,7 @@ reg_get_band_channel_list(struct wlan_objmgr_pdev *pdev,
 		}
 	}
 	if (BAND_5G_PRESENT(band_mask)) {
-		for (i = MIN_49GHZ_CHANNEL; i <= MAX_5GHZ_CHANNEL; i++) {
+		for (i = BAND_5GHZ_START_CHANNEL; i <= MAX_5GHZ_CHANNEL; i++) {
 			if ((cur_chan_list[i].state != CHANNEL_STATE_DISABLE) &&
 			    !(cur_chan_list[i].chan_flags &
 			      REGULATORY_CHAN_DISABLED)) {
@@ -2795,7 +2795,7 @@ qdf_freq_t reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
 		}
 
 		if (BAND_5G_PRESENT(band_mask)) {
-			min_chan = MIN_49GHZ_CHANNEL;
+			min_chan = BAND_5GHZ_START_CHANNEL;
 			max_chan = MAX_5GHZ_CHANNEL;
 
 			return reg_compute_chan_to_freq(pdev, chan_num,
@@ -2808,10 +2808,12 @@ qdf_freq_t reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
 	}
 }
 
+#ifdef CONFIG_49GHZ_CHAN
 bool reg_is_49ghz_freq(qdf_freq_t freq)
 {
 	return REG_IS_49GHZ_FREQ(freq);
 }
+#endif /* CONFIG_49GHZ_CHAN */
 
 qdf_freq_t reg_ch_num(uint32_t ch_enum)
 {

+ 10 - 0
umac/regulatory/core/src/reg_services_common.h

@@ -57,8 +57,13 @@
 #define REG_MAX_5GHZ_CH_FREQ channel_map[MAX_5GHZ_CHANNEL].center_freq
 #endif /* CONFIG_CHAN_FREQ_API */
 
+#ifdef CONFIG_49GHZ_CHAN
 #define REG_MIN_49GHZ_CH_FREQ channel_map[MIN_49GHZ_CHANNEL].center_freq
 #define REG_MAX_49GHZ_CH_FREQ channel_map[MAX_49GHZ_CHANNEL].center_freq
+#else
+#define REG_MIN_49GHZ_CH_FREQ 0
+#define REG_MAX_49GHZ_CH_FREQ 0
+#endif /* CONFIG_49GHZ_CHAN */
 
 #define REG_IS_49GHZ_FREQ(freq) \
 	(((freq) >= REG_MIN_49GHZ_CH_FREQ) &&   \
@@ -85,8 +90,13 @@
 				  center_freq - HALF_20MHZ_BW)
 #define TWO_GIG_ENDING_EDGE_FREQ   (channel_map_global[MAX_24GHZ_CHANNEL]. \
 				  center_freq + HALF_20MHZ_BW)
+#ifdef CONFIG_49GHZ_CHAN
 #define FIVE_GIG_STARTING_EDGE_FREQ (channel_map_global[MIN_49GHZ_CHANNEL]. \
 				  center_freq - HALF_5MHZ_BW)
+#else
+#define FIVE_GIG_STARTING_EDGE_FREQ (channel_map_global[MIN_5GHZ_CHANNEL]. \
+				  center_freq - HALF_20MHZ_BW)
+#endif /* CONFIG_49GHZ_CHAN */
 #define FIVE_GIG_ENDING_EDGE_FREQ   (channel_map_global[MAX_5GHZ_CHANNEL]. \
 				  center_freq + HALF_20MHZ_BW)
 

+ 15 - 3
umac/regulatory/dispatcher/inc/reg_services_public_struct.h

@@ -294,7 +294,7 @@ enum channel_enum {
 	CHAN_ENUM_2467,
 	CHAN_ENUM_2472,
 	CHAN_ENUM_2484,
-
+#ifdef CONFIG_49GHZ_CHAN
 	CHAN_ENUM_4912,
 	CHAN_ENUM_4915,
 	CHAN_ENUM_4917,
@@ -337,7 +337,7 @@ enum channel_enum {
 	CHAN_ENUM_5057,
 	CHAN_ENUM_5060,
 	CHAN_ENUM_5080,
-
+#endif /* CONFIG_49GHZ_CHAN */
 	CHAN_ENUM_5180,
 	CHAN_ENUM_5200,
 	CHAN_ENUM_5220,
@@ -457,9 +457,17 @@ enum channel_enum {
 	MAX_24GHZ_CHANNEL = CHAN_ENUM_2484,
 	NUM_24GHZ_CHANNELS = (MAX_24GHZ_CHANNEL - MIN_24GHZ_CHANNEL + 1),
 
+	INVALID_CHANNEL = 0xBAD,
+
+#ifdef CONFIG_49GHZ_CHAN
 	MIN_49GHZ_CHANNEL = CHAN_ENUM_4912,
 	MAX_49GHZ_CHANNEL = CHAN_ENUM_5080,
 	NUM_49GHZ_CHANNELS = (MAX_49GHZ_CHANNEL - MIN_49GHZ_CHANNEL + 1),
+#else
+	MIN_49GHZ_CHANNEL = INVALID_CHANNEL,
+	MAX_49GHZ_CHANNEL = INVALID_CHANNEL,
+	NUM_49GHZ_CHANNELS = 0,
+#endif /* CONFIG_49GHZ_CHAN */
 
 	MIN_5GHZ_CHANNEL = CHAN_ENUM_5180,
 	MAX_5GHZ_CHANNEL = CHAN_ENUM_5885,
@@ -479,7 +487,11 @@ enum channel_enum {
 	MAX_5DOT9_CHANNEL = CHAN_ENUM_5885,
 	NUM_5DOT9_CHANNELS = (MAX_5DOT9_CHANNEL - MIN_5DOT9_CHANNEL + 1),
 
-	INVALID_CHANNEL = 0xBAD,
+#ifdef CONFIG_49GHZ_CHAN
+#define BAND_5GHZ_START_CHANNEL MIN_49GHZ_CHANNEL
+#else
+#define BAND_5GHZ_START_CHANNEL MIN_5GHZ_CHANNEL
+#endif /* CONFIG_49GHZ_CHAN */
 
 #ifdef DISABLE_UNII_SHARED_BANDS
 	MIN_UNII_1_BAND_CHANNEL = CHAN_ENUM_5180,

+ 10 - 0
umac/regulatory/dispatcher/inc/wlan_reg_services_api.h

@@ -349,6 +349,7 @@ qdf_freq_t wlan_reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
 				      uint8_t chan,
 				      uint8_t band_mask);
 
+#ifdef CONFIG_49GHZ_CHAN
 /**
  * wlan_reg_is_49ghz_freq() - Check if the given channel frequency is 4.9GHz
  * @freq: Channel frequency
@@ -358,6 +359,15 @@ qdf_freq_t wlan_reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
 #define WLAN_REG_IS_49GHZ_FREQ(freq) wlan_reg_is_49ghz_freq(freq)
 bool wlan_reg_is_49ghz_freq(qdf_freq_t freq);
 
+#else
+
+#define WLAN_REG_IS_49GHZ_FREQ(freq) (false)
+static inline bool wlan_reg_is_49ghz_freq(qdf_freq_t freq)
+{
+	return false;
+}
+#endif /* CONFIG_49GHZ_CHAN */
+
 /**
  * wlan_reg_ch_num() - Get channel number from channel enum
  * @ch_enum: Channel enum

+ 2 - 0
umac/regulatory/dispatcher/src/wlan_reg_services_api.c

@@ -872,10 +872,12 @@ qdf_freq_t wlan_reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
 
 qdf_export_symbol(wlan_reg_chan_band_to_freq);
 
+#ifdef CONFIG_49GHZ_CHAN
 bool wlan_reg_is_49ghz_freq(qdf_freq_t freq)
 {
 	return reg_is_49ghz_freq(freq);
 }
+#endif /* CONFIG_49GHZ_CHAN */
 
 uint8_t wlan_reg_ch_num(uint32_t ch_enum)
 {