Browse Source

qcacmn: Add support for STA+GO DFS scc in VDEV MGR

Add variable and get / set APIs in VDEV mgr for STA + SAP / GO DFS SCC
scenario to track SAP / GO's channel switch before STA's channel switch

Change-Id: Ie13291602a5888942c71e3882c72796c7ea47378
CRs-Fixed: 3431360
Rachit Kankane 2 years ago
parent
commit
d458f39acf
1 changed files with 53 additions and 0 deletions
  1. 53 0
      umac/mlme/include/wlan_vdev_mlme.h

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

@@ -363,6 +363,8 @@ struct vdev_mlme_proto {
  * @bssid: bssid
  * @phy_mode: phy mode
  * @special_vdev_mode: indicates special vdev mode
+ * @is_sap_go_moved_1st_on_csa: Indicates if STA receives
+ *				CSA to a DFS channel
  * @he_spr_sr_ctrl:     Spatial reuse SR control
  * @he_spr_non_srg_pd_max_offset: Non-SRG PD max offset
  * @he_spr_srg_max_pd_offset: SRG PD max offset
@@ -401,6 +403,7 @@ struct vdev_mlme_mgmt_generic {
 	uint8_t bssid[QDF_MAC_ADDR_SIZE];
 	uint32_t phy_mode;
 	bool special_vdev_mode;
+	bool is_sap_go_moved_1st_on_csa;
 #ifdef WLAN_FEATURE_SR
 	uint8_t he_spr_sr_ctrl;
 	uint8_t he_spr_non_srg_pd_max_offset;
@@ -1185,6 +1188,56 @@ static inline bool wlan_vdev_mlme_is_special_vdev(
 	return vdev_mlme->mgmt.generic.special_vdev_mode;
 }
 
+/**
+ * wlan_vdev_mlme_is_sap_go_move_before_sta() - check if SAP / GO
+ * moved to new channel before STA's movement upon receiving CSA
+ *
+ * @vdev: VDEV object
+ *
+ * API to check in STA+SAP/GO SCC concurrency, whether SAP / GO moved before
+ * STA's movement on receiving CSA from peer AP to connected STA.
+ *
+ * Return: true if SAP / GO moved before STA else false
+ */
+static inline
+bool wlan_vdev_mlme_is_sap_go_move_before_sta(struct wlan_objmgr_vdev *vdev)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme)
+		return false;
+
+	return vdev_mlme->mgmt.generic.is_sap_go_moved_1st_on_csa;
+}
+
+/**
+ * wlan_vdev_mlme_set_sap_go_move_before_sta() - Set flag if SAP / GO
+ * moves to new channel before STA's movement upon receiving CSA
+ *
+ * @vdev: VDEV object
+ * @sap_go_moved_before_sta: Flag to indicate True when SAP / GO
+ *  moves before STA
+ *
+ * API to set True in STA+SAP/GO SCC concurrency, when SAP / GO moves before
+ * STA's movement on receiving CSA from peer AP to connected STA.
+ *
+ * Return: void
+ */
+static inline
+void wlan_vdev_mlme_set_sap_go_move_before_sta(struct wlan_objmgr_vdev *vdev,
+					       bool sap_go_moved_before_sta)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme)
+		return;
+
+	vdev_mlme->mgmt.generic.is_sap_go_moved_1st_on_csa =
+						sap_go_moved_before_sta;
+}
+
 #ifdef WLAN_FEATURE_11AX
 /**
  * wlan_vdev_mlme_set_he_mcs_12_13_map() - set he mcs12/13 map