Commit Message

From: Venkateswara Naralasetty <vnaralas@codeaurora.org>
Advertise vendor specific Multi-AP IE in (Re)Association request
and process Multi-AP IE from (Re)Association response frames if the
user enables Multi-AP fuctionality. If the (Re)Association response does
not contain the Multi-AP IE, deassociate.
This patch introduces a new configuration parameter
'multi_ap_backhaul_sta' to enable/disable Multi-AP functionality.
Enable 4addr mode after association (if the Association Response
contains the Multi-AP IE). Also enable the bridge in that case. This is
necessary because wpa_supplicant only enables the bridge in
wpa_drv_if_add(), which only gets called when an interface is added
through the control interface, not when it is configured from the
command line.
Signed-off-by: Venkateswara Naralasetty <vnaralas@codeaurora.org>Signed-off-by: Jouni Malinen <jouni@codeaurora.org>Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
v3 (Arnout): Improve commit message
v2:
* changed configuration from multi_ap_enabled to multiap_backhaul_sta
* made multiap_backhaul_sta configuration static
* used single helper function to build all different cases of
Multi-AP IE contents
---
I believe that adding the bridge in set_4addr_mode is actually wrong.
The real problem IMO is that the -b command-line option doesn't work in
station mode.
Even more, I think the 4addr mode should not be set like this. Instead,
I think both the bridge and the 4addr mode should be controlled by
whatever entity creates the VIF. So if the VIF is already created
externally (i.e. command-line configuration), it must already have been
set to 4addr mode and added to the bridge. While if wpa_supplicant
creates the interface, it must set 4addr mode when creating the
interface (i.e. the wds argument of if_add() should be set).
---
src/drivers/driver.h | 11 +++++++
src/drivers/driver_nl80211.c | 45 +++++++++++++++++++++++++
wpa_supplicant/Makefile | 4 +++
wpa_supplicant/config.c | 3 ++
wpa_supplicant/config_ssid.h | 8 +++++
wpa_supplicant/defconfig | 3 ++
wpa_supplicant/driver_i.h | 10 ++++++
wpa_supplicant/events.c | 53 ++++++++++++++++++++++++++++++
wpa_supplicant/sme.c | 14 +++++++-
wpa_supplicant/wpa_supplicant.c | 29 ++++++++++++++++
wpa_supplicant/wpa_supplicant.conf | 4 +++
wpa_supplicant/wpa_supplicant_i.h | 6 ++++
12 files changed, 189 insertions(+), 1 deletion(-)