Message ID | 20200618050427.5891-1-alokad@codeaurora.org |
---|---|
Headers | show |
Series | Add FILS discovery support | expand |
On Wed, 2020-06-17 at 22:04 -0700, Aloka Dixit wrote: > + * @NL80211_FILS_DISCOVERY_TMPL: Optional FILS discovery template. > + * It has contents of IEEE Std 802.11ai-2016 9.6.8.36 FILS discovery frame > + * (Figure 9-687a). Is that "It has (contents of ... FILS discovery frame) ..." or "It has contents of (... FILS discovery frame) ..."? I mean, is that with or without headers? The wording doesn't seem entirely clear to me. OTOH, if it's with headers, how could it be optional? In fact, either way, how is it optional? > +static int nl80211_parse_fils_discovery(struct nlattr *attrs, > + struct cfg80211_ap_settings *params) > +{ > + struct nlattr *tmpl; > + struct nlattr *tb[NL80211_FILS_DISCOVERY_MAX + 1]; > + int ret; > + struct cfg80211_fils_discovery *fd = ¶ms->fils_discovery; > + > + ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_MAX, attrs, > + fils_discovery_policy, NULL); > + if (ret) > + return ret; > + > + if (!tb[NL80211_FILS_DISCOVERY_INT_MIN] || > + !tb[NL80211_FILS_DISCOVERY_INT_MAX]) > + return -EINVAL; > + > + fd->min_interval = nla_get_u32(tb[NL80211_FILS_DISCOVERY_INT_MIN]); > + fd->max_interval = nla_get_u32(tb[NL80211_FILS_DISCOVERY_INT_MAX]); > + > + tmpl = tb[NL80211_FILS_DISCOVERY_TMPL]; > + if (tmpl) { > + fd->tmpl = nla_data(tmpl); > + fd->tmpl_len = nla_len(tmpl); And if it's with headers, it should have some kind of minimum length too? You've only put a maximum length into the policy. (Which reminds me I wanted to have an NLA_POLICY_RANGE(NLA_BINARY, min, max) but haven't done that yet ...) johannes
On 2020-07-30 07:43, Johannes Berg wrote: > On Wed, 2020-06-17 at 22:04 -0700, Aloka Dixit wrote: >> + * @NL80211_FILS_DISCOVERY_TMPL: Optional FILS discovery template. >> + * It has contents of IEEE Std 802.11ai-2016 9.6.8.36 FILS discovery >> frame >> + * (Figure 9-687a). > > Is that > > "It has (contents of ... FILS discovery frame) ..." > > or > > "It has contents of (... FILS discovery frame) ..."? > > I mean, is that with or without headers? The wording doesn't seem > entirely clear to me. > > OTOH, if it's with headers, how could it be optional? In fact, either > way, how is it optional? > Template has management frame headers as well. Will change the wording accordingly. I made the template optional because FILS discovery may or may not be offloaded to FW. Another way would be to make it mandatory here. >> +static int nl80211_parse_fils_discovery(struct nlattr *attrs, >> + struct cfg80211_ap_settings *params) >> +{ >> + struct nlattr *tmpl; >> + struct nlattr *tb[NL80211_FILS_DISCOVERY_MAX + 1]; >> + int ret; >> + struct cfg80211_fils_discovery *fd = ¶ms->fils_discovery; >> + >> + ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_MAX, attrs, >> + fils_discovery_policy, NULL); >> + if (ret) >> + return ret; >> + >> + if (!tb[NL80211_FILS_DISCOVERY_INT_MIN] || >> + !tb[NL80211_FILS_DISCOVERY_INT_MAX]) >> + return -EINVAL; >> + >> + fd->min_interval = nla_get_u32(tb[NL80211_FILS_DISCOVERY_INT_MIN]); >> + fd->max_interval = nla_get_u32(tb[NL80211_FILS_DISCOVERY_INT_MAX]); >> + >> + tmpl = tb[NL80211_FILS_DISCOVERY_TMPL]; >> + if (tmpl) { >> + fd->tmpl = nla_data(tmpl); >> + fd->tmpl_len = nla_len(tmpl); > > And if it's with headers, it should have some kind of minimum length > too? You've only put a maximum length into the policy. > > (Which reminds me I wanted to have an NLA_POLICY_RANGE(NLA_BINARY, min, > max) but haven't done that yet ...) > Yeah, I looked through existing examples for NLA_BINARY, those provide only the higher bound for length. But I can modify it to range once that is added. > johannes
On Thu, 2020-07-30 at 14:17 -0700, Aloka Dixit wrote: > > OTOH, if it's with headers, how could it be optional? In fact, either > > way, how is it optional? > > > > Template has management frame headers as well. Will change the wording > accordingly. OK. > I made the template optional because FILS discovery may or may not be > offloaded to FW. But how would anyone know? Try without it, and then try again if that fails? Would it fail? I mean, you also said it was required at least for 6 GHz, so wouldn't userspace be better off always giving it - and then we should probably make it mandatory so it doesn't fall into the trap? However - and here that's my ignorance speaking - can it really be offloaded? I mean, is everything in there completely determined by the beacon already, and so you have no choice in how to build it? Or how does that work? > Yeah, I looked through existing examples for NLA_BINARY, those provide > only the higher bound for length. Yeah, no way to do anything else right now. But you should have a lower bound in the code, I think. > But I can modify it to range once that is added. Later maybe :) johannes
On 2020-07-30 14:22, Johannes Berg wrote: > On Thu, 2020-07-30 at 14:17 -0700, Aloka Dixit wrote: > >> > OTOH, if it's with headers, how could it be optional? In fact, either >> > way, how is it optional? >> > >> >> Template has management frame headers as well. Will change the wording >> accordingly. > > OK. > >> I made the template optional because FILS discovery may or may not be >> offloaded to FW. > > But how would anyone know? Try without it, and then try again if that > fails? Would it fail? I mean, you also said it was required at least > for > 6 GHz, so wouldn't userspace be better off always giving it - and then > we should probably make it mandatory so it doesn't fall into the trap? > If the template is not provided, FW keeps sending event to get it. But as my ath11k driver code is limited to 6GHz, it already throws error if template not provided. Yes, in general it will be better to make it mandatory, I will do it in next version. > However - and here that's my ignorance speaking - can it really be > offloaded? I mean, is everything in there completely determined by the > beacon already, and so you have no choice in how to build it? Or how > does that work? > Yes, the frame parameters are fixed except for the timestamp which FW is expected to fill. >> Yeah, I looked through existing examples for NLA_BINARY, those provide >> only the higher bound for length. > > Yeah, no way to do anything else right now. But you should have a lower > bound in the code, I think. > Okay. >> But I can modify it to range once that is added. > > Later maybe :) > > johannes