Skip to contentSkip to conversation

mac80211: Don't merge with the same BSSID

PATCH In review Alina Friedrichsen 2 participants 2 messages Feb 21, 2009 – Feb 24, 2009 mac80211

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---

net/mac80211/ibss.c +0 -0
index 1bbfc70..cf20575 100644
@@ -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
--
To unsubscribe from this list: send the line "unsubscribe linux-wireles= s" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

maintainer Acked-by on v1 1/1
#1 lore raw
Quoted 3 lines · Alina Friedrichsen

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.

Quoted 17 lines

---

net/mac80211/ibss.c +4 -0
index 1bbfc70..cf20575 100644
@@ -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