Эх сурвалжийг харах

qcacmn: Add support for new TWT teardown status

Add support for additional TWT teardown status:
WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN &
WMI_DEL_TWT_STATUS_ROAMING

Change-Id: I0764d3a65bfe14afbb0e4dfd513fa92a9235cc21
CRs-Fixed: 2852291
Pragaspathi Thilagaraj 4 жил өмнө
parent
commit
0e5b3623ef

+ 16 - 11
wmi/inc/wmi_unified_twt_param.h

@@ -385,17 +385,20 @@ struct wmi_twt_del_dialog_param {
 #endif
 };
 
-/* status code of deleting TWT dialog
- * WMI_HOST_DEL_TWT_STATUS_OK: deleting TWT dialog successfully completed
- * WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
- * WMI_HOST_DEL_TWT_STATUS_INVALID_PARAM: invalid parameters
- * WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_BUSY: FW is in the process of handling
- *                                    this dialog
- * WMI_HOST_DEL_TWT_STATUS_NO_RESOURCE: FW resource exhausted
- * WMI_HOST_DEL_TWT_STATUS_NO_ACK: peer AP/STA did not ACK the request/response
- *                            frame
- * WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR: deleting TWT dialog failed with an
- *                            unknown reason
+/**
+ * enum WMI_HOST_DEL_TWT_STATUS - status code of deleting TWT dialog
+ * @WMI_HOST_DEL_TWT_STATUS_OK: deleting TWT dialog successfully completed
+ * @WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
+ * @WMI_HOST_DEL_TWT_STATUS_INVALID_PARAM: invalid parameters
+ * @WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_BUSY: FW is in the process of handling
+ * this dialog
+ * @WMI_HOST_DEL_TWT_STATUS_NO_RESOURCE: FW resource exhausted
+ * @WMI_HOST_DEL_TWT_STATUS_NO_ACK: peer AP/STA did not ACK the request/response
+ * frame
+ * @WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR: deleting TWT dialog failed with an
+ * unknown reason
+ * @WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN: Peer initiated TWT teardown
+ * @WMI_HOST_DEL_TWT_STATUS_ROAMING: TWT teardown due to roaming.
  */
 enum WMI_HOST_DEL_TWT_STATUS {
 	WMI_HOST_DEL_TWT_STATUS_OK,
@@ -405,6 +408,8 @@ enum WMI_HOST_DEL_TWT_STATUS {
 	WMI_HOST_DEL_TWT_STATUS_NO_RESOURCE,
 	WMI_HOST_DEL_TWT_STATUS_NO_ACK,
 	WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR,
+	WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN,
+	WMI_HOST_DEL_TWT_STATUS_ROAMING,
 };
 
 /**

+ 30 - 1
wmi/src/wmi_unified_twt_tlv.c

@@ -587,6 +587,35 @@ static QDF_STATUS extract_twt_add_dialog_comp_additional_parameters
 	return QDF_STATUS_SUCCESS;
 }
 
+static enum WMI_HOST_DEL_TWT_STATUS
+wmi_get_converted_twt_del_dialog_status(WMI_DEL_TWT_STATUS_T tgt_status)
+{
+	switch (tgt_status) {
+	case WMI_DEL_TWT_STATUS_OK:
+		return WMI_HOST_DEL_TWT_STATUS_OK;
+	case WMI_DEL_TWT_STATUS_DIALOG_ID_NOT_EXIST:
+		return WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_NOT_EXIST;
+	case WMI_DEL_TWT_STATUS_INVALID_PARAM:
+		return WMI_HOST_DEL_TWT_STATUS_INVALID_PARAM;
+	case WMI_DEL_TWT_STATUS_DIALOG_ID_BUSY:
+		return WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_BUSY;
+	case WMI_DEL_TWT_STATUS_NO_RESOURCE:
+		return WMI_HOST_DEL_TWT_STATUS_NO_RESOURCE;
+	case WMI_DEL_TWT_STATUS_NO_ACK:
+		return WMI_HOST_DEL_TWT_STATUS_NO_ACK;
+	case WMI_DEL_TWT_STATUS_UNKNOWN_ERROR:
+		return WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR;
+	case WMI_DEL_TWT_STATUS_PEER_INIT_TEARDOWN:
+		return WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN;
+	case WMI_DEL_TWT_STATUS_ROAMING:
+		return WMI_HOST_DEL_TWT_STATUS_ROAMING;
+	default:
+		return WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR;
+	}
+
+	return WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR;
+}
+
 static QDF_STATUS extract_twt_del_dialog_comp_event_tlv(
 		wmi_unified_t wmi_handle,
 		uint8_t *evt_buf,
@@ -606,7 +635,7 @@ static QDF_STATUS extract_twt_del_dialog_comp_event_tlv(
 	params->vdev_id = ev->vdev_id;
 	WMI_MAC_ADDR_TO_CHAR_ARRAY(&ev->peer_macaddr, params->peer_macaddr);
 	params->dialog_id = ev->dialog_id;
-	params->status = ev->status;
+	params->status = wmi_get_converted_twt_del_dialog_status(ev->status);
 
 	return QDF_STATUS_SUCCESS;
 }