Subject: [PATCH] mac80211: WFA Multi-AP backhaul STA Rx requirement

The current mac80211 WDS (4-address mode) can be used to cover most of the
Multi-AP requirements for Data frames per the WFA Multi-AP Specification v1.0.
When configuring AP/STA interfaces in 4-address mode, they are able to function
as fronthaul AP/backhaul STA of Multi-AP device complying below
Tx, Rx requirements except one STA Rx requirement.

Multi-AP specification section 14.1 describes the following requirements:

Transmitter requirements
------------------------
1. Fronthaul AP
i) When DA!=RA of backhaul STA, must use 4-address format
ii) When DA==RA of backhaul STA, shall use either 3-address
or 4-address format with RA updated with STA MAC

(mac80211 support 4-address format via AP/VLAN interface)

2. Backhaul STA
i) When SA!=TA of backhaul STA, must use 4-address format
ii) When SA==TA of backhaul STA, shall use either 3-address
or 4-address format with RA updated with AP MAC

(mac80211 support 4-address format via use_4addr)

Receiver requirements
---------------------
1. Fronthaul AP
i) When SA!=TA of backhaul STA, must support receiving 4-address
format frames
ii) When SA==TA of backhaul STA, must support receiving both
3-address and 4-address format frames

(mac80211 support both 3-addr & 4-addr via AP/VLAN interface)

2. Backhaul STA
i) When DA!=RA of backhaul STA, must support receiving 4-address
format frames
ii) When DA==RA of backhaul STA, must support receiving both
3-address and 4-address format frames

(mac80211 support only receiving 4-address format via
use_4addr)

This patch addresses the above Rx requirement (ii) for backhaul STA.

The current design doesn't accept 3-address frames when configured in 4-address
mode (use_4addr). Hence add a check to allow 3-address frames when DA==RA of
backhaul STA (adhering to Table 9-26 of IEEE Std 802.11™-2016).

This case was tested with a bridged station interface when associated with
a non-mac80211 based vendor AP implementation using 3-address frames for WDS.

STA was able to support the Multi-AP Rx requirement when DA==RA. No issues,
no loops seen when tested with mac80211 based AP as well.

Verified and confirmed all other Tx and Rx requirements of AP and STA for
Multi-AP respectively. They all work using the current mac80211-WDS design.

Signed-off-by: Sathishkumar Muruganandam <[email protected]>
---
net/mac80211/rx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index a16ba568e2a3..686e5586e1f4 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2313,7 +2313,7 @@ __ieee80211_data_to_8023(struct ieee80211_rx_data *rx, bool *port_control)

if (!sdata->u.mgd.use_4addr)
return -1;
- else
+ else if (!ether_addr_equal(hdr->addr1, sdata->vif.addr))
check_port_control = true;
}

--
2.7.4


2018-08-28 13:49:05

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: WFA Multi-AP backhaul STA Rx requirement

Hmm. The subject/patch title isn't very clear - does it *implement* this
requirement? Or do something else with it? Please clarify.

On Thu, 2018-08-16 at 18:17 +0530, Sathishkumar Muruganandam wrote:
> The current mac80211 WDS (4-address mode) can be used to cover most of the
> Multi-AP requirements for Data frames per the WFA Multi-AP Specification v1.0.

Be more clear here please - I think you don't mean WDS
(NL80211_IF_TYPE_WDS) but the - currently for all I know Linux-specific
- 4-addr mode of AP/client interfaces?

> When configuring AP/STA interfaces in 4-address mode, they are able to function
> as fronthaul AP/backhaul STA of Multi-AP device complying below
> Tx, Rx requirements except one STA Rx requirement.
>
> Multi-AP specification section 14.1 describes the following requirements:
>
> Transmitter requirements
> ------------------------
> 1. Fronthaul AP
> i) When DA!=RA of backhaul STA, must use 4-address format
> ii) When DA==RA of backhaul STA, shall use either 3-address
> or 4-address format with RA updated with STA MAC
>
> (mac80211 support 4-address format via AP/VLAN interface)
>
> 2. Backhaul STA
> i) When SA!=TA of backhaul STA, must use 4-address format
> ii) When SA==TA of backhaul STA, shall use either 3-address
> or 4-address format with RA updated with AP MAC
>
> (mac80211 support 4-address format via use_4addr)
>
> Receiver requirements
> ---------------------
> 1. Fronthaul AP
> i) When SA!=TA of backhaul STA, must support receiving 4-address
> format frames
> ii) When SA==TA of backhaul STA, must support receiving both
> 3-address and 4-address format frames
>
> (mac80211 support both 3-addr & 4-addr via AP/VLAN interface)
>
> 2. Backhaul STA
> i) When DA!=RA of backhaul STA, must support receiving 4-address
> format frames
> ii) When DA==RA of backhaul STA, must support receiving both
> 3-address and 4-address format frames
>
> (mac80211 support only receiving 4-address format via
> use_4addr)
>
> This patch addresses the above Rx requirement (ii) for backhaul STA.
>
> The current design doesn't accept 3-address frames when configured in 4-address
> mode (use_4addr). Hence add a check to allow 3-address frames when DA==RA of
> backhaul STA (adhering to Table 9-26 of IEEE Std 802.11™-2016).
>
> This case was tested with a bridged station interface when associated with
> a non-mac80211 based vendor AP implementation using 3-address frames for WDS.
>
> STA was able to support the Multi-AP Rx requirement when DA==RA. No issues,
> no loops seen when tested with mac80211 based AP as well.
>
> Verified and confirmed all other Tx and Rx requirements of AP and STA for
> Multi-AP respectively. They all work using the current mac80211-WDS design.

