Date: Thu, 3 Mar 2016 20:06:16 +0000 (UTC) From: Andriy Voskoboinyk <avos@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r296356 - head/sys/dev/usb/wlan Message-ID: <201603032006.u23K6Grd062553@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: avos Date: Thu Mar 3 20:06:16 2016 New Revision: 296356 URL: https://svnweb.freebsd.org/changeset/base/296356 Log: zyd, run, ural: do not corrupt MAC address Do not use ic_macaddr as a storage for current BSSID; it may be reused in vap creation procedure; similar to r288619. Approved by: adrian (mentor) Differential Revision: https://reviews.freebsd.org/D5513 Modified: head/sys/dev/usb/wlan/if_run.c head/sys/dev/usb/wlan/if_runvar.h head/sys/dev/usb/wlan/if_ural.c head/sys/dev/usb/wlan/if_uralvar.h head/sys/dev/usb/wlan/if_zyd.c head/sys/dev/usb/wlan/if_zydreg.h Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Thu Mar 3 19:53:46 2016 (r296355) +++ head/sys/dev/usb/wlan/if_run.c Thu Mar 3 20:06:16 2016 (r296356) @@ -2141,8 +2141,8 @@ run_newstate(struct ieee80211vap *vap, e run_set_txpreamble(sc); run_set_basicrates(sc); ni = ieee80211_ref_node(vap->iv_bss); - IEEE80211_ADDR_COPY(ic->ic_macaddr, ni->ni_bssid); - run_set_bssid(sc, ni->ni_bssid); + IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid); + run_set_bssid(sc, sc->sc_bssid); ieee80211_free_node(ni); run_enable_tsf_sync(sc); @@ -4811,8 +4811,7 @@ run_scan_end(struct ieee80211com *ic) RUN_LOCK(sc); run_enable_tsf_sync(sc); - /* XXX keep local copy */ - run_set_bssid(sc, ic->ic_macaddr); + run_set_bssid(sc, sc->sc_bssid); RUN_UNLOCK(sc); Modified: head/sys/dev/usb/wlan/if_runvar.h ============================================================================== --- head/sys/dev/usb/wlan/if_runvar.h Thu Mar 3 19:53:46 2016 (r296355) +++ head/sys/dev/usb/wlan/if_runvar.h Thu Mar 3 20:06:16 2016 (r296356) @@ -248,6 +248,8 @@ struct run_softc { uint8_t rvp_bmap; uint8_t sc_detached; + uint8_t sc_bssid[IEEE80211_ADDR_LEN]; + union { struct run_rx_radiotap_header th; uint8_t pad[64]; Modified: head/sys/dev/usb/wlan/if_ural.c ============================================================================== --- head/sys/dev/usb/wlan/if_ural.c Thu Mar 3 19:53:46 2016 (r296355) +++ head/sys/dev/usb/wlan/if_ural.c Thu Mar 3 20:06:16 2016 (r296356) @@ -706,8 +706,8 @@ ural_newstate(struct ieee80211vap *vap, ural_update_slot(sc); ural_set_txpreamble(sc); ural_set_basicrates(sc, ic->ic_bsschan); - IEEE80211_ADDR_COPY(ic->ic_macaddr, ni->ni_bssid); - ural_set_bssid(sc, ic->ic_macaddr); + IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid); + ural_set_bssid(sc, sc->sc_bssid); } if (vap->iv_opmode == IEEE80211_M_HOSTAP || @@ -1582,7 +1582,7 @@ ural_scan_end(struct ieee80211com *ic) RAL_LOCK(sc); ural_enable_tsf_sync(sc); - ural_set_bssid(sc, ic->ic_macaddr); + ural_set_bssid(sc, sc->sc_bssid); RAL_UNLOCK(sc); } Modified: head/sys/dev/usb/wlan/if_uralvar.h ============================================================================== --- head/sys/dev/usb/wlan/if_uralvar.h Thu Mar 3 19:53:46 2016 (r296355) +++ head/sys/dev/usb/wlan/if_uralvar.h Thu Mar 3 20:06:16 2016 (r296356) @@ -97,7 +97,7 @@ struct ural_softc { uint32_t asic_rev; uint8_t rf_rev; - struct usb_xfer *sc_xfer[URAL_N_TRANSFER]; + struct usb_xfer *sc_xfer[URAL_N_TRANSFER]; struct ural_tx_data tx_data[RAL_TX_LIST_COUNT]; ural_txdhead tx_q; @@ -113,6 +113,8 @@ struct ural_softc { u_int sc_detached:1, sc_running:1; + uint8_t sc_bssid[IEEE80211_ADDR_LEN]; + struct { uint8_t val; uint8_t reg; Modified: head/sys/dev/usb/wlan/if_zyd.c ============================================================================== --- head/sys/dev/usb/wlan/if_zyd.c Thu Mar 3 19:53:46 2016 (r296355) +++ head/sys/dev/usb/wlan/if_zyd.c Thu Mar 3 20:06:16 2016 (r296356) @@ -609,8 +609,8 @@ zyd_newstate(struct ieee80211vap *vap, e /* make data LED blink upon Tx */ zyd_write32_m(sc, sc->sc_fwbase + ZYD_FW_LINK_STATUS, 1); - IEEE80211_ADDR_COPY(ic->ic_macaddr, vap->iv_bss->ni_bssid); - zyd_set_bssid(sc, ic->ic_macaddr); + IEEE80211_ADDR_COPY(sc->sc_bssid, vap->iv_bss->ni_bssid); + zyd_set_bssid(sc, sc->sc_bssid); break; default: break; @@ -2860,7 +2860,7 @@ zyd_scan_end(struct ieee80211com *ic) ZYD_LOCK(sc); /* restore previous bssid */ - zyd_set_bssid(sc, ic->ic_macaddr); + zyd_set_bssid(sc, sc->sc_bssid); ZYD_UNLOCK(sc); } Modified: head/sys/dev/usb/wlan/if_zydreg.h ============================================================================== --- head/sys/dev/usb/wlan/if_zydreg.h Thu Mar 3 19:53:46 2016 (r296355) +++ head/sys/dev/usb/wlan/if_zydreg.h Thu Mar 3 20:06:16 2016 (r296356) @@ -1291,6 +1291,7 @@ struct zyd_softc { uint8_t sc_ofdm36_cal[14]; uint8_t sc_ofdm48_cal[14]; uint8_t sc_ofdm54_cal[14]; + uint8_t sc_bssid[IEEE80211_ADDR_LEN]; struct mtx sc_mtx; struct zyd_tx_data tx_data[ZYD_TX_LIST_CNT];
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603032006.u23K6Grd062553>