2009-02-21 23:07:31

by Alina Friedrichsen

[permalink] [raw]
Subject: [PATCH] mac80211: Don't merge with the same BSSID

It was not a good idea to do a TSF reset on strange IBSS merges to the =
same BSSID. For example it will break the TSF sync of ath9k completely =
and it is unnecessary as all hardware I have tested do a TSF sync to a =
higher value automatically and IBSS merges are only done to higher TSF =
values. It only need a TSF reset to accept a lower value, when the IBSS=
network is changed manually.

Signed-off-by: Alina Friedrichsen <[email protected]>
---
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 1bbfc70..cf20575 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -291,6 +291,10 @@ static void ieee80211_rx_bss_info(struct ieee80211=
_sub_if_data *sdata,
sdata->u.ibss.ssid_len))
goto put_bss;
=20
+ /* same BSSID */
+ if (memcmp(bss->cbss.bssid, sdata->u.ibss.bssid, ETH_ALEN) =3D=3D 0)
+ goto put_bss;
+
if (rx_status->flag & RX_FLAG_TSFT) {
/*
* For correct IBSS merging we need mactime; since mactime is

--=20
Jetzt 1 Monat kostenlos! GMX FreeDSL - Telefonanschluss + DSL=20
f=FCr nur 17,95 Euro/mtl.!* http://dsl.gmx.de/?ac=3DOM.AD.PD003K11308T4=
569a


2009-02-24 01:54:44

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Don't merge with the same BSSID

On Sun, 2009-02-22 at 00:07 +0100, Alina Friedrichsen wrote:
> It was not a good idea to do a TSF reset on strange IBSS merges to the same BSSID. For example it will break the TSF sync of ath9k completely and it is unnecessary as all hardware I have tested do a TSF sync to a higher value automatically and IBSS merges are only done to higher TSF values. It only need a TSF reset to accept a lower value, when the IBSS network is changed manually.
>
> Signed-off-by: Alina Friedrichsen <[email protected]>

Acked-by: Johannes Berg <[email protected]>

> ---
> diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
> index 1bbfc70..cf20575 100644
> --- a/net/mac80211/ibss.c
> +++ b/net/mac80211/ibss.c
> @@ -291,6 +291,10 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
> sdata->u.ibss.ssid_len))
> goto put_bss;
>
> + /* same BSSID */
> + if (memcmp(bss->cbss.bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0)
> + goto put_bss;
> +
> if (rx_status->flag & RX_FLAG_TSFT) {
> /*
> * For correct IBSS merging we need mactime; since mactime is
>


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part