Ok.

> Signed-off-by: Sathishkumar Muruganandam <[email protected]>
> ---
> net/mac80211/rx.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index a16ba568e2a3..686e5586e1f4 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -2313,7 +2313,7 @@ __ieee80211_data_to_8023(struct ieee80211_rx_data *rx, bool *port_control)
>
> if (!sdata->u.mgd.use_4addr)
> return -1;
> - else
> + else if (!ether_addr_equal(hdr->addr1, sdata->vif.addr))
> check_port_control = true;

I guess I have no objection to this. Felix?

johannes

Subject: Re: [PATCH] mac80211: WFA Multi-AP backhaul STA Rx requirement

On 2018-08-28 17:25, Johannes Berg wrote:
> On Tue, 2018-08-28 at 17:22 +0530, [email protected] wrote:
>> Hi Johannes,
>>
>> > Hmm. The subject/patch title isn't very clear - does it *implement* this
>> > requirement? Or do something else with it? Please clarify.
>> >
>>
>> Yes, this patch implements the missing Rx requirement (ii) for
>> backhaul STA
>> below.
>>
> Right. Can you clean up the commit log a bit and in particular clarify
> the subject please?

Sure, Johannes. Please check my patch v2, mac80211: add missing WFA
Multi-AP
backhaul STA Rx requirement.

--
Thanks,
Sathishkumar

Subject: RE: [PATCH] mac80211: WFA Multi-AP backhaul STA Rx requirement

Hi Johannes,

> Hmm. The subject/patch title isn't very clear - does it *implement* =
this
> requirement? Or do something else with it? Please clarify.
>=20

Yes, this patch implements the missing Rx requirement (ii) for backhaul =
STA
below.
..

> > Receiver requirements
> > ---------------------
> > 1. Fronthaul AP
> > i) When SA!=3DTA of backhaul STA, must support receiving =
4-address
> > format frames
> > ii) When SA=3D=3DTA of backhaul STA, must support receiving =
both
> > 3-address and 4-address format frames
> >
> > (mac80211 support both 3-addr & 4-addr via AP/VLAN
> > interface)
> >
> > 2. Backhaul STA
> > i) When DA!=3DRA of backhaul STA, must support receiving =
4-address
> > format frames
> > ii) When DA=3D=3DRA of backhaul STA, must support receiving =
both
> > 3-address and 4-address format frames
> >
> > (mac80211 support only receiving 4-address format via
> > use_4addr)
> >
> > This patch addresses the above Rx requirement (ii) for backhaul STA.

This patch implements the Rx requirement (ii) of receiving unicast =
3-addr frames in
addition to 4-addr format frames.

Thanks,
Sathishkumar

2018-08-28 15:45:05

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH] mac80211: WFA Multi-AP backhaul STA Rx requirement

On 2018-08-28 11:58, Johannes Berg wrote:
>> ---
>> net/mac80211/rx.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
>> index a16ba568e2a3..686e5586e1f4 100644
>> --- a/net/mac80211/rx.c
>> +++ b/net/mac80211/rx.c
>> @@ -2313,7 +2313,7 @@ __ieee80211_data_to_8023(struct ieee80211_rx_data *rx, bool *port_control)
>>
>> if (!sdata->u.mgd.use_4addr)
>> return -1;
>> - else
>> + else if (!ether_addr_equal(hdr->addr1, sdata->vif.addr))
>> check_port_control = true;
>
> I guess I have no objection to this. Felix?
No objection from me.

- Felix

2018-08-28 15:46:57

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: WFA Multi-AP backhaul STA Rx requirement

On Tue, 2018-08-28 at 17:22 +0530, [email protected] wrote:
> Hi Johannes,
>
> > Hmm. The subject/patch title isn't very clear - does it *implement* this
> > requirement? Or do something else with it? Please clarify.
> >
>
> Yes, this patch implements the missing Rx requirement (ii) for backhaul STA
> below.
>
Right. Can you clean up the commit log a bit and in particular clarify
the subject please?

johannes