svn commit: r328970 - head/sys/dev/ath

Adrian Chadd adrian at FreeBSD.org
Wed Feb 7 09:37:22 UTC 2018


Author: adrian
Date: Wed Feb  7 09:37:22 2018
New Revision: 328970
URL: https://svnweb.freebsd.org/changeset/base/328970

Log:
  [ath] Use the BSSID address logic for STA VAPs too.
  
  For DWDS VAPs on ath(4) we need to ensure that the STA vap and hostap VAP
  have different MAC addresses.  If the STA code path doesn't utilise the
  address assign / reclaim path then it doesn't update the bitmap with which
  address was allocated.
  
  This should fix a bunch of corner issues I've been seeing with DWDS STA + AP
  VAPs that I was working around with manual MAC address assignment.

Modified:
  head/sys/dev/ath/if_ath.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c	Wed Feb  7 09:35:47 2018	(r328969)
+++ head/sys/dev/ath/if_ath.c	Wed Feb  7 09:37:22 2018	(r328970)
@@ -1624,7 +1624,7 @@ ath_vap_create(struct ieee80211com *ic, const char nam
 	}
 
 	/* STA, AHDEMO? */
-	if (opmode == IEEE80211_M_HOSTAP || opmode == IEEE80211_M_MBSS) {
+	if (opmode == IEEE80211_M_HOSTAP || opmode == IEEE80211_M_MBSS || opmode == IEEE80211_M_STA) {
 		assign_address(sc, mac, flags & IEEE80211_CLONE_BSSID);
 		ath_hal_setbssidmask(sc->sc_ah, sc->sc_hwbssidmask);
 	}
@@ -1858,6 +1858,7 @@ ath_vap_delete(struct ieee80211vap *vap)
 		if (sc->sc_nstavaps == 0 && sc->sc_swbmiss)
 			sc->sc_swbmiss = 0;
 	} else if (vap->iv_opmode == IEEE80211_M_HOSTAP ||
+	    vap->iv_opmode == IEEE80211_M_STA ||
 	    vap->iv_opmode == IEEE80211_M_MBSS) {
 		reclaim_address(sc, vap->iv_myaddr);
 		ath_hal_setbssidmask(ah, sc->sc_hwbssidmask);


More information about the svn-src-all mailing list