qcacmn: Add support for TWT disable operation
Add support for TWT disable operation. Change-Id: I302ac6a3898f53ea25030d9a15d8d14988287b27 CRs-Fixed: 3085373
Este cometimento está contido em:

cometido por
Madan Koyyalamudi

ascendente
2d0aea5c1d
cometimento
fd35443a0a
@@ -109,12 +109,78 @@ cleanup:
|
||||
int osif_twt_requestor_disable(struct wlan_objmgr_psoc *psoc,
|
||||
struct twt_disable_param *req)
|
||||
{
|
||||
return 0;
|
||||
struct osif_request *request;
|
||||
int ret;
|
||||
QDF_STATUS status;
|
||||
struct twt_en_dis_priv *twt_en_priv;
|
||||
void *context;
|
||||
static const struct osif_request_params params = {
|
||||
.priv_size = sizeof(*twt_en_priv),
|
||||
.timeout_ms = TWT_DISABLE_COMPLETE_TIMEOUT,
|
||||
};
|
||||
|
||||
request = osif_request_alloc(¶ms);
|
||||
if (!request) {
|
||||
osif_err("Request allocation failure");
|
||||
return -ENOMEM;
|
||||
}
|
||||
context = osif_request_cookie(request);
|
||||
|
||||
status = ucfg_twt_requestor_disable(psoc, req, context);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
osif_warn("Failed to send TWT requestor disable command");
|
||||
ret = qdf_status_to_os_return(status);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = osif_request_wait_for_response(request);
|
||||
if (ret) {
|
||||
osif_warn("TWT Requestor disable timedout ret:%d", ret);
|
||||
ret = -ETIMEDOUT;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
osif_request_put(request);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int osif_twt_responder_disable(struct wlan_objmgr_psoc *psoc,
|
||||
struct twt_disable_param *req)
|
||||
{
|
||||
return 0;
|
||||
struct osif_request *request;
|
||||
int ret;
|
||||
QDF_STATUS status;
|
||||
struct twt_en_dis_priv *twt_en_priv;
|
||||
void *context;
|
||||
static const struct osif_request_params params = {
|
||||
.priv_size = sizeof(*twt_en_priv),
|
||||
.timeout_ms = TWT_DISABLE_COMPLETE_TIMEOUT,
|
||||
};
|
||||
|
||||
request = osif_request_alloc(¶ms);
|
||||
if (!request) {
|
||||
osif_err("Request allocation failure");
|
||||
return -ENOMEM;
|
||||
}
|
||||
context = osif_request_cookie(request);
|
||||
|
||||
status = ucfg_twt_responder_disable(psoc, req, context);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
osif_warn("Failed to send TWT responder disable command");
|
||||
ret = qdf_status_to_os_return(status);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = osif_request_wait_for_response(request);
|
||||
if (ret) {
|
||||
osif_warn("TWT Responder disable timedout ret:%d", ret);
|
||||
ret = -ETIMEDOUT;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
osif_request_put(request);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -74,6 +74,27 @@ osif_twt_disable_complete_cb(struct wlan_objmgr_psoc *psoc,
|
||||
struct twt_disable_complete_event_param *event,
|
||||
void *context)
|
||||
{
|
||||
struct twt_en_dis_priv *twt_en_priv;
|
||||
struct osif_request *request = NULL;
|
||||
|
||||
osif_debug("osif_handle_twt_disable_complete");
|
||||
request = osif_request_get(context);
|
||||
if (!request) {
|
||||
osif_err("obsolete request");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
twt_en_priv = osif_request_priv(request);
|
||||
if (!twt_en_priv) {
|
||||
osif_err("obsolete twt_en_priv");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
twt_en_priv->pdev_id = event->pdev_id;
|
||||
twt_en_priv->status = event->status;
|
||||
|
||||
osif_request_complete(request);
|
||||
osif_request_put(request);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador