qcacmn: Change the return value for non-TLV targets

When non-TLV targets are used, the WMI event table is not populated.
So, it shouldn't be treated as fatal and WMI event register/unregister
functions can return NOSUPPORT instead of FAILURE.
Handle this value in TWT code.

Change-Id: I5bc8e7aae2e572c84ea0333c967cff527d5cbcc3
CRs-Fixed: 3145077
这个提交包含在:
Manoj Ekbote
2022-03-21 14:31:12 -07:00
提交者 Madan Koyyalamudi
父节点 2d87b61c0e
当前提交 52cb1a0916
修改 2 个文件,包含 27 行新增4 行删除

查看文件

@@ -48,6 +48,8 @@ target_if_twt_register_events(struct wlan_objmgr_psoc *psoc)
WMI_RX_WORK_CTX);
if (QDF_IS_STATUS_ERROR(status)) {
target_if_err("Failed to register twt enable event cb");
if (status == QDF_STATUS_E_NOSUPPORT)
status = QDF_STATUS_SUCCESS;
return status;
}
@@ -57,12 +59,16 @@ target_if_twt_register_events(struct wlan_objmgr_psoc *psoc)
WMI_RX_WORK_CTX);
if (QDF_IS_STATUS_ERROR(status)) {
target_if_err("Failed to register twt disable event cb");
if (status == QDF_STATUS_E_NOSUPPORT)
status = QDF_STATUS_SUCCESS;
return status;
}
status = target_if_twt_register_ext_events(psoc);
if (QDF_IS_STATUS_ERROR(status)) {
target_if_err("Failed to register twt ext events");
if (status == QDF_STATUS_E_NOSUPPORT)
status = QDF_STATUS_SUCCESS;
return status;
}
@@ -90,6 +96,8 @@ target_if_twt_deregister_events(struct wlan_objmgr_psoc *psoc)
wmi_twt_enable_complete_event_id);
if (QDF_IS_STATUS_ERROR(status)) {
target_if_err("Failed to deregister twt enable event cb");
if (status == QDF_STATUS_E_NOSUPPORT)
status = QDF_STATUS_SUCCESS;
return status;
}
@@ -97,12 +105,16 @@ target_if_twt_deregister_events(struct wlan_objmgr_psoc *psoc)
wmi_twt_disable_complete_event_id);
if (QDF_IS_STATUS_ERROR(status)) {
target_if_err("Failed to deregister twt disable event cb");
if (status == QDF_STATUS_E_NOSUPPORT)
status = QDF_STATUS_SUCCESS;
return status;
}
status = target_if_twt_deregister_ext_events(psoc);
if (QDF_IS_STATUS_ERROR(status)) {
target_if_err("Failed to deregister twt ext events");
if (status == QDF_STATUS_E_NOSUPPORT)
status = QDF_STATUS_SUCCESS;
return status;
}

查看文件

@@ -2167,13 +2167,19 @@ wmi_register_event_handler_with_ctx(wmi_unified_t wmi_handle,
soc = wmi_handle->soc;
if (event_id >= wmi_events_max ||
wmi_handle->wmi_events[event_id] == WMI_EVENT_ID_INVALID) {
if (event_id >= wmi_events_max) {
QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_INFO,
"%s: Event id %d is unavailable",
__func__, event_id);
return QDF_STATUS_E_FAILURE;
}
if (wmi_handle->wmi_events[event_id] == WMI_EVENT_ID_INVALID) {
QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_DEBUG,
"%s: Event id %d is not supported",
__func__, event_id);
return QDF_STATUS_E_NOSUPPORT;
}
evt_id = wmi_handle->wmi_events[event_id];
if (wmi_unified_get_event_handler_ix(wmi_handle, evt_id) != -1) {
@@ -2299,11 +2305,16 @@ QDF_STATUS wmi_unified_unregister_event_handler(wmi_unified_t wmi_handle,
soc = wmi_handle->soc;
if (event_id >= wmi_events_max ||
wmi_handle->wmi_events[event_id] == WMI_EVENT_ID_INVALID) {
if (event_id >= wmi_events_max) {
wmi_err("Event id %d is unavailable", event_id);
return QDF_STATUS_E_FAILURE;
}
if (wmi_handle->wmi_events[event_id] == WMI_EVENT_ID_INVALID) {
wmi_debug("Event id %d is not supported", event_id);
return QDF_STATUS_E_NOSUPPORT;
}
evt_id = wmi_handle->wmi_events[event_id];
idx = wmi_unified_get_event_handler_ix(wmi_handle, evt_id);