Message ID | 1627587701-13134-1-git-send-email-msinada@codeaurora.org |
---|---|
State | New |
Headers | show |
Series | [v2] nl80211: Add HE UL MU fixed rate setting | expand |
Hi, On Thu, 2021-07-29 at 12:41 -0700, Muna Sinada wrote: > This patch adds nl80211 definitions, policies and parsing code required > to pass HE UL MU fixed rate settings. > I don't understand how this is sufficient? > enum nl80211_txrate_gi gi; > enum nl80211_he_gi he_gi; > enum nl80211_he_ltf he_ltf; Previously, for HE rates, we had configurations for: * HE MCS * HE guard interval * HE LTF I guess I can sort of follow that uplink traffic is a bit different and not already configured by the setting for rate control we have today, but why does it not need all these parameters? Also, why is this not a per-station parameter? OK, maybe we don't really want it to be a per-station parameter, or maybe the firmware/algorithm that's selecting things there can't deal with that, but it feels odd to combine it with the "rate control fixed rate" parameters you have here, and do that without even any explanation of how this is supposed to work. This is going to need some work. johannes
Hello Johannes, I agree that it is odd to combine this new attribute with the existing parameters. I will be removing "he_ul_mcs" out of cfg80211_bitrate_mask and passing it as a separate attribute in next version. Thank you, Muna -----Original Message----- From: Johannes Berg <johannes@sipsolutions.net> Sent: Tuesday, August 17, 2021 6:49 AM To: Muna Sinada <msinada@codeaurora.org> Cc: linux-wireless@vger.kernel.org Subject: Re: [PATCH v2] nl80211: Add HE UL MU fixed rate setting Hi, On Thu, 2021-07-29 at 12:41 -0700, Muna Sinada wrote: > This patch adds nl80211 definitions, policies and parsing code > required to pass HE UL MU fixed rate settings. > I don't understand how this is sufficient? > enum nl80211_txrate_gi gi; > enum nl80211_he_gi he_gi; > enum nl80211_he_ltf he_ltf; Previously, for HE rates, we had configurations for: * HE MCS * HE guard interval * HE LTF I guess I can sort of follow that uplink traffic is a bit different and not already configured by the setting for rate control we have today, but why does it not need all these parameters? Also, why is this not a per-station parameter? OK, maybe we don't really want it to be a per-station parameter, or maybe the firmware/algorithm that's selecting things there can't deal with that, but it feels odd to combine it with the "rate control fixed rate" parameters you have here, and do that without even any explanation of how this is supposed to work. This is going to need some work. johannes
"Muna Sinada" <msinada@codeaurora.org> writes: > I agree that it is odd to combine this new attribute with the existing > parameters. I will be removing "he_ul_mcs" out of > cfg80211_bitrate_mask and passing it as a separate attribute in next > version. Please do not top post. https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches#do_not_top_post_and_edit_your_quotes -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 161cdf7df1a0..6aa10479a2ce 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -694,6 +694,7 @@ struct cfg80211_bitrate_mask { enum nl80211_txrate_gi gi; enum nl80211_he_gi he_gi; enum nl80211_he_ltf he_ltf; + u16 he_ul_mcs[NL80211_HE_NSS_MAX]; } control[NUM_NL80211_BANDS]; }; diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index db474994fa73..db40b34eec06 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -4839,6 +4839,7 @@ enum nl80211_key_attributes { * see &struct nl80211_txrate_he * @NL80211_TXRATE_HE_GI: configure HE GI, 0.8us, 1.6us and 3.2us. * @NL80211_TXRATE_HE_LTF: configure HE LTF, 1XLTF, 2XLTF and 4XLTF. + * @NL80211_TXRATE_HE_UL: HE MCS rates of connected HE STA for uplink traffic. * @__NL80211_TXRATE_AFTER_LAST: internal * @NL80211_TXRATE_MAX: highest TX rate attribute */ @@ -4851,6 +4852,7 @@ enum nl80211_tx_rate_attributes { NL80211_TXRATE_HE, NL80211_TXRATE_HE_GI, NL80211_TXRATE_HE_LTF, + NL80211_TXRATE_HE_UL, /* keep last */ __NL80211_TXRATE_AFTER_LAST, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 50eb405b0690..e3ed33940185 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -384,6 +384,7 @@ static const struct nla_policy nl80211_txattr_policy[NL80211_TXRATE_MAX + 1] = { [NL80211_TXRATE_HE_LTF] = NLA_POLICY_RANGE(NLA_U8, NL80211_RATE_INFO_HE_1XLTF, NL80211_RATE_INFO_HE_4XLTF), + [NL80211_TXRATE_HE_UL] = NLA_POLICY_EXACT_LEN(sizeof(struct nl80211_txrate_he)), }; static const struct nla_policy @@ -4869,6 +4870,14 @@ static int nl80211_parse_tx_bitrate_mask(struct genl_info *info, if (tb[NL80211_TXRATE_HE_LTF]) mask->control[band].he_ltf = nla_get_u8(tb[NL80211_TXRATE_HE_LTF]); + if (tb[NL80211_TXRATE_HE_UL] && + !he_set_mcs_mask(info, wdev, sband, + nla_data(tb[NL80211_TXRATE_HE_UL]), + mask->control[band].he_ul_mcs)) { + NL_SET_ERR_MSG(info->extack, + "Unable to build HE mcs mask"); + return -EINVAL; + } if (mask->control[band].legacy == 0) { /* don't allow empty legacy rates if HT, VHT or HE
This patch adds nl80211 definitions, policies and parsing code required to pass HE UL MU fixed rate settings. Signed-off-by: Muna Sinada <msinada@codeaurora.org> --- include/net/cfg80211.h | 1 + include/uapi/linux/nl80211.h | 2 ++ net/wireless/nl80211.c | 9 +++++++++ 3 files changed, 12 insertions(+)