Browse Source

qcacmn: Add APIs to set and get acs_mode in vdev mlme obj

To support fixed channel SAP in unsafe channels, driver needs
to cache and retrieve SAP start mode i.e. ACS or fixed.
Add a new param is_acs_mode to vdev_mlme_mgmt_ap and APIs to
set and get the same through vdev.

Change-Id: Ib274b95be66e774b15f4687a02ed7fef6bf21056
CRs-Fixed: 3381401
Srinivas Dasari 2 năm trước cách đây
mục cha
commit
539d3bfb53

+ 2 - 0
umac/mlme/include/wlan_vdev_mlme.h

@@ -435,6 +435,7 @@ struct wlan_vdev_aid_mgr {
  * @max_chan_switch_time: Max channel switch time in milliseconds.
  * @last_bcn_ts_ms: Timestamp (in milliseconds) of the last beacon sent on the
  *                  CSA triggered channel.
+ * @is_acs_mode: True if SAP is started in ACS mode
  */
 struct vdev_mlme_mgmt_ap {
 	bool hidden_ssid;
@@ -442,6 +443,7 @@ struct vdev_mlme_mgmt_ap {
 	struct wlan_vdev_aid_mgr *aid_mgr;
 	uint32_t max_chan_switch_time;
 	unsigned long last_bcn_ts_ms;
+	bool is_acs_mode;
 };
 
 /**

+ 12 - 1
umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -243,4 +243,15 @@ QDF_STATUS ucfg_vdev_mgr_cdp_vdev_attach(struct wlan_objmgr_vdev *vdev);
  */
 QDF_STATUS ucfg_vdev_mgr_cdp_vdev_detach(struct wlan_objmgr_vdev *vdev);
 #endif
+
+/**
+ * ucfg_util_vdev_mgr_set_acs_mode_for_vdev() - ucfg API to set SAP start mode
+ * @vdev: pointer to vdev object
+ * @is_acs_mode: Carries true if SAP is started in ACS
+ *
+ * Return: None
+ */
+void
+ucfg_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev,
+					 bool is_acs_mode);
 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */

+ 18 - 1
umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_utils_api.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2019 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -171,6 +171,23 @@ void wlan_util_vdev_mgr_set_cac_timeout_for_vdev(struct wlan_objmgr_vdev *vdev,
 						 uint32_t new_chan_cac_ms);
 #endif /* MOBILE_DFS_SUPPORT */
 
+/**
+ * wlan_util_vdev_mgr_set_acs_mode_for_vdev() - set if the SAP is started in ACS
+ * @vdev: Pointer to vdev object.
+ * @is_acs_mode: Indicates true if the SAP is started in ACS
+ *
+ * Return: void
+ */
+void wlan_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev,
+					      bool is_acs_mode);
+
+/**
+ * wlan_util_vdev_mgr_get_acs_mode_for_vdev() - Get the SAP start mode
+ * @vdev: Pointer to vdev object.
+ *
+ * Return: true if the SAP is started in ACS
+ */
+bool wlan_util_vdev_mgr_get_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev);
 #ifdef WLAN_FEATURE_11BE_MLO
 /**
  * wlan_util_vdev_mgr_quiet_offload() - set quiet status for given link

+ 7 - 0
umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_ucfg_api.c

@@ -206,3 +206,10 @@ QDF_STATUS ucfg_vdev_mgr_cdp_vdev_detach(struct wlan_objmgr_vdev *vdev)
 
 qdf_export_symbol(ucfg_vdev_mgr_cdp_vdev_detach);
 #endif
+
+void
+ucfg_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev,
+					 bool is_acs_mode)
+{
+	wlan_util_vdev_mgr_set_acs_mode_for_vdev(vdev, is_acs_mode);
+}

+ 28 - 1
umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -761,6 +761,33 @@ void wlan_util_vdev_mgr_set_cac_timeout_for_vdev(struct wlan_objmgr_vdev *vdev,
 }
 #endif /* MOBILE_DFS_SUPPORT */
 
+void wlan_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev,
+					      bool is_acs_mode)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_err("vdev_mlme is null");
+		return;
+	}
+
+	vdev_mlme->mgmt.ap.is_acs_mode = is_acs_mode;
+}
+
+bool wlan_util_vdev_mgr_get_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_err("vdev_mlme is null");
+		return false;
+	}
+
+	return vdev_mlme->mgmt.ap.is_acs_mode;
+}
+
 QDF_STATUS wlan_util_vdev_mgr_get_csa_channel_switch_time(
 		struct wlan_objmgr_vdev *vdev,
 		uint32_t *chan_switch_time)