From 6fb3eb4f3af186e58282627f13cb0899c1f99ec2 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Thu, 21 Jan 2021 23:58:59 +0530 Subject: [PATCH] qcacld-3.0: Allow TWT teardown after roaming Allow TWT teardown event from firmware after roaming or peer initiated teardown to indicate the value to userspace. Also make changes to send the wake duration value in microseconds scaled with the TWT wake duration multiplication factor. Change-Id: Ibcd0c51b1930094e0efc3832db5b8aadaa5748ea CRs-Fixed: 2859775 --- core/hdd/src/wlan_hdd_twt.c | 5 ++++- core/sme/src/common/sme_api.c | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/hdd/src/wlan_hdd_twt.c b/core/hdd/src/wlan_hdd_twt.c index 8c93662d7245..8604670b7cb4 100644 --- a/core/hdd/src/wlan_hdd_twt.c +++ b/core/hdd/src/wlan_hdd_twt.c @@ -495,6 +495,7 @@ hdd_twt_pack_get_params_resp_nlmsg(struct wlan_objmgr_psoc *psoc, enum wlan_twt_session_state state; enum qca_wlan_twt_setup_state converted_state; uint64_t tsf_val; + uint32_t wake_duration; int i, attr; config_attr = nla_nest_start(reply_skb, @@ -571,7 +572,9 @@ hdd_twt_pack_get_params_resp_nlmsg(struct wlan_objmgr_psoc *psoc, } attr = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_DURATION; - if (nla_put_u32(reply_skb, attr, params[i].wake_dura_us)) { + wake_duration = (params[i].wake_intvl_us / + TWT_WAKE_DURATION_MULTIPLICATION_FACTOR); + if (nla_put_u32(reply_skb, attr, wake_duration)) { hdd_err("TWT: get_params failed to put Wake duration"); return QDF_STATUS_E_INVAL; } diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index aac0b83b0e73..24fdc8a5bd7c 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -2115,8 +2115,8 @@ sme_process_twt_del_dialog_event(struct mac_context *mac, param->dialog_id, WLAN_TWT_TERMINATE); if (!is_evt_allowed && param->dialog_id != WLAN_ALL_SESSIONS_DIALOG_ID && - (param->status != WMI_HOST_DEL_TWT_STATUS_ROAMING || - param->status != WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN)) { + param->status != WMI_HOST_DEL_TWT_STATUS_ROAMING && + param->status != WMI_HOST_DEL_TWT_STATUS_PEER_INIT_TEARDOWN) { sme_debug("add dialog event dropped"); return; }