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
This commit is contained in:
parent
467f437b43
commit
ae132f1122
@ -2141,8 +2141,8 @@ run_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
|||||||
run_set_txpreamble(sc);
|
run_set_txpreamble(sc);
|
||||||
run_set_basicrates(sc);
|
run_set_basicrates(sc);
|
||||||
ni = ieee80211_ref_node(vap->iv_bss);
|
ni = ieee80211_ref_node(vap->iv_bss);
|
||||||
IEEE80211_ADDR_COPY(ic->ic_macaddr, ni->ni_bssid);
|
IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid);
|
||||||
run_set_bssid(sc, ni->ni_bssid);
|
run_set_bssid(sc, sc->sc_bssid);
|
||||||
ieee80211_free_node(ni);
|
ieee80211_free_node(ni);
|
||||||
run_enable_tsf_sync(sc);
|
run_enable_tsf_sync(sc);
|
||||||
|
|
||||||
@ -4811,8 +4811,7 @@ run_scan_end(struct ieee80211com *ic)
|
|||||||
RUN_LOCK(sc);
|
RUN_LOCK(sc);
|
||||||
|
|
||||||
run_enable_tsf_sync(sc);
|
run_enable_tsf_sync(sc);
|
||||||
/* XXX keep local copy */
|
run_set_bssid(sc, sc->sc_bssid);
|
||||||
run_set_bssid(sc, ic->ic_macaddr);
|
|
||||||
|
|
||||||
RUN_UNLOCK(sc);
|
RUN_UNLOCK(sc);
|
||||||
|
|
||||||
|
@ -248,6 +248,8 @@ struct run_softc {
|
|||||||
uint8_t rvp_bmap;
|
uint8_t rvp_bmap;
|
||||||
uint8_t sc_detached;
|
uint8_t sc_detached;
|
||||||
|
|
||||||
|
uint8_t sc_bssid[IEEE80211_ADDR_LEN];
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct run_rx_radiotap_header th;
|
struct run_rx_radiotap_header th;
|
||||||
uint8_t pad[64];
|
uint8_t pad[64];
|
||||||
|
@ -706,8 +706,8 @@ ural_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
|||||||
ural_update_slot(sc);
|
ural_update_slot(sc);
|
||||||
ural_set_txpreamble(sc);
|
ural_set_txpreamble(sc);
|
||||||
ural_set_basicrates(sc, ic->ic_bsschan);
|
ural_set_basicrates(sc, ic->ic_bsschan);
|
||||||
IEEE80211_ADDR_COPY(ic->ic_macaddr, ni->ni_bssid);
|
IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid);
|
||||||
ural_set_bssid(sc, ic->ic_macaddr);
|
ural_set_bssid(sc, sc->sc_bssid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vap->iv_opmode == IEEE80211_M_HOSTAP ||
|
if (vap->iv_opmode == IEEE80211_M_HOSTAP ||
|
||||||
@ -1582,7 +1582,7 @@ ural_scan_end(struct ieee80211com *ic)
|
|||||||
|
|
||||||
RAL_LOCK(sc);
|
RAL_LOCK(sc);
|
||||||
ural_enable_tsf_sync(sc);
|
ural_enable_tsf_sync(sc);
|
||||||
ural_set_bssid(sc, ic->ic_macaddr);
|
ural_set_bssid(sc, sc->sc_bssid);
|
||||||
RAL_UNLOCK(sc);
|
RAL_UNLOCK(sc);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ struct ural_softc {
|
|||||||
uint32_t asic_rev;
|
uint32_t asic_rev;
|
||||||
uint8_t rf_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];
|
struct ural_tx_data tx_data[RAL_TX_LIST_COUNT];
|
||||||
ural_txdhead tx_q;
|
ural_txdhead tx_q;
|
||||||
@ -113,6 +113,8 @@ struct ural_softc {
|
|||||||
u_int sc_detached:1,
|
u_int sc_detached:1,
|
||||||
sc_running:1;
|
sc_running:1;
|
||||||
|
|
||||||
|
uint8_t sc_bssid[IEEE80211_ADDR_LEN];
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
uint8_t val;
|
uint8_t val;
|
||||||
uint8_t reg;
|
uint8_t reg;
|
||||||
|
@ -609,8 +609,8 @@ zyd_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
|||||||
/* make data LED blink upon Tx */
|
/* make data LED blink upon Tx */
|
||||||
zyd_write32_m(sc, sc->sc_fwbase + ZYD_FW_LINK_STATUS, 1);
|
zyd_write32_m(sc, sc->sc_fwbase + ZYD_FW_LINK_STATUS, 1);
|
||||||
|
|
||||||
IEEE80211_ADDR_COPY(ic->ic_macaddr, vap->iv_bss->ni_bssid);
|
IEEE80211_ADDR_COPY(sc->sc_bssid, vap->iv_bss->ni_bssid);
|
||||||
zyd_set_bssid(sc, ic->ic_macaddr);
|
zyd_set_bssid(sc, sc->sc_bssid);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -2860,7 +2860,7 @@ zyd_scan_end(struct ieee80211com *ic)
|
|||||||
|
|
||||||
ZYD_LOCK(sc);
|
ZYD_LOCK(sc);
|
||||||
/* restore previous bssid */
|
/* restore previous bssid */
|
||||||
zyd_set_bssid(sc, ic->ic_macaddr);
|
zyd_set_bssid(sc, sc->sc_bssid);
|
||||||
ZYD_UNLOCK(sc);
|
ZYD_UNLOCK(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1291,6 +1291,7 @@ struct zyd_softc {
|
|||||||
uint8_t sc_ofdm36_cal[14];
|
uint8_t sc_ofdm36_cal[14];
|
||||||
uint8_t sc_ofdm48_cal[14];
|
uint8_t sc_ofdm48_cal[14];
|
||||||
uint8_t sc_ofdm54_cal[14];
|
uint8_t sc_ofdm54_cal[14];
|
||||||
|
uint8_t sc_bssid[IEEE80211_ADDR_LEN];
|
||||||
|
|
||||||
struct mtx sc_mtx;
|
struct mtx sc_mtx;
|
||||||
struct zyd_tx_data tx_data[ZYD_TX_LIST_CNT];
|
struct zyd_tx_data tx_data[ZYD_TX_LIST_CNT];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user