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
This commit is contained in:
Pragaspathi Thilagaraj
2021-01-11 15:00:32 +05:30
committed by snandini
parent b3fafa78c8
commit 0e5b3623ef
2 changed files with 46 additions and 12 deletions

View File

@@ -385,17 +385,20 @@ struct wmi_twt_del_dialog_param {
#endif #endif
}; };
/* status code of deleting TWT dialog /**
* WMI_HOST_DEL_TWT_STATUS_OK: deleting TWT dialog successfully completed * enum WMI_HOST_DEL_TWT_STATUS - status code of deleting TWT dialog
* WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists * @WMI_HOST_DEL_TWT_STATUS_OK: deleting TWT dialog successfully completed
* WMI_HOST_DEL_TWT_STATUS_INVALID_PARAM: invalid parameters * @WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
* WMI_HOST_DEL_TWT_STATUS_DIALOG_ID_BUSY: FW is in the process of handling * @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 * this dialog
* WMI_HOST_DEL_TWT_STATUS_NO_RESOURCE: FW resource exhausted * @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 * @WMI_HOST_DEL_TWT_STATUS_NO_ACK: peer AP/STA did not ACK the request/response
* frame * frame
* WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR: deleting TWT dialog failed with an * @WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR: deleting TWT dialog failed with an
* unknown reason * 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 { enum WMI_HOST_DEL_TWT_STATUS {
WMI_HOST_DEL_TWT_STATUS_OK, 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_RESOURCE,
WMI_HOST_DEL_TWT_STATUS_NO_ACK, WMI_HOST_DEL_TWT_STATUS_NO_ACK,
WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR, WMI_HOST_DEL_TWT_STATUS_UNKNOWN_ERROR,
WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN,
WMI_HOST_DEL_TWT_STATUS_ROAMING,
}; };
/** /**

View File

@@ -587,6 +587,35 @@ static QDF_STATUS extract_twt_add_dialog_comp_additional_parameters
return QDF_STATUS_SUCCESS; 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( static QDF_STATUS extract_twt_del_dialog_comp_event_tlv(
wmi_unified_t wmi_handle, wmi_unified_t wmi_handle,
uint8_t *evt_buf, uint8_t *evt_buf,
@@ -606,7 +635,7 @@ static QDF_STATUS extract_twt_del_dialog_comp_event_tlv(
params->vdev_id = ev->vdev_id; params->vdev_id = ev->vdev_id;
WMI_MAC_ADDR_TO_CHAR_ARRAY(&ev->peer_macaddr, params->peer_macaddr); WMI_MAC_ADDR_TO_CHAR_ARRAY(&ev->peer_macaddr, params->peer_macaddr);
params->dialog_id = ev->dialog_id; 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; return QDF_STATUS_SUCCESS;
} }