Selaa lähdekoodia

Merge "qcacmn: Configure Allowed Channels and ACS Allowed Channels"

Linux Build Service Account 6 vuotta sitten
vanhempi
sitoutus
fa056a3e14

+ 19 - 0
umac/dfs/dispatcher/inc/wlan_dfs_mlme_api.h

@@ -243,4 +243,23 @@ void dfs_mlme_restart_vaps_with_non_dfs_chan(struct wlan_objmgr_pdev *pdev,
 {
 }
 #endif
+
+/**
+ * dfs_mlme_check_allowed_prim_chanlist() - Check whether the given channel is
+ * present in the primary allowed channel list or not
+ * @pdev: Pointer to DFS pdev object.
+ * @chan_num: Channel number
+ */
+#if defined(WLAN_SUPPORT_PRIMARY_ALLOWED_CHAN)
+bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev,
+					  uint32_t chan_num);
+
+#else
+static inline
+bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev,
+					  uint32_t chan_num)
+{
+	return true;
+}
+#endif
 #endif /* _WLAN_DFS_MLME_API_H_ */

+ 5 - 0
umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h

@@ -54,6 +54,9 @@
  * @mlme_rebuild_chan_list_with_non_dfs_channel: Rebuild channels with non-dfs
  *                                     channels.
  * @mlme_restart_vaps_with_non_dfs_chan: Restart vaps with non-dfs channel.
+ * @mlme_check_allowed_prim_chanlist:  Check whether the given channel is
+ *                                     present in the primary allowed channel
+ *                                     list or not.
  */
 struct dfs_to_mlme {
 	QDF_STATUS (*pdev_component_obj_attach)(struct wlan_objmgr_pdev *pdev,
@@ -130,6 +133,8 @@ struct dfs_to_mlme {
 			(struct wlan_objmgr_pdev *pdev);
 	QDF_STATUS (*mlme_restart_vaps_with_non_dfs_chan)
 			(struct wlan_objmgr_pdev *pdev, int no_chans_avail);
+	bool (*mlme_check_allowed_prim_chanlist)
+			(struct wlan_objmgr_pdev *pdev, uint32_t chan_num);
 };
 
 extern struct dfs_to_mlme global_dfs_to_mlme;

+ 2 - 0
umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c

@@ -83,6 +83,8 @@ void register_dfs_callbacks(void)
 		mlme_dfs_rebuild_chan_list_with_non_dfs_channels;
 	tmp_dfs_to_mlme->mlme_restart_vaps_with_non_dfs_chan =
 		mlme_dfs_restart_vaps_with_non_dfs_chan;
+	tmp_dfs_to_mlme->mlme_check_allowed_prim_chanlist =
+		mlme_dfs_check_allowed_prim_chanlist;
 }
 #else
 void register_dfs_callbacks(void)

+ 12 - 0
umac/dfs/dispatcher/src/wlan_dfs_mlme_api.c

@@ -305,3 +305,15 @@ void dfs_mlme_restart_vaps_with_non_dfs_chan(struct wlan_objmgr_pdev *pdev,
 							       no_chans_avail);
 }
 #endif
+
+#if defined(WLAN_SUPPORT_PRIMARY_ALLOWED_CHAN)
+bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev,
+					  uint32_t chan_num)
+{
+	if (!global_dfs_to_mlme.mlme_check_allowed_prim_chanlist)
+		return true;
+
+	return global_dfs_to_mlme.mlme_check_allowed_prim_chanlist(pdev,
+								   chan_num);
+}
+#endif

+ 4 - 0
umac/dfs/dispatcher/src/wlan_dfs_utils_api.c

@@ -22,6 +22,7 @@
  * to outside of DFS component.
  */
 #include "wlan_dfs_utils_api.h"
+#include "wlan_dfs_mlme_api.h"
 #include "../../core/src/dfs.h"
 #include "../../core/src/dfs_zero_cac.h"
 #include "../../core/src/dfs_etsi_precac.h"
@@ -545,6 +546,9 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
 		center_freq = tmp_chan_list[i].dfs_ch_freq;
 		flagext = tmp_chan_list[i].dfs_ch_flagext;
 
+		if (!dfs_mlme_check_allowed_prim_chanlist(pdev, chan_num))
+			continue;
+
 		if ((is_curchan_5g) && WLAN_REG_IS_5GHZ_CH(chan_num)) {
 			chan_list[j].dfs_ch_ieee = chan_num;
 			chan_list[j].dfs_ch_freq = center_freq;