mac80211: handle RIC data element in reassociation request
authorJohannes Berg <johannes.berg@intel.com>
Mon, 27 Oct 2014 11:03:19 +0000 (12:03 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 4 Nov 2014 12:18:21 +0000 (13:18 +0100)
commit8ed2874715c17f27bb7b9bacbcfa41bc88a64476
treec284ccc7f2fc1e420ffa2d9a1949adf5f43e182a
parent239281f803e2efdb77d906ef296086b6917e5d71
mac80211: handle RIC data element in reassociation request

When the RIC data element (RDE) is included in the IEs coming
from userspace for an association request, its handling is
currently broken as any IEs that are contained within it would
be split off from it and inserted again after all the IEs that
mac80211 generates (e.g. HT, VHT.)

To fix this, treat the RIC element specially, and stop after
it only when we find something that doesn't actually belong to
it. This assumes userspace is actually correctly building it,
directly after the fast BSS transition IE and before all the
others like extended capabilities.

This leaves as a potential problem the case where userspace is
building the following IEs:

[RDE] [vendor resource description] [vendor non-resource IE]

In this case, we'd erroneously consider all three IEs to be
part of the RIC data together, and not split them between the
two vendor IEs. Unfortunately, it isn't easily possible to
distinguish vendor IEs, so this isn't easy to fix. Luckily,
this case is rare as normally wpa_supplicant will include an
extended capabilities IE in the IEs, and that certainly will
break the two vendor IEs apart correctly.

Reviewed-by: Eliad Peller <eliad@wizery.com>
Reviewed-by: Beni Lev <beni.lev@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h
net/mac80211/mlme.c
net/mac80211/util.c