diff --git a/core/hdd/src/wlan_hdd_twt.c b/core/hdd/src/wlan_hdd_twt.c index 8144425a6f3a..45753e20cca0 100644 --- a/core/hdd/src/wlan_hdd_twt.c +++ b/core/hdd/src/wlan_hdd_twt.c @@ -45,6 +45,7 @@ #define TWT_SETUP_WAKE_INTVL_MANTISSA_MAX 0xFFFF #define TWT_SETUP_WAKE_DURATION_MAX 0xFFFF #define TWT_SETUP_WAKE_INTVL_EXP_MAX 31 +#define TWT_WAKE_INTVL_MULTIPLICATION_FACTOR 1024 #define TWT_WAKE_DURATION_MULTIPLICATION_FACTOR 256 #define TWT_MAX_NEXT_TWT_SIZE 3 #define TWT_ALL_SESSIONS_DIALOG_ID 255 @@ -137,6 +138,7 @@ int hdd_twt_get_add_dialog_values(struct nlattr **tb, uint32_t wake_intvl_exp, result; int cmd_id; QDF_STATUS qdf_status; + uint32_t wake_intvl_mantis_tu; cmd_id = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_FLOW_ID; if (tb[cmd_id]) { @@ -229,11 +231,13 @@ int hdd_twt_get_add_dialog_values(struct nlattr **tb, hdd_err_rl("SETUP_WAKE_INTVL_MANTISSA is must"); return -EINVAL; } - params->wake_intvl_mantis = nla_get_u32(tb[cmd_id]); + wake_intvl_mantis_tu = nla_get_u32(tb[cmd_id]); + params->wake_intvl_mantis = wake_intvl_mantis_tu * + TWT_WAKE_INTVL_MULTIPLICATION_FACTOR; if (params->wake_intvl_mantis > TWT_SETUP_WAKE_INTVL_MANTISSA_MAX) { hdd_err_rl("Invalid wake_intvl_mantis %u", - params->wake_dura_us); + params->wake_intvl_mantis); return -EINVAL; } @@ -1056,6 +1060,7 @@ hdd_twt_setup_pack_resp_nlmsg(struct sk_buff *reply_skb, enum qca_wlan_vendor_twt_status vendor_status; int response_type; uint32_t wake_duration; + uint32_t wake_intvl_mantissa_tu; hdd_enter(); @@ -1111,6 +1116,7 @@ hdd_twt_setup_pack_resp_nlmsg(struct sk_buff *reply_skb, return QDF_STATUS_E_FAILURE; } + hdd_debug("wake_dur_us %d", event->additional_params.wake_dur_us); wake_duration = (event->additional_params.wake_dur_us / TWT_WAKE_DURATION_MULTIPLICATION_FACTOR); if (nla_put_u32(reply_skb, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_DURATION, @@ -1119,12 +1125,15 @@ hdd_twt_setup_pack_resp_nlmsg(struct sk_buff *reply_skb, return QDF_STATUS_E_FAILURE; } + wake_intvl_mantissa_tu = (event->additional_params.wake_intvl_us / + TWT_WAKE_INTVL_MULTIPLICATION_FACTOR); if (nla_put_u32(reply_skb, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL_MANTISSA, - event->additional_params.wake_intvl_us)) { + wake_intvl_mantissa_tu)) { hdd_err("TWT: Failed to put wake interval us"); return QDF_STATUS_E_FAILURE; } + hdd_debug("wake_intvl_mantissa in TU %d", wake_intvl_mantissa_tu); if (nla_put_u8(reply_skb, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL_EXP, 0)) {