2012-12-05 05:13:39

by Marco Porsch

[permalink] [raw]
Subject: [RFC] mac80211: dont drop mesh Peering Open frames from unknown STA

These are valid mesh peering frames. The STA entry will then be created in
mesh_peer_init.
The problem was previously worked around, since both STA receive the beacons
of one another, which create the STA entry. This may not be the case when
either node is in PS mode.

Signed-off-by: Marco Porsch <[email protected]>
---
net/mac80211/rx.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 8d267ec..89bfbbb 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2319,7 +2319,8 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
if (len < IEEE80211_MIN_ACTION_SIZE)
return RX_DROP_UNUSABLE;

- if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC)
+ if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC &&
+ mgmt->u.action.category != WLAN_CATEGORY_SELF_PROTECTED)
return RX_DROP_UNUSABLE;

if (!(status->rx_flags & IEEE80211_RX_RA_MATCH))
--
1.7.9.5



2012-12-05 20:17:37

by Thomas Pedersen

[permalink] [raw]
Subject: Re: [RFC] mac80211: dont drop mesh Peering Open frames from unknown STA

On Tue, Dec 4, 2012 at 9:13 PM, Marco Porsch
<[email protected]> wrote:
> These are valid mesh peering frames. The STA entry will then be created in
> mesh_peer_init.
> The problem was previously worked around, since both STA receive the beacons
> of one another, which create the STA entry. This may not be the case when
> either node is in PS mode.

Nice, this bug has been there for quite some time then. Please clean
up the commit message before resubmitting as a patch.

> Signed-off-by: Marco Porsch <[email protected]>
> ---
> net/mac80211/rx.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index 8d267ec..89bfbbb 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -2319,7 +2319,8 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
> if (len < IEEE80211_MIN_ACTION_SIZE)
> return RX_DROP_UNUSABLE;
>
> - if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC)
> + if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC &&
> + mgmt->u.action.category != WLAN_CATEGORY_SELF_PROTECTED)
> return RX_DROP_UNUSABLE;
>
> if (!(status->rx_flags & IEEE80211_RX_RA_MATCH))
> --
> 1.7.9.5
>
> _______________________________________________
> Devel mailing list
> [email protected]
> http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel