mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
qcacld-3.0: Receive twt_setup wake_mantisa in microsecond
Currently, host receive the mantissa in TU from upper layer. Add support for below TWT setup additional parameters: Mantissa in Microsecond Add changes to receive mantissa value of wake interval in microsecond. Change-Id: I00ac5006002a6b4d521a005080a1f5a787f54ba7 CRs-Fixed: 2888361
This commit is contained in:
parent
7f249af075
commit
afc154583d
1 changed files with 35 additions and 6 deletions
|
|
@ -66,6 +66,7 @@ qca_wlan_vendor_twt_add_dialog_policy[QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX + 1] =
|
|||
[QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX_WAKE_DURATION] = {.type = NLA_U32 },
|
||||
[QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MIN_WAKE_INTVL] = {.type = NLA_U32 },
|
||||
[QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX_WAKE_INTVL] = {.type = NLA_U32 },
|
||||
[QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA] = {.type = NLA_U32 },
|
||||
};
|
||||
|
||||
static const struct nla_policy
|
||||
|
|
@ -231,6 +232,16 @@ int hdd_twt_get_add_dialog_values(struct nlattr **tb,
|
|||
return -EINVAL;
|
||||
}
|
||||
params->wake_intvl_mantis = nla_get_u32(tb[cmd_id]);
|
||||
|
||||
/*
|
||||
* If mantissa in microsecond is present then take precedence over
|
||||
* mantissa in TU. And send mantissa in microsecond to firmware.
|
||||
*/
|
||||
cmd_id = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA;
|
||||
if (tb[cmd_id]) {
|
||||
params->wake_intvl_mantis = nla_get_u32(tb[cmd_id]);
|
||||
}
|
||||
|
||||
if (params->wake_intvl_mantis >
|
||||
TWT_SETUP_WAKE_INTVL_MANTISSA_MAX) {
|
||||
hdd_err_rl("Invalid wake_intvl_mantis %u",
|
||||
|
|
@ -497,7 +508,7 @@ hdd_twt_pack_get_params_resp_nlmsg(struct wlan_objmgr_psoc *psoc,
|
|||
enum qca_wlan_twt_setup_state converted_state;
|
||||
uint64_t tsf_val;
|
||||
uint32_t wake_duration;
|
||||
uint32_t wake_intvl_mantis_tu;
|
||||
uint32_t wake_intvl_mantis_us, wake_intvl_mantis_tu;
|
||||
int i, attr;
|
||||
|
||||
config_attr = nla_nest_start(reply_skb,
|
||||
|
|
@ -581,6 +592,12 @@ hdd_twt_pack_get_params_resp_nlmsg(struct wlan_objmgr_psoc *psoc,
|
|||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
wake_intvl_mantis_us = params[i].wake_intvl_us;
|
||||
attr = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA;
|
||||
if (nla_put_u32(reply_skb, attr, wake_intvl_mantis_us)) {
|
||||
hdd_err("TWT: get_params failed to put Wake Interval in us");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
wake_intvl_mantis_tu = params[i].wake_intvl_us /
|
||||
TWT_WAKE_INTVL_MULTIPLICATION_FACTOR;
|
||||
attr = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL_MANTISSA;
|
||||
|
|
@ -589,6 +606,9 @@ hdd_twt_pack_get_params_resp_nlmsg(struct wlan_objmgr_psoc *psoc,
|
|||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
hdd_debug("TWT: Send mantissa_us:%d, mantissa_tu:%d to userspace",
|
||||
wake_intvl_mantis_us, wake_intvl_mantis_tu);
|
||||
|
||||
attr = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL_EXP;
|
||||
if (nla_put_u8(reply_skb, attr, 0)) {
|
||||
hdd_err("TWT: get_params put Wake Interval Exp failed");
|
||||
|
|
@ -1063,7 +1083,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;
|
||||
uint32_t wake_intvl_mantis_us, wake_intvl_mantis_tu;
|
||||
|
||||
hdd_enter();
|
||||
|
||||
|
|
@ -1128,15 +1148,24 @@ 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 /
|
||||
wake_intvl_mantis_us = event->additional_params.wake_intvl_us;
|
||||
if (nla_put_u32(reply_skb,
|
||||
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA,
|
||||
wake_intvl_mantis_us)) {
|
||||
hdd_err("TWT: Failed to put wake interval mantissa in us");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
wake_intvl_mantis_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,
|
||||
wake_intvl_mantissa_tu)) {
|
||||
hdd_err("TWT: Failed to put wake interval us");
|
||||
wake_intvl_mantis_tu)) {
|
||||
hdd_err("TWT: Failed to put wake interval mantissa in tu");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
hdd_debug("wake_intvl_mantissa in TU %d", wake_intvl_mantissa_tu);
|
||||
hdd_debug("TWT: Send mantissa_us:%d, mantissa_tu:%d to userspace",
|
||||
wake_intvl_mantis_us, wake_intvl_mantis_tu);
|
||||
|
||||
if (nla_put_u8(reply_skb, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL_EXP,
|
||||
0)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue