Browse Source

Merge "qcacmn: Add host support for multicast RC stale period selection"

Linux Build Service Account 5 years ago
parent
commit
05627eee58

+ 0 - 6
umac/dfs/core/src/dfs.h

@@ -321,12 +321,6 @@
 #define NUM_BINS 128
 #define THOUSAND 1000
 
-/* ETSI11_WORLD regdmn pair id */
-#define ETSI11_WORLD_REGDMN_PAIR_ID 0x26
-#define ETSI12_WORLD_REGDMN_PAIR_ID 0x28
-#define ETSI13_WORLD_REGDMN_PAIR_ID 0x27
-#define ETSI14_WORLD_REGDMN_PAIR_ID 0x29
-
 /* Array offset to ETSI legacy pulse */
 #define ETSI_LEGACY_PULSE_ARR_OFFSET 2
 

+ 1 - 7
umac/dfs/core/src/filtering/dfs_init.c

@@ -436,7 +436,6 @@ bool dfs_is_en302_502_applicable(struct wlan_dfs *dfs)
 	int chan_freq;
 	int chan_width;
 	int overlap = 0;
-	uint16_t regdmn;
 	struct wlan_objmgr_vdev *vdev = NULL;
 	struct wlan_channel *bss_chan = NULL;
 
@@ -478,11 +477,6 @@ bool dfs_is_en302_502_applicable(struct wlan_dfs *dfs)
 				ETSI_RADAR_EN302_502_FREQ_UPPER);
 	}
 
-	regdmn = utils_dfs_get_cur_rd(dfs->dfs_pdev_obj);
-
-	return(((regdmn == ETSI11_WORLD_REGDMN_PAIR_ID) ||
-		(regdmn == ETSI12_WORLD_REGDMN_PAIR_ID) ||
-		(regdmn == ETSI13_WORLD_REGDMN_PAIR_ID) ||
-		(regdmn == ETSI14_WORLD_REGDMN_PAIR_ID)) &&
+	return(wlan_reg_is_regdmn_en302502_applicable(dfs->dfs_pdev_obj) &&
 	       overlap);
 }

+ 8 - 0
umac/regulatory/core/src/reg_db.c

@@ -1386,3 +1386,11 @@ bool reg_etsi13_regdmn(uint8_t reg_dmn)
 {
 	return reg_dmn == ETSI13;
 }
+
+bool reg_en302_502_regdmn(uint16_t regdmn)
+{
+	return ((regdmn == ETSI11_WORLD) ||
+		(regdmn == ETSI12_WORLD) ||
+		(regdmn == ETSI14_WORLD) ||
+		(regdmn == ETSI15_WORLD));
+}

+ 8 - 0
umac/regulatory/core/src/reg_db.h

@@ -101,4 +101,12 @@ QDF_STATUS reg_get_default_country(uint16_t *default_country);
  * Return: true or false
  */
 bool reg_etsi13_regdmn(uint8_t reg_dmn);
+
+/**
+ * reg_en302_502_regdmn() - Check if the reg domain is en302_502 applicable.
+ * @reg_dmn: Regulatory domain pair ID.
+ *
+ * Return: True if EN302_502 applicable, else false.
+ */
+bool reg_en302_502_regdmn(uint16_t reg_dmn);
 #endif

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

@@ -2009,3 +2009,17 @@ QDF_STATUS reg_enable_dfs_channels(struct wlan_objmgr_pdev *pdev,
 
 	return status;
 }
+
+bool reg_is_regdmn_en302502_applicable(struct wlan_objmgr_pdev *pdev)
+{
+	struct cur_regdmn_info cur_reg_dmn;
+	QDF_STATUS status;
+
+	status = reg_get_curr_regdomain(pdev, &cur_reg_dmn);
+	if (status != QDF_STATUS_SUCCESS) {
+		reg_err("Failed to get reg domain");
+		return false;
+	}
+
+	return reg_en302_502_regdmn(cur_reg_dmn.regdmn_pair_id);
+}

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

@@ -505,4 +505,13 @@ uint32_t reg_max_5ghz_ch_num(void);
  * Return: QDF_STATUS
  */
 QDF_STATUS reg_enable_dfs_channels(struct wlan_objmgr_pdev *pdev, bool enable);
+
+/**
+ * reg_is_regdmn_en302502_applicable() - Find if ETSI EN302_502 radar pattern
+ * is applicable in current regulatory domain.
+ * @pdev: Pdev object pointer.
+ *
+ * Return: True if en302_502 is applicable, else false.
+ */
+bool reg_is_regdmn_en302502_applicable(struct wlan_objmgr_pdev *pdev);
 #endif

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

@@ -692,4 +692,15 @@ void wlan_reg_update_nol_history_ch(struct wlan_objmgr_pdev *pdev,
 				    uint8_t *ch_list,
 				    uint8_t num_ch,
 				    bool nol_history_ch);
+
+/**
+ * wlan_reg_is_regdmn_en302502_applicable() - Find if ETSI EN302_502 radar
+ * pattern is applicable in the current regulatory domain.
+ * @pdev:    Pdev ptr.
+ *
+ * Return: Boolean.
+ * True:  If EN302_502 is applicable.
+ * False: otherwise.
+ */
+bool wlan_reg_is_regdmn_en302502_applicable(struct wlan_objmgr_pdev *pdev);
 #endif

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

@@ -708,3 +708,8 @@ enum channel_enum wlan_reg_get_chan_enum(uint32_t chan_num)
 {
 	return reg_get_chan_enum(chan_num);
 }
+
+bool wlan_reg_is_regdmn_en302502_applicable(struct wlan_objmgr_pdev *pdev)
+{
+	return reg_is_regdmn_en302502_applicable(pdev);
+}

+ 1 - 0
wmi/inc/wmi_unified_param.h

@@ -5152,6 +5152,7 @@ typedef enum {
 	wmi_vdev_param_ul_fixed_rate,
 	wmi_vdev_param_rawmode_open_war,
 	wmi_vdev_param_max_mtu_size,
+	wmi_vdev_param_mcast_rc_stale_period,
 } wmi_conv_vdev_param_id;
 
 /**

+ 2 - 0
wmi/src/wmi_unified_tlv.c

@@ -465,6 +465,8 @@ static const uint32_t vdev_param_tlv[] = {
 	[wmi_vdev_param_ul_fixed_rate] = WMI_VDEV_PARAM_UL_FIXED_RATE,
 	[wmi_vdev_param_rawmode_open_war] = WMI_VDEV_PARAM_RAW_IS_ENCRYPTED,
 	[wmi_vdev_param_max_mtu_size] = WMI_VDEV_PARAM_MAX_MTU_SIZE,
+	[wmi_vdev_param_mcast_rc_stale_period] =
+					WMI_VDEV_PARAM_MCAST_RC_STALE_PERIOD,
 };
 #endif