Przeglądaj źródła

qcacmn: Add support for peer create response event

Add WMI support to extract data received from fw
for WMI_PEER_CREATE_CONF_EVENTID event id.

Change-Id: Ifcf4c3e2f21be1433b96079405650a3448e0652e
CRs-Fixed: 2797202
Naga 4 lat temu
rodzic
commit
3d1c4ee4a0

+ 15 - 0
wmi/inc/wmi_unified_ap_api.h

@@ -492,6 +492,21 @@ QDF_STATUS wmi_unified_send_multiple_vdev_restart_req_cmd(
 		wmi_unified_t wmi_handle,
 		struct multiple_vdev_restart_params *param);
 
+/**
+ * wmi_extract_peer_create_response_event() -
+ * extract vdev id and peer mac address and status from peer create
+ * response event
+ * @wmi_handle: wmi handle
+ * @evt_buf: pointer to event buffer
+ * @param: Pointer to hold evt buf
+ *
+ * Return: QDF_STATUS_SUCCESS for success or error code
+ */
+QDF_STATUS wmi_extract_peer_create_response_event(
+		wmi_unified_t wmi_handle,
+		uint8_t *evt_buf,
+		struct wmi_host_peer_create_response_event *param);
+
 /**
  * wmi_extract_peer_delete_response_event() -
  *       extract vdev id and peer mac addresse from peer delete response event

+ 13 - 0
wmi/src/wmi_unified_ap_api.c

@@ -306,6 +306,19 @@ QDF_STATUS wmi_extract_dcs_im_tgt_stats(wmi_unified_t wmi_handle, void *evt_buf,
 	return QDF_STATUS_E_FAILURE;
 }
 
+QDF_STATUS wmi_extract_peer_create_response_event(
+			wmi_unified_t wmi_handle,
+			uint8_t *evt_buf,
+			struct wmi_host_peer_create_response_event *param)
+{
+	if (wmi_handle->ops->extract_peer_create_response_event)
+		return wmi_handle->ops->extract_peer_create_response_event(
+				wmi_handle,
+				evt_buf, param);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
 QDF_STATUS wmi_extract_peer_delete_response_event(
 			wmi_unified_t wmi_handle,
 			uint8_t *evt_buf,

+ 34 - 0
wmi/src/wmi_unified_ap_tlv.c

@@ -1354,6 +1354,38 @@ static QDF_STATUS extract_dcs_im_tgt_stats_tlv(wmi_unified_t wmi_handle,
 	return QDF_STATUS_SUCCESS;
 }
 
+/*
+ * extract_peer_create_response_event_tlv() - extract peer create response event
+ * @wmi_handle: wmi handle
+ * @param evt_buf: pointer to event buffer
+ * @param vdev_id: Pointer to hold vdev_id
+ * @param mac_addr: Pointer to hold peer mac address
+ * @param status: Peer create status
+ *
+ * Return: QDF_STATUS_SUCCESS for success or error code
+ */
+static QDF_STATUS extract_peer_create_response_event_tlv(wmi_unified_t wmi_hdl,
+	void *evt_buf, struct wmi_host_peer_create_response_event *param)
+{
+	WMI_PEER_CREATE_CONF_EVENTID_param_tlvs *param_buf;
+	wmi_peer_create_conf_event_fixed_param *ev;
+
+	param_buf = (WMI_PEER_CREATE_CONF_EVENTID_param_tlvs *)evt_buf;
+
+	ev = (wmi_peer_create_conf_event_fixed_param *) param_buf->fixed_param;
+	if (!ev) {
+		WMI_LOGE("%s: Invalid peer_create response", __func__);
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	param->vdev_id = ev->vdev_id;
+	WMI_MAC_ADDR_TO_CHAR_ARRAY(&ev->peer_macaddr,
+			&param->mac_address.bytes[0]);
+	param->status = ev->status;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 /*
  * extract_peer_delete_response_event_tlv() - extract peer delete response event
  * @wmi_handle: wmi handle
@@ -2589,6 +2621,8 @@ void wmi_ap_attach_tlv(wmi_unified_t wmi_handle)
 	ops->extract_dcs_interference_type = extract_dcs_interference_type_tlv;
 	ops->extract_dcs_cw_int = extract_dcs_cw_int_tlv;
 	ops->extract_dcs_im_tgt_stats = extract_dcs_im_tgt_stats_tlv;
+	ops->extract_peer_create_response_event =
+				extract_peer_create_response_event_tlv;
 	ops->extract_peer_delete_response_event =
 				extract_peer_delete_response_event_tlv;
 	ops->extract_pdev_csa_switch_count_status =