From: Arend van Spriel <arend@broadcom.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless <linux-wireless@vger.kernel.org>
Subject: Re: [RFC V2 2/3] nl80211: add bss selection attribute to CONNECT command
Date: Tue, 19 Jan 2016 23:33:10 +0100 [thread overview]
Message-ID: <569EB9A6.4030808@broadcom.com> (raw)
In-Reply-To: <1453209647.3896.22.camel@sipsolutions.net>
On 19-1-2016 14:20, Johannes Berg wrote:
> On Mon, 2016-01-18 at 10:34 +0100, Arend van Spriel wrote:
>
>>> I'd prefer nl80211_bss_select_attr in this name and the constants
>>> too,
>>> so it's more obvious that it doesn't belong to the top-level
>>> namespace.
>>
>> Ok. Did not know that convention so it was not that obvious to me ;-)
>> Will change it.
>
> I don't think we really follow it everywhere, and - hindsight being
> 20/20 - I think that we should perhaps have chosen shorter prefixes :)
>
>>>> + * @__NL80211_ATTR_BSS_SELECT_INVALID: reserved.
>>>> + * @NL80211_ATTR_BSS_SELECT_PRIMITIVE: Indicates what criteria
>>>> are to
>>>> + *> > be used for bss selection. Value according
>>>> + * %enum nl80211_bss_select_primitive.
>>>
>>> This I don't understand now. Wouldn't the given attributes just be
>>> used?
>>
>> The primitive just indicates the requested bss selection criteria and
>> determines what other attributes are to be expected. Could determine
>> it by looking at the other attributes, but that would make it harder
>> to validate the request. This way it also makes them mutually
>> exclusive.
>
> I still don't really understand - if a given attribute just gives data
> about the remaining attributes, how does it make a difference? You get
> all the attributes at once, after all, and aren't really forced to
> parse them as they trickle in.
True. Ok. let me try without this.
>>> I was thinking you'd keep the NLA_FLAG "RSSI" preference, and use
>>> the attribute values for the bitmap ...
>>
>> You lost me here.
>
> I meant: use BIT(NL80211_BSS_SELECT_ATTR_BAND_PREF) instead of the
> separate NL80211_BSS_SELECT_BAND_PREF.
>
> Keeping the NLA_FLAG and all that was just a reference to the
> discussion above.
>
>>> RSSI (priority 100)
>>> BAND_PREF (priority 1)
>>> RSSI_ADJUST (priority 1) [since it's mutually exclusive with
>>> BAND_PREF]
>>
>> Not sure about the priority. What I should document is that BAND_PREF
>> and RSSI_ADJUST also do RSSI based selection as a second step. As a
>> (possibly important) side note our firmware api allows multiple
>> primitives, but RSSI must be one of them as it will reject the
>> configuration otherwise. As such I could combine RSSI and RSSI_ADJUST
>> as RSSI would be RSSI_ADJUST(band=unspec, delta=0).
>
> Ok, that's a different way of thinking about it.
>
> I was thinking about it as a kind of small programmable state-machine
> or pipeline in the BSS selection pipeline, so if you have
>
> band_pref, rssi
>
> you basically have a first "element" in the pipeline that throws away
> the BSSes that don't match the right band, and a second one that picks
> the one with the highest RSSI.
I looked at our firmware and it has a kinda pipeline, but it uses a
weighted score. So for "band_pref, rssi" the band_pref score would have
more weight than the rssi score and bss-es are sorted based on the
score. So not really throwing things away.
> If I understand you correctly, you're thinking about it more in terms
> of the overall behaviour. That's perfectly fine with me, but then we
> should document that more clearly.
Agree.
> Just to make sure I understand - you're basically saying that
>
> band_pref
>
> would mean
> * throw away BSSes not matching the right band
> * pick the one with the highest RSSI
>
> which basically makes it mutually exclusive with any of the other
> attributes you suggested, where I was thinking that you'd pretty much
> always have to specify multiple attributes to get a proper "pipeline".
>
>
> Your way definitely has advantages too, particularly that you don't
> need that whole discussion about priorities/ordering, which is good.
>
> But then I understand the whole point of the "primitive" even less,
> since it should be trivial to check that of multiple attributes only a
> single one is specified?
Not really a single one as rssi_adjust needs two attributes, ie. band
and rssi_delta. Still you are right and we can probably drop the primitive.
Regards,
Arend
next prev parent reply other threads:[~2016-01-19 22:33 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-13 9:49 [RFC V2 0/3] nl80211: allow configuration of BSS selection Arend van Spriel
2016-01-13 9:49 ` [RFC V2 1/3] nl80211: add extended feature for BSS selection support Arend van Spriel
2016-01-14 11:00 ` Johannes Berg
2016-01-13 9:49 ` [RFC V2 2/3] nl80211: add bss selection attribute to CONNECT command Arend van Spriel
2016-01-14 11:10 ` Johannes Berg
2016-01-14 11:12 ` Johannes Berg
2016-01-18 9:34 ` Arend van Spriel
2016-01-19 13:20 ` Johannes Berg
2016-01-19 22:33 ` Arend van Spriel [this message]
2016-01-20 9:30 ` Johannes Berg
2016-01-20 14:02 ` Johannes Berg
2016-01-20 21:53 ` Arend van Spriel
2016-01-21 6:57 ` Peer, Ilan
2016-01-13 9:49 ` [RFC V2 3/3] brcmfmac: add support for nl80211 BSS_SELECT feature Arend van Spriel
2016-01-14 9:15 ` [RFC V2 0/3] nl80211: allow configuration of BSS selection Arend van Spriel
2016-01-14 9:20 ` Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=569EB9A6.4030808@broadcom.com \
--to=arend@broadcom.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.