فهرست منبع

qcacmn: Add support to extract wmi_mlo_link_removal_evt_fixed_param TLV

WMI_MLO_LINK_REMOVAL_EVENTID will be sent by FW to update the Host with the
progress of the link delete operation. Add support to extract the fixed
params TLV sent in this event.

Change-Id: Ic42a822339363b1347ae174926a4dac19eef3f99
CRs-Fixed: 3318005
Shiva Krishna Pittala 2 سال پیش
والد
کامیت
b24b3a7e25

+ 8 - 0
umac/mlo_mgr/inc/wlan_mlo_mgr_public_structs.h

@@ -1019,4 +1019,12 @@ struct mlo_link_removal_cmd_params {
 	uint8_t *reconfig_ml_ie;
 	uint32_t reconfig_ml_ie_size;
 };
+
+/*
+ * struct mlo_link_removal_evt_params - MLO link removal event parameters
+ * @vdev_id: vdev ID of the link to be removed
+ */
+struct mlo_link_removal_evt_params {
+	uint8_t vdev_id;
+};
 #endif

+ 14 - 0
wmi/inc/wmi_unified_11be_api.h

@@ -75,6 +75,20 @@ wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi_handle, void *evt_buf,
 QDF_STATUS wmi_send_mlo_link_removal_cmd(
 		wmi_unified_t wmi,
 		const struct mlo_link_removal_cmd_params *param);
+
+/**
+ * wmi_extract_mlo_link_removal_evt_fixed_param() - Extract fixed parameters TLV
+ * from the MLO link removal WMI  event
+ * @wmi_handle: wmi handle
+ * @buf: pointer to event buffer
+ * @params: MLO link removal event parameters
+ *
+ * Return: QDF_STATUS_SUCCESS of operation
+ */
+QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param(
+		struct wmi_unified *wmi_handle,
+		void *buf,
+		struct mlo_link_removal_evt_params *params);
 #endif /*WLAN_FEATURE_11BE_MLO*/
 
 #ifdef WLAN_FEATURE_11BE

+ 5 - 0
wmi/inc/wmi_unified_priv.h

@@ -3039,6 +3039,11 @@ QDF_STATUS
 QDF_STATUS (*send_mlo_link_removal_cmd)(
 		wmi_unified_t wmi_handle,
 		const struct mlo_link_removal_cmd_params *params);
+
+QDF_STATUS (*extract_mlo_link_removal_evt_fixed_param)(
+		struct wmi_unified *wmi_handle,
+		void *buf,
+		struct mlo_link_removal_evt_params *params);
 #endif
 
 #ifdef WLAN_FEATURE_SON

+ 12 - 0
wmi/src/wmi_unified_11be_api.c

@@ -129,3 +129,15 @@ QDF_STATUS wmi_send_mlo_link_removal_cmd(
 
 	return QDF_STATUS_E_FAILURE;
 }
+
+QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param(
+		struct wmi_unified *wmi,
+		void *buf,
+		struct mlo_link_removal_evt_params *params)
+{
+	if (wmi->ops->extract_mlo_link_removal_evt_fixed_param)
+		return wmi->ops->extract_mlo_link_removal_evt_fixed_param(
+							wmi, buf, params);
+
+	return QDF_STATUS_E_FAILURE;
+}

+ 36 - 0
wmi/src/wmi_unified_11be_tlv.c

@@ -668,6 +668,40 @@ static QDF_STATUS send_mlo_link_removal_cmd_tlv(
 	return ret;
 }
 
+/**
+ * extract_mlo_link_removal_evt_fixed_param_tlv() - Extract fixed parameters TLV
+ * from the MLO link removal WMI  event
+ * @wmi_handle: wmi handle
+ * @buf: pointer to event buffer
+ * @params: MLO link removal event parameters
+ *
+ * Return: QDF_STATUS of operation
+ */
+static QDF_STATUS
+extract_mlo_link_removal_evt_fixed_param_tlv(
+	struct wmi_unified *wmi_handle,
+	void *buf,
+	struct mlo_link_removal_evt_params *params)
+{
+	WMI_MLO_LINK_REMOVAL_EVENTID_param_tlvs *param_buf = buf;
+	wmi_mlo_link_removal_evt_fixed_param *ev;
+
+	if (!param_buf) {
+		wmi_err_rl("Param_buf is NULL");
+		return QDF_STATUS_E_NULL_VALUE;
+	}
+
+	if (!params) {
+		wmi_err_rl("params is NULL");
+		return QDF_STATUS_E_NULL_VALUE;
+	}
+
+	ev = param_buf->fixed_param;
+	params->vdev_id = ev->vdev_id;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 #ifdef WLAN_FEATURE_11BE
 size_t peer_assoc_t2lm_params_size(struct peer_assoc_params *req)
 {
@@ -1383,4 +1417,6 @@ void wmi_11be_attach_tlv(wmi_unified_t wmi_handle)
 	ops->extract_mgmt_rx_ml_cu_params =
 		extract_mgmt_rx_ml_cu_params_tlv;
 	ops->send_mlo_link_removal_cmd = send_mlo_link_removal_cmd_tlv;
+	ops->extract_mlo_link_removal_evt_fixed_param =
+			extract_mlo_link_removal_evt_fixed_param_tlv;
 }