"Grumbach, Emmanuel" <[email protected]> writes:
> On Mon, 2017-08-14 at 20:14 +0300, Kalle Valo wrote:
>> Emmanuel Grumbach <[email protected]> writes:
>>
>> > User space can now allow the kernel to associate to an AP
>> > that requires MFP or that doesn't have MFP enabled in the
>> > same NL80211_CMD_CONNECT command.
>> > The driver / firmware will decide whether to use it or not.
>> >
>> > Signed-off-by: Emmanuel Grumbach <[email protected]>
[...]
>> > --- a/net/wireless/nl80211.c
>> > +++ b/net/wireless/nl80211.c
>> > @@ -9115,6 +9115,7 @@ static int nl80211_connect(struct sk_buff
>> > *skb, struct genl_info *info)
>> > if (info->attrs[NL80211_ATTR_USE_MFP]) {
>> > connect.mfp = nla_get_u32(info-
>> > >attrs[NL80211_ATTR_USE_MFP]);
>> > if (connect.mfp != NL80211_MFP_REQUIRED &&
>> > + connect.mfp != NL80211_MFP_OPTIONAL &&
>> > connect.mfp != NL80211_MFP_NO)
>> > return -EINVAL;
>> > } else {
>>
>> I guess I'm missing something, but how is backwards compatibility
>> supposed to work from user space point of view? If user space uses
>> NL80211_MFP_OPTIONAL with an old kernel, the kernel will reject the
>> command with -EINVAL and user space will try again without
>> NL80211_MFP_OPTIONAL?
>
> No you are not. I simply forgot that point. I guess that this would be
> the behavior, yes...
I don't think that's very robust. How would user space (wpasupplicant)
know if the the EINVAL is because NL80211_MFP_OPTIONAL is not supported
by the kernel or because of some other error?
> This is relevant for ap_scan=2 wpa_s configuration only which makes it
> not really common, but still, you are right. Not sure how easy it will
> be to write this logic in the supplicant though... Unless we add an
> nl80211 feature bit but I feel it'd be a bit of a waste.
I don't feel that adding a feature bit is waste, I rather use a feature
flag than making ugly hacks to user space. But of course this is up to
Jouni and Johannes.
--
Kalle Valo