From 1ba67b1130591c6f34beade71384cd9ba29f8722 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 3 Oct 2015 17:18:35 +0000 Subject: [PATCH] rum(4): do not corrupt MAC address Don't override the NIC MAC address with an overridden MAC address for a VAP. Submitted by: Differential Revision: https://reviews.freebsd.org/D3625 --- sys/dev/usb/wlan/if_rum.c | 6 +++--- sys/dev/usb/wlan/if_rumvar.h | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/usb/wlan/if_rum.c b/sys/dev/usb/wlan/if_rum.c index 91d5ed71063..dec244d4022 100644 --- a/sys/dev/usb/wlan/if_rum.c +++ b/sys/dev/usb/wlan/if_rum.c @@ -785,8 +785,8 @@ rum_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) rum_enable_mrr(sc); rum_set_txpreamble(sc); rum_set_basicrates(sc); - IEEE80211_ADDR_COPY(ic->ic_macaddr, ni->ni_bssid); - rum_set_bssid(sc, ic->ic_macaddr); + IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid); + rum_set_bssid(sc, sc->sc_bssid); } if (vap->iv_opmode == IEEE80211_M_HOSTAP || @@ -2368,7 +2368,7 @@ rum_scan_end(struct ieee80211com *ic) RUM_LOCK(sc); rum_enable_tsf_sync(sc); - rum_set_bssid(sc, ic->ic_macaddr); + rum_set_bssid(sc, sc->sc_bssid); RUM_UNLOCK(sc); } diff --git a/sys/dev/usb/wlan/if_rumvar.h b/sys/dev/usb/wlan/if_rumvar.h index fd3d8faf67a..c78a0d8444d 100644 --- a/sys/dev/usb/wlan/if_rumvar.h +++ b/sys/dev/usb/wlan/if_rumvar.h @@ -137,6 +137,8 @@ struct rum_softc { u_int sc_detached:1, sc_running:1; + uint8_t sc_bssid[IEEE80211_ADDR_LEN]; + struct { uint8_t val; uint8_t reg;