svn commit: r282405 - head/sys/net80211
Adrian Chadd
adrian at FreeBSD.org
Mon May 4 00:32:11 UTC 2015
Author: adrian
Date: Mon May 4 00:32:10 2015
New Revision: 282405
URL: https://svnweb.freebsd.org/changeset/base/282405
Log:
Use bssid validation for data frames only + add RUN -> RUN state transition
However, IBSS merge will be performed only if a driver calls
ieee80211_ibss_merge(); so, this applicable to the ath(4) only.
Also, this should fix bug 167870.
PR: kern/199632
Submitted by: Andriy Voskoboinyk <s3erios at gmail.com>
Modified:
head/sys/net80211/ieee80211_adhoc.c
Modified: head/sys/net80211/ieee80211_adhoc.c
==============================================================================
--- head/sys/net80211/ieee80211_adhoc.c Mon May 4 00:29:19 2015 (r282404)
+++ head/sys/net80211/ieee80211_adhoc.c Mon May 4 00:32:10 2015 (r282405)
@@ -229,6 +229,8 @@ adhoc_newstate(struct ieee80211vap *vap,
}
#endif
break;
+ case IEEE80211_S_RUN: /* IBSS merge */
+ break;
default:
goto invalid;
}
@@ -369,7 +371,10 @@ adhoc_input(struct ieee80211_node *ni, s
/*
* Validate the bssid.
*/
- if (!IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) &&
+ if (!(type == IEEE80211_FC0_TYPE_MGT &&
+ (subtype == IEEE80211_FC0_SUBTYPE_BEACON ||
+ subtype == IEEE80211_FC0_SUBTYPE_PROBE_REQ)) &&
+ !IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) &&
!IEEE80211_ADDR_EQ(bssid, ifp->if_broadcastaddr)) {
/* not interested in */
IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,
@@ -409,7 +414,7 @@ adhoc_input(struct ieee80211_node *ni, s
}
IEEE80211_RSSI_LPF(ni->ni_avgrssi, rssi);
ni->ni_noise = nf;
- if (HAS_SEQ(type)) {
+ if (HAS_SEQ(type) && IEEE80211_ADDR_EQ(wh->i_addr2, ni->ni_macaddr)) {
uint8_t tid = ieee80211_gettid(wh);
if (IEEE80211_QOS_HAS_SEQ(wh) &&
TID_TO_WME_AC(tid) >= WME_AC_VI)
More information about the svn-src-all
mailing list