Quellcode durchsuchen

qcacld-3.0: Add API for EMLSR padding delay

Add support to configure EMLSR padding delay subfield.
Host should advertise this value in assoc request if
it's greater than the value configured by FW during boot.

Change-Id: Ia9b1e748745278ed502980697f4851f8044db658
CRs-Fixed: 3364158
Gururaj Pandurangi vor 2 Jahren
Ursprung
Commit
e2119da18d

+ 18 - 0
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -2574,6 +2574,19 @@ void
 wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
 			 struct wlan_mlo_eml_cap *cap);
 
+/**
+ * wlan_mlme_cfg_set_emlsr_pad_delay() - Configure EMLSR padding delay subfield
+ * @psoc: psoc context
+ * @val: EMLSR padding delay subfield value
+ *
+ * API to configure EMLSR padding delay subfield in psoc mlme obj with user
+ * requested value if it greater than the value configured by FW during boot-up.
+ *
+ * Return: none
+ */
+void
+wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val);
+
 /**
  * wlan_mlme_get_t2lm_negotiation_supported() - Get the T2LM
  * negotiation supported value
@@ -2634,6 +2647,11 @@ wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
 {
 }
 
+static inline void
+wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val)
+{
+}
+
 static inline enum t2lm_negotiation_support
 wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc)
 {

+ 19 - 1
components/mlme/dispatcher/src/wlan_mlme_api.c

@@ -3469,7 +3469,7 @@ wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
 	struct wlan_mlme_psoc_ext_obj *mlme_obj;
 
 	if (!cap->emlcap.emlsr_supp) {
-		mlme_legacy_debug("No EMLSR supp: %d", cap->emlcap.emlsr_supp);
+		mlme_legacy_debug("EMLSR supp: %d", cap->emlcap.emlsr_supp);
 		return;
 	}
 
@@ -3501,6 +3501,24 @@ wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
 	cap->emlmr_supp = mlme_obj->cfg.eml_cap.emlmr_supp;
 }
 
+void
+wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val)
+{
+	struct wlan_mlme_psoc_ext_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_ext_obj(psoc);
+	if (!mlme_obj) {
+		mlme_legacy_err("No psoc object");
+		return;
+	}
+
+	if (val > mlme_obj->cfg.eml_cap.emlsr_pad_delay &&
+	    val <= WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_256US) {
+		mlme_obj->cfg.eml_cap.emlsr_pad_delay = val;
+		mlme_debug("EMLSR padding delay configured to %d", val);
+	}
+}
+
 enum t2lm_negotiation_support
 wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc)
 {