Change three methods in struct ieee80211com, namely ic_updateslot,

ic_update_mcast and ic_update_promisc, to pass pointer to the ieee80211com,
not to the ifnet.

Sponsored by:	Netflix
Sponsored by:	Nginx, Inc.
This commit is contained in:
Gleb Smirnoff 2015-05-25 19:53:29 +00:00
parent a41c90e644
commit 272f6ade9b
25 changed files with 157 additions and 169 deletions

View File

@ -166,9 +166,9 @@ static void ath_bmiss_proc(void *, int);
static void ath_key_update_begin(struct ieee80211vap *);
static void ath_key_update_end(struct ieee80211vap *);
static void ath_update_mcast_hw(struct ath_softc *);
static void ath_update_mcast(struct ifnet *);
static void ath_update_promisc(struct ifnet *);
static void ath_updateslot(struct ifnet *);
static void ath_update_mcast(struct ieee80211com *);
static void ath_update_promisc(struct ieee80211com *);
static void ath_updateslot(struct ieee80211com *);
static void ath_bstuck_proc(void *, int);
static void ath_reset_proc(void *, int);
static int ath_desc_alloc(struct ath_softc *);
@ -3547,9 +3547,9 @@ ath_key_update_end(struct ieee80211vap *vap)
}
static void
ath_update_promisc(struct ifnet *ifp)
ath_update_promisc(struct ieee80211com *ic)
{
struct ath_softc *sc = ifp->if_softc;
struct ath_softc *sc = ic->ic_softc;
u_int32_t rfilt;
/* configure rx filter */
@ -3611,9 +3611,9 @@ ath_update_mcast_hw(struct ath_softc *sc)
* awake before operating.
*/
static void
ath_update_mcast(struct ifnet *ifp)
ath_update_mcast(struct ieee80211com *ic)
{
struct ath_softc *sc = ifp->if_softc;
struct ath_softc *sc = ic->ic_softc;
ATH_LOCK(sc);
ath_power_set_power_state(sc, HAL_PM_AWAKE);
@ -3697,10 +3697,9 @@ ath_setslottime(struct ath_softc *sc)
* slot time based on the current setting.
*/
static void
ath_updateslot(struct ifnet *ifp)
ath_updateslot(struct ieee80211com *ic)
{
struct ath_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct ath_softc *sc = ic->ic_softc;
/*
* When not coordinating the BSS, change the hardware

View File

@ -113,7 +113,7 @@ static void bwi_scan_start(struct ieee80211com *);
static void bwi_set_channel(struct ieee80211com *);
static void bwi_scan_end(struct ieee80211com *);
static int bwi_newstate(struct ieee80211vap *, enum ieee80211_state, int);
static void bwi_updateslot(struct ifnet *);
static void bwi_updateslot(struct ieee80211com *);
static int bwi_media_change(struct ifnet *);
static void bwi_calibrate(void *);
@ -3735,14 +3735,13 @@ bwi_set_bssid(struct bwi_softc *sc, const uint8_t *bssid)
}
static void
bwi_updateslot(struct ifnet *ifp)
bwi_updateslot(struct ieee80211com *ic)
{
struct bwi_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct bwi_softc *sc = ic->ic_softc;
struct bwi_mac *mac;
BWI_LOCK(sc);
if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
if (ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) {
DPRINTF(sc, BWI_DBG_80211, "%s\n", __func__);
KASSERT(sc->sc_cur_regwin->rw_type == BWI_REGWIN_T_MAC,

View File

@ -181,8 +181,8 @@ static void bwn_addchannels(struct ieee80211_channel [], int, int *,
const struct bwn_channelinfo *, int);
static int bwn_raw_xmit(struct ieee80211_node *, struct mbuf *,
const struct ieee80211_bpf_params *);
static void bwn_updateslot(struct ifnet *);
static void bwn_update_promisc(struct ifnet *);
static void bwn_updateslot(struct ieee80211com *);
static void bwn_update_promisc(struct ieee80211com *);
static void bwn_wme_init(struct bwn_mac *);
static int bwn_wme_update(struct ieee80211com *);
static void bwn_wme_clear(struct bwn_softc *);
@ -1252,7 +1252,7 @@ bwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
case SIOCSIFFLAGS:
startall = 0;
if (IS_RUNNING(ifp)) {
bwn_update_promisc(ifp);
bwn_update_promisc(ic);
} else if (ifp->if_flags & IFF_UP) {
if ((sc->sc_flags & BWN_FLAG_INVALID) == 0) {
bwn_init(sc);
@ -2772,14 +2772,13 @@ bwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
* like slot time and preamble.
*/
static void
bwn_updateslot(struct ifnet *ifp)
bwn_updateslot(struct ieee80211com *ic)
{
struct bwn_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct bwn_softc *sc = ic->ic_softc;
struct bwn_mac *mac;
BWN_LOCK(sc);
if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
if (ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) {
mac = (struct bwn_mac *)sc->sc_curmac;
bwn_set_slot_time(mac,
(ic->ic_flags & IEEE80211_F_SHSLOT) ? 9 : 20);
@ -2795,15 +2794,15 @@ bwn_updateslot(struct ifnet *ifp)
* mode when operating in hostap mode to do ACS).
*/
static void
bwn_update_promisc(struct ifnet *ifp)
bwn_update_promisc(struct ieee80211com *ic)
{
struct bwn_softc *sc = ifp->if_softc;
struct bwn_softc *sc = ic->ic_softc;
struct bwn_mac *mac = sc->sc_curmac;
BWN_LOCK(sc);
mac = sc->sc_curmac;
if (mac != NULL && mac->mac_status >= BWN_MAC_STATUS_INITED) {
if (ifp->if_flags & IFF_PROMISC)
if (ic->ic_ifp->if_flags & IFF_PROMISC)
sc->sc_filters |= BWN_MACCTL_PROMISC;
else
sc->sc_filters &= ~BWN_MACCTL_PROMISC;

View File

@ -159,8 +159,8 @@ static void ndis_tick (void *);
static void ndis_ticktask (device_object *, void *);
static int ndis_raw_xmit (struct ieee80211_node *, struct mbuf *,
const struct ieee80211_bpf_params *);
static void ndis_update_mcast (struct ifnet *ifp);
static void ndis_update_promisc (struct ifnet *ifp);
static void ndis_update_mcast (struct ieee80211com *);
static void ndis_update_promisc (struct ieee80211com *);
static void ndis_start (struct ifnet *);
static void ndis_starttask (device_object *, void *);
static void ndis_resettask (device_object *, void *);
@ -1773,15 +1773,15 @@ ndis_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
}
static void
ndis_update_mcast(struct ifnet *ifp)
ndis_update_mcast(struct ieee80211com *ic)
{
struct ndis_softc *sc = ifp->if_softc;
struct ndis_softc *sc = ic->ic_softc;
ndis_setmulti(sc);
}
static void
ndis_update_promisc(struct ifnet *ifp)
ndis_update_promisc(struct ieee80211com *ic)
{
/* not supported */
}

View File

@ -247,7 +247,7 @@ static int iwn_set_link_quality(struct iwn_softc *,
struct ieee80211_node *);
static int iwn_add_broadcast_node(struct iwn_softc *, int);
static int iwn_updateedca(struct ieee80211com *);
static void iwn_update_mcast(struct ifnet *);
static void iwn_update_mcast(struct ieee80211com *);
static void iwn_set_led(struct iwn_softc *, uint8_t, uint8_t, uint8_t);
static int iwn_set_critical_temp(struct iwn_softc *);
static int iwn_set_timing(struct iwn_softc *, struct ieee80211_node *);
@ -5278,7 +5278,7 @@ iwn_updateedca(struct ieee80211com *ic)
}
static void
iwn_update_mcast(struct ifnet *ifp)
iwn_update_mcast(struct ieee80211com *ic)
{
/* Ignore */
}

View File

@ -133,7 +133,7 @@ static void malo_tx_cleanupq(struct malo_softc *, struct malo_txq *);
static void malo_start(struct ifnet *);
static void malo_watchdog(void *);
static int malo_ioctl(struct ifnet *, u_long, caddr_t);
static void malo_updateslot(struct ifnet *);
static void malo_updateslot(struct ieee80211com *);
static int malo_newstate(struct ieee80211vap *, enum ieee80211_state, int);
static void malo_scan_start(struct ieee80211com *);
static void malo_scan_end(struct ieee80211com *);
@ -1766,15 +1766,14 @@ malo_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
* like slot time and preamble.
*/
static void
malo_updateslot(struct ifnet *ifp)
malo_updateslot(struct ieee80211com *ic)
{
struct malo_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct malo_softc *sc = ic->ic_softc;
struct malo_hal *mh = sc->malo_mh;
int error;
/* NB: can be called early; suppress needless cmds */
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
DPRINTF(sc, MALO_DEBUG_RESET,

View File

@ -113,9 +113,9 @@ static int mwl_key_delete(struct ieee80211vap *,
static int mwl_key_set(struct ieee80211vap *, const struct ieee80211_key *,
const uint8_t mac[IEEE80211_ADDR_LEN]);
static int mwl_mode_init(struct mwl_softc *);
static void mwl_update_mcast(struct ifnet *);
static void mwl_update_promisc(struct ifnet *);
static void mwl_updateslot(struct ifnet *);
static void mwl_update_mcast(struct ieee80211com *);
static void mwl_update_promisc(struct ieee80211com *);
static void mwl_updateslot(struct ieee80211com *);
static int mwl_beacon_setup(struct ieee80211vap *);
static void mwl_beacon_update(struct ieee80211vap *, int);
#ifdef MWL_HOST_PS_SUPPORT
@ -1845,9 +1845,9 @@ mwl_mode_init(struct mwl_softc *sc)
* Callback from the 802.11 layer after a multicast state change.
*/
static void
mwl_update_mcast(struct ifnet *ifp)
mwl_update_mcast(struct ieee80211com *ic)
{
struct mwl_softc *sc = ifp->if_softc;
struct mwl_softc *sc = ic->ic_softc;
mwl_setmcastfilter(sc);
}
@ -1860,11 +1860,12 @@ mwl_update_mcast(struct ifnet *ifp)
* mode when operating in hostap mode to do ACS).
*/
static void
mwl_update_promisc(struct ifnet *ifp)
mwl_update_promisc(struct ieee80211com *ic)
{
struct mwl_softc *sc = ifp->if_softc;
struct mwl_softc *sc = ic->ic_softc;
mwl_hal_setpromisc(sc->sc_mh, (ifp->if_flags & IFF_PROMISC) != 0);
mwl_hal_setpromisc(sc->sc_mh,
(ic->ic_ifp->if_flags & IFF_PROMISC) != 0);
}
/*
@ -1874,15 +1875,14 @@ mwl_update_promisc(struct ifnet *ifp)
* like slot time and preamble.
*/
static void
mwl_updateslot(struct ifnet *ifp)
mwl_updateslot(struct ieee80211com *ic)
{
struct mwl_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct mwl_softc *sc = ic->ic_softc;
struct mwl_hal *mh = sc->sc_mh;
int prot;
/* NB: can be called early; suppress needless cmds */
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
/*
@ -1940,7 +1940,7 @@ mwl_beacon_update(struct ieee80211vap *vap, int item)
KASSERT(hvap != NULL, ("no beacon"));
switch (item) {
case IEEE80211_BEACON_ERP:
mwl_updateslot(ic->ic_ifp);
mwl_updateslot(ic);
break;
case IEEE80211_BEACON_HTINFO:
mwl_hal_setnprotmode(hvap,

View File

@ -144,14 +144,14 @@ static void rt2560_disable_rf_tune(struct rt2560_softc *);
static void rt2560_enable_tsf_sync(struct rt2560_softc *);
static void rt2560_enable_tsf(struct rt2560_softc *);
static void rt2560_update_plcp(struct rt2560_softc *);
static void rt2560_update_slot(struct ifnet *);
static void rt2560_update_slot(struct ieee80211com *);
static void rt2560_set_basicrates(struct rt2560_softc *,
const struct ieee80211_rateset *);
static void rt2560_update_led(struct rt2560_softc *, int, int);
static void rt2560_set_bssid(struct rt2560_softc *, const uint8_t *);
static void rt2560_set_macaddr(struct rt2560_softc *, uint8_t *);
static void rt2560_get_macaddr(struct rt2560_softc *, uint8_t *);
static void rt2560_update_promisc(struct ifnet *);
static void rt2560_update_promisc(struct ieee80211com *);
static const char *rt2560_get_rf(int);
static void rt2560_read_config(struct rt2560_softc *);
static int rt2560_bbp_init(struct rt2560_softc *);
@ -1998,7 +1998,7 @@ rt2560_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
rt2560_init_locked(sc);
startall = 1;
} else
rt2560_update_promisc(ifp);
rt2560_update_promisc(ic);
} else {
if (ifp->if_drv_flags & IFF_DRV_RUNNING)
rt2560_stop_locked(sc);
@ -2307,10 +2307,9 @@ rt2560_update_plcp(struct rt2560_softc *sc)
* IEEE Std 802.11-1999 pp. 85 to know how these values are computed.
*/
static void
rt2560_update_slot(struct ifnet *ifp)
rt2560_update_slot(struct ieee80211com *ic)
{
struct rt2560_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct rt2560_softc *sc = ic->ic_softc;
uint8_t slottime;
uint16_t tx_sifs, tx_pifs, tx_difs, eifs;
uint32_t tmp;
@ -2437,21 +2436,21 @@ rt2560_get_macaddr(struct rt2560_softc *sc, uint8_t *addr)
}
static void
rt2560_update_promisc(struct ifnet *ifp)
rt2560_update_promisc(struct ieee80211com *ic)
{
struct rt2560_softc *sc = ifp->if_softc;
struct rt2560_softc *sc = ic->ic_softc;
uint32_t tmp;
tmp = RAL_READ(sc, RT2560_RXCSR0);
tmp &= ~RT2560_DROP_NOT_TO_ME;
if (!(ifp->if_flags & IFF_PROMISC))
if (!(ic->ic_ifp->if_flags & IFF_PROMISC))
tmp |= RT2560_DROP_NOT_TO_ME;
RAL_WRITE(sc, RT2560_RXCSR0, tmp);
DPRINTF(sc, "%s promiscuous mode\n", (ifp->if_flags & IFF_PROMISC) ?
"entering" : "leaving");
DPRINTF(sc, "%s promiscuous mode\n",
(ic->ic_ifp->if_flags & IFF_PROMISC) ? "entering" : "leaving");
}
static const char *
@ -2660,7 +2659,7 @@ rt2560_init_locked(struct rt2560_softc *sc)
/* set basic rate set (will be updated later) */
RAL_WRITE(sc, RT2560_ARSP_PLCP_1, 0x153);
rt2560_update_slot(ifp);
rt2560_update_slot(ic);
rt2560_update_plcp(sc);
rt2560_update_led(sc, 0, 0);

View File

@ -147,9 +147,9 @@ static void rt2661_set_bssid(struct rt2661_softc *,
const uint8_t *);
static void rt2661_set_macaddr(struct rt2661_softc *,
const uint8_t *);
static void rt2661_update_promisc(struct ifnet *);
static void rt2661_update_promisc(struct ieee80211com *);
static int rt2661_wme_update(struct ieee80211com *) __unused;
static void rt2661_update_slot(struct ifnet *);
static void rt2661_update_slot(struct ieee80211com *);
static const char *rt2661_get_rf(int);
static void rt2661_read_eeprom(struct rt2661_softc *,
uint8_t macaddr[IEEE80211_ADDR_LEN]);
@ -1736,7 +1736,7 @@ rt2661_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
rt2661_init_locked(sc);
startall = 1;
} else
rt2661_update_promisc(ifp);
rt2661_update_promisc(ic);
} else {
if (ifp->if_drv_flags & IFF_DRV_RUNNING)
rt2661_stop_locked(sc);
@ -2080,21 +2080,21 @@ rt2661_set_macaddr(struct rt2661_softc *sc, const uint8_t *addr)
}
static void
rt2661_update_promisc(struct ifnet *ifp)
rt2661_update_promisc(struct ieee80211com *ic)
{
struct rt2661_softc *sc = ifp->if_softc;
struct rt2661_softc *sc = ic->ic_softc;
uint32_t tmp;
tmp = RAL_READ(sc, RT2661_TXRX_CSR0);
tmp &= ~RT2661_DROP_NOT_TO_ME;
if (!(ifp->if_flags & IFF_PROMISC))
if (!(ic->ic_ifp->if_flags & IFF_PROMISC))
tmp |= RT2661_DROP_NOT_TO_ME;
RAL_WRITE(sc, RT2661_TXRX_CSR0, tmp);
DPRINTF(sc, "%s promiscuous mode\n", (ifp->if_flags & IFF_PROMISC) ?
"entering" : "leaving");
DPRINTF(sc, "%s promiscuous mode\n",
(ic->ic_ifp->if_flags & IFF_PROMISC) ? "entering" : "leaving");
}
/*
@ -2144,10 +2144,9 @@ rt2661_wme_update(struct ieee80211com *ic)
}
static void
rt2661_update_slot(struct ifnet *ifp)
rt2661_update_slot(struct ieee80211com *ic)
{
struct rt2661_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct rt2661_softc *sc = ic->ic_softc;
uint8_t slottime;
uint32_t tmp;

View File

@ -154,8 +154,8 @@ static void rt2860_set_leds(struct rt2860_softc *, uint16_t);
static void rt2860_set_gp_timer(struct rt2860_softc *, int);
static void rt2860_set_bssid(struct rt2860_softc *, const uint8_t *);
static void rt2860_set_macaddr(struct rt2860_softc *, const uint8_t *);
static void rt2860_update_promisc(struct ifnet *);
static void rt2860_updateslot(struct ifnet *);
static void rt2860_update_promisc(struct ieee80211com *);
static void rt2860_updateslot(struct ieee80211com *);
static void rt2860_updateprot(struct ifnet *);
static int rt2860_updateedca(struct ieee80211com *);
#ifdef HW_CRYPTO
@ -2053,7 +2053,7 @@ rt2860_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
rt2860_init_locked(sc);
startall = 1;
} else
rt2860_update_promisc(ifp);
rt2860_update_promisc(ic);
} else {
if (ifp->if_drv_flags & IFF_DRV_RUNNING)
rt2860_stop_locked(sc);
@ -3101,10 +3101,9 @@ rt2860_set_macaddr(struct rt2860_softc *sc, const uint8_t *addr)
}
static void
rt2860_updateslot(struct ifnet *ifp)
rt2860_updateslot(struct ieee80211com *ic)
{
struct rt2860_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct rt2860_softc *sc = ic->ic_softc;
uint32_t tmp;
tmp = RAL_READ(sc, RT2860_BKOFF_SLOT_CFG);
@ -3139,14 +3138,14 @@ rt2860_updateprot(struct ifnet *ifp)
}
static void
rt2860_update_promisc(struct ifnet *ifp)
rt2860_update_promisc(struct ieee80211com *ic)
{
struct rt2860_softc *sc = ifp->if_softc;
struct rt2860_softc *sc = ic->ic_softc;
uint32_t tmp;
tmp = RAL_READ(sc, RT2860_RX_FILTR_CFG);
tmp &= ~RT2860_DROP_NOT_MYBSS;
if (!(ifp->if_flags & IFF_PROMISC))
if (!(ic->ic_ifp->if_flags & IFF_PROMISC))
tmp |= RT2860_DROP_NOT_MYBSS;
RAL_WRITE(sc, RT2860_RX_FILTR_CFG, tmp);
}

View File

@ -142,7 +142,7 @@ static void rsu_vap_delete(struct ieee80211vap *);
static void rsu_scan_start(struct ieee80211com *);
static void rsu_scan_end(struct ieee80211com *);
static void rsu_set_channel(struct ieee80211com *);
static void rsu_update_mcast(struct ifnet *);
static void rsu_update_mcast(struct ieee80211com *);
static int rsu_alloc_rx_list(struct rsu_softc *);
static void rsu_free_rx_list(struct rsu_softc *);
static int rsu_alloc_tx_list(struct rsu_softc *);
@ -534,7 +534,7 @@ rsu_set_channel(struct ieee80211com *ic __unused)
}
static void
rsu_update_mcast(struct ifnet *ifp)
rsu_update_mcast(struct ieee80211com *ic)
{
/* XXX do nothing? */
}

View File

@ -201,8 +201,8 @@ static void rum_enable_tsf(struct rum_softc *);
static void rum_update_slot(struct ifnet *);
static void rum_set_bssid(struct rum_softc *, const uint8_t *);
static void rum_set_macaddr(struct rum_softc *, const uint8_t *);
static void rum_update_mcast(struct ifnet *);
static void rum_update_promisc(struct ifnet *);
static void rum_update_mcast(struct ieee80211com *);
static void rum_update_promisc(struct ieee80211com *);
static void rum_setpromisc(struct rum_softc *);
static const char *rum_get_rf(int);
static void rum_read_eeprom(struct rum_softc *);
@ -1843,11 +1843,11 @@ rum_setpromisc(struct rum_softc *sc)
}
static void
rum_update_promisc(struct ifnet *ifp)
rum_update_promisc(struct ieee80211com *ic)
{
struct rum_softc *sc = ifp->if_softc;
struct rum_softc *sc = ic->ic_softc;
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
RUM_LOCK(sc);
@ -1856,12 +1856,12 @@ rum_update_promisc(struct ifnet *ifp)
}
static void
rum_update_mcast(struct ifnet *ifp)
rum_update_mcast(struct ieee80211com *ic)
{
static int warning_printed;
if (warning_printed == 0) {
if_printf(ifp, "need to implement %s\n", __func__);
ic_printf(ic, "need to implement %s\n", __func__);
warning_printed = 1;
}
}

View File

@ -439,12 +439,12 @@ static void run_set_basicrates(struct run_softc *);
static void run_set_leds(struct run_softc *, uint16_t);
static void run_set_bssid(struct run_softc *, const uint8_t *);
static void run_set_macaddr(struct run_softc *, const uint8_t *);
static void run_updateslot(struct ifnet *);
static void run_updateslot(struct ieee80211com *);
static void run_updateslot_cb(void *);
static void run_update_mcast(struct ifnet *);
static void run_update_mcast(struct ieee80211com *);
static int8_t run_rssi2dbm(struct run_softc *, uint8_t, uint8_t);
static void run_update_promisc_locked(struct ifnet *);
static void run_update_promisc(struct ifnet *);
static void run_update_promisc_locked(struct run_softc *);
static void run_update_promisc(struct ieee80211com *);
static void run_rt5390_bbp_init(struct run_softc *);
static int run_bbp_init(struct run_softc *);
static int run_rt3070_rf_init(struct run_softc *);
@ -2139,7 +2139,7 @@ run_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
IEEE80211_LOCK(ic);
return (-1);
}
run_updateslot(ic->ic_ifp);
run_updateslot(ic);
run_enable_mrr(sc);
run_set_txpreamble(sc);
run_set_basicrates(sc);
@ -3787,7 +3787,7 @@ run_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
startall = 1;
run_init_locked(sc);
} else
run_update_promisc_locked(ifp);
run_update_promisc_locked(sc);
} else {
if (ifp->if_drv_flags & IFF_DRV_RUNNING &&
(ic->ic_nrunning == 0 || sc->rvp_cnt <= 1)) {
@ -4903,7 +4903,7 @@ run_update_beacon(struct ieee80211vap *vap, int item)
switch (item) {
case IEEE80211_BEACON_ERP:
run_updateslot(ic->ic_ifp);
run_updateslot(ic);
break;
case IEEE80211_BEACON_HTINFO:
run_updateprot(ic);
@ -5064,33 +5064,32 @@ run_reset_livelock(struct run_softc *sc)
}
static void
run_update_promisc_locked(struct ifnet *ifp)
run_update_promisc_locked(struct run_softc *sc)
{
struct run_softc *sc = ifp->if_softc;
uint32_t tmp;
run_read(sc, RT2860_RX_FILTR_CFG, &tmp);
tmp |= RT2860_DROP_UC_NOME;
if (ifp->if_flags & IFF_PROMISC)
if (sc->sc_ifp->if_flags & IFF_PROMISC)
tmp &= ~RT2860_DROP_UC_NOME;
run_write(sc, RT2860_RX_FILTR_CFG, tmp);
DPRINTF("%s promiscuous mode\n", (ifp->if_flags & IFF_PROMISC) ?
DPRINTF("%s promiscuous mode\n", (sc->sc_ifp->if_flags & IFF_PROMISC) ?
"entering" : "leaving");
}
static void
run_update_promisc(struct ifnet *ifp)
run_update_promisc(struct ieee80211com *ic)
{
struct run_softc *sc = ifp->if_softc;
struct run_softc *sc = ic->ic_softc;
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
RUN_LOCK(sc);
run_update_promisc_locked(ifp);
run_update_promisc_locked(sc);
RUN_UNLOCK(sc);
}
@ -5213,16 +5212,15 @@ run_set_macaddr(struct run_softc *sc, const uint8_t *addr)
}
static void
run_updateslot(struct ifnet *ifp)
run_updateslot(struct ieee80211com *ic)
{
struct run_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct run_softc *sc = ic->ic_softc;
uint32_t i;
i = RUN_CMDQ_GET(&sc->cmdq_store);
DPRINTF("cmdq_store=%d\n", i);
sc->cmdq[i].func = run_updateslot_cb;
sc->cmdq[i].arg0 = ifp;
sc->cmdq[i].arg0 = ic->ic_ifp;
ieee80211_runtask(ic, &sc->cmdq_task);
return;
@ -5244,10 +5242,11 @@ run_updateslot_cb(void *arg)
}
static void
run_update_mcast(struct ifnet *ifp)
run_update_mcast(struct ieee80211com *ic)
{
/* h/w filter supports getting everything or nothing */
ifp->if_flags |= IFF_ALLMULTI;
ic->ic_ifp->if_flags |= IFF_ALLMULTI;
}
static int8_t

View File

@ -290,8 +290,8 @@ static int uath_raw_xmit(struct ieee80211_node *, struct mbuf *,
static void uath_scan_start(struct ieee80211com *);
static void uath_scan_end(struct ieee80211com *);
static void uath_set_channel(struct ieee80211com *);
static void uath_update_mcast(struct ifnet *);
static void uath_update_promisc(struct ifnet *);
static void uath_update_mcast(struct ieee80211com *);
static void uath_update_promisc(struct ieee80211com *);
static int uath_config(struct uath_softc *, uint32_t, uint32_t);
static int uath_config_multi(struct uath_softc *, uint32_t, const void *,
int);
@ -1927,13 +1927,13 @@ uath_set_rxmulti_filter(struct uath_softc *sc)
return (0);
}
static void
uath_update_mcast(struct ifnet *ifp)
uath_update_mcast(struct ieee80211com *ic)
{
struct uath_softc *sc = ifp->if_softc;
struct uath_softc *sc = ic->ic_softc;
UATH_LOCK(sc);
if ((sc->sc_flags & UATH_FLAG_INVALID) ||
(ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
(ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
UATH_UNLOCK(sc);
return;
}
@ -1947,13 +1947,13 @@ uath_update_mcast(struct ifnet *ifp)
}
static void
uath_update_promisc(struct ifnet *ifp)
uath_update_promisc(struct ieee80211com *ic)
{
struct uath_softc *sc = ifp->if_softc;
struct uath_softc *sc = ic->ic_softc;
UATH_LOCK(sc);
if ((sc->sc_flags & UATH_FLAG_INVALID) ||
(ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
(ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
UATH_UNLOCK(sc);
return;
}

View File

@ -142,7 +142,7 @@ static struct ieee80211vap *upgt_vap_create(struct ieee80211com *,
const uint8_t [IEEE80211_ADDR_LEN],
const uint8_t [IEEE80211_ADDR_LEN]);
static void upgt_vap_delete(struct ieee80211vap *);
static void upgt_update_mcast(struct ifnet *);
static void upgt_update_mcast(struct ieee80211com *);
static uint8_t upgt_rx_rate(struct upgt_softc *, const int);
static void upgt_set_multi(void *);
static void upgt_stop(struct upgt_softc *);
@ -1115,9 +1115,9 @@ upgt_vap_delete(struct ieee80211vap *vap)
}
static void
upgt_update_mcast(struct ifnet *ifp)
upgt_update_mcast(struct ieee80211com *ic)
{
struct upgt_softc *sc = ifp->if_softc;
struct upgt_softc *sc = ic->ic_softc;
upgt_set_multi(sc);
}

View File

@ -177,7 +177,7 @@ static void ural_set_basicrates(struct ural_softc *,
const struct ieee80211_channel *);
static void ural_set_bssid(struct ural_softc *, const uint8_t *);
static void ural_set_macaddr(struct ural_softc *, uint8_t *);
static void ural_update_promisc(struct ifnet *);
static void ural_update_promisc(struct ieee80211com *);
static void ural_setpromisc(struct ural_softc *);
static const char *ural_get_rf(int);
static void ural_read_eeprom(struct ural_softc *);
@ -1928,11 +1928,11 @@ ural_setpromisc(struct ural_softc *sc)
}
static void
ural_update_promisc(struct ifnet *ifp)
ural_update_promisc(struct ieee80211com *ic)
{
struct ural_softc *sc = ifp->if_softc;
struct ural_softc *sc = ic->ic_softc;
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
RAL_LOCK(sc);

View File

@ -663,7 +663,7 @@ static int urtw_raw_xmit(struct ieee80211_node *, struct mbuf *,
static void urtw_scan_start(struct ieee80211com *);
static void urtw_scan_end(struct ieee80211com *);
static void urtw_set_channel(struct ieee80211com *);
static void urtw_update_mcast(struct ifnet *);
static void urtw_update_mcast(struct ieee80211com *);
static int urtw_tx_start(struct urtw_softc *,
struct ieee80211_node *, struct mbuf *,
struct urtw_data *, int);
@ -758,7 +758,7 @@ static struct urtw_data *
urtw_getbuf(struct urtw_softc *sc);
static int urtw_compute_txtime(uint16_t, uint16_t, uint8_t,
uint8_t);
static void urtw_updateslot(struct ifnet *);
static void urtw_updateslot(struct ieee80211com *);
static void urtw_updateslottask(void *, int);
static void urtw_sysctl_node(struct urtw_softc *);
@ -1663,7 +1663,7 @@ urtw_set_channel(struct ieee80211com *ic)
}
static void
urtw_update_mcast(struct ifnet *ifp)
urtw_update_mcast(struct ieee80211com *ic)
{
/* XXX do nothing? */
@ -4367,10 +4367,9 @@ urtw_compute_txtime(uint16_t framelen, uint16_t rate,
* slot time based on the current setting.
*/
static void
urtw_updateslot(struct ifnet *ifp)
urtw_updateslot(struct ieee80211com *ic)
{
struct urtw_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct urtw_softc *sc = ic->ic_softc;
ieee80211_runtask(ic, &sc->sc_updateslot_task);
}

View File

@ -266,7 +266,7 @@ static void urtwn_set_channel(struct ieee80211com *);
static void urtwn_set_chan(struct urtwn_softc *,
struct ieee80211_channel *,
struct ieee80211_channel *);
static void urtwn_update_mcast(struct ifnet *);
static void urtwn_update_mcast(struct ieee80211com *);
static void urtwn_iq_calib(struct urtwn_softc *);
static void urtwn_lc_calib(struct urtwn_softc *);
static void urtwn_init(void *);
@ -3147,7 +3147,7 @@ urtwn_set_channel(struct ieee80211com *ic)
}
static void
urtwn_update_mcast(struct ifnet *ifp)
urtwn_update_mcast(struct ieee80211com *ic)
{
/* XXX do nothing? */
}

View File

@ -147,7 +147,7 @@ static int zyd_set_bssid(struct zyd_softc *, const uint8_t *);
static int zyd_switch_radio(struct zyd_softc *, int);
static int zyd_set_led(struct zyd_softc *, int, int);
static void zyd_set_multi(struct zyd_softc *);
static void zyd_update_mcast(struct ifnet *);
static void zyd_update_mcast(struct ieee80211com *);
static int zyd_set_rxfilter(struct zyd_softc *);
static void zyd_set_chan(struct zyd_softc *, struct ieee80211_channel *);
static int zyd_set_beacon_interval(struct zyd_softc *, int);
@ -2046,11 +2046,11 @@ zyd_set_multi(struct zyd_softc *sc)
}
static void
zyd_update_mcast(struct ifnet *ifp)
zyd_update_mcast(struct ieee80211com *ic)
{
struct zyd_softc *sc = ifp->if_softc;
struct zyd_softc *sc = ic->ic_softc;
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
ZYD_LOCK(sc);

View File

@ -144,8 +144,8 @@ static void wi_info_intr(struct wi_softc *);
static int wi_write_txrate(struct wi_softc *, struct ieee80211vap *);
static int wi_write_wep(struct wi_softc *, struct ieee80211vap *);
static int wi_write_multi(struct wi_softc *);
static void wi_update_mcast(struct ifnet *);
static void wi_update_promisc(struct ifnet *);
static void wi_update_mcast(struct ieee80211com *);
static void wi_update_promisc(struct ieee80211com *);
static int wi_alloc_fid(struct wi_softc *, int, int *);
static void wi_read_nicid(struct wi_softc *);
static int wi_write_ssid(struct wi_softc *, int, u_int8_t *, int);
@ -1623,22 +1623,22 @@ wi_write_multi(struct wi_softc *sc)
}
static void
wi_update_mcast(struct ifnet *ifp)
wi_update_mcast(struct ieee80211com *ic)
{
wi_write_multi(ifp->if_softc);
wi_write_multi(ic->ic_softc);
}
static void
wi_update_promisc(struct ifnet *ifp)
wi_update_promisc(struct ieee80211com *ic)
{
struct wi_softc *sc = ifp->if_softc;
struct ieee80211com *ic = ifp->if_l2com;
struct wi_softc *sc = ic->ic_softc;
WI_LOCK(sc);
/* XXX handle WEP special case handling? */
wi_write_val(sc, WI_RID_PROMISC,
(ic->ic_opmode == IEEE80211_M_MONITOR ||
(ifp->if_flags & IFF_PROMISC)));
(ic->ic_ifp->if_flags & IFF_PROMISC)));
WI_UNLOCK(sc);
}

View File

@ -219,8 +219,8 @@ static int wpi_add_ibss_node(struct wpi_softc *, struct ieee80211_node *);
static void wpi_del_node(struct wpi_softc *, struct ieee80211_node *);
static int wpi_updateedca(struct ieee80211com *);
static void wpi_set_promisc(struct wpi_softc *);
static void wpi_update_promisc(struct ifnet *);
static void wpi_update_mcast(struct ifnet *);
static void wpi_update_promisc(struct ieee80211com *);
static void wpi_update_mcast(struct ieee80211com *);
static void wpi_set_led(struct wpi_softc *, uint8_t, uint8_t, uint8_t);
static int wpi_set_timing(struct wpi_softc *, struct ieee80211_node *);
static void wpi_power_calibration(struct wpi_softc *);
@ -3542,9 +3542,9 @@ wpi_set_promisc(struct wpi_softc *sc)
}
static void
wpi_update_promisc(struct ifnet *ifp)
wpi_update_promisc(struct ieee80211com *ic)
{
struct wpi_softc *sc = ifp->if_softc;
struct wpi_softc *sc = ic->ic_softc;
WPI_RXON_LOCK(sc);
wpi_set_promisc(sc);
@ -3557,7 +3557,7 @@ wpi_update_promisc(struct ifnet *ifp)
}
static void
wpi_update_mcast(struct ifnet *ifp)
wpi_update_mcast(struct ieee80211com *ic)
{
/* Ignore */
}

View File

@ -702,14 +702,14 @@ wtap_wme_update(struct ieee80211com *ic)
}
static void
wtap_update_mcast(struct ifnet *ifp)
wtap_update_mcast(struct ieee80211com *ic)
{
DWTAP_PRINTF("%s\n", __func__);
}
static void
wtap_update_promisc(struct ifnet *ifp)
wtap_update_promisc(struct ieee80211com *ic)
{
DWTAP_PRINTF("%s\n", __func__);
@ -829,9 +829,6 @@ wtap_attach(struct wtap_softc *sc, const uint8_t *macaddr)
/* override default methods */
ic->ic_newassoc = wtap_newassoc;
#if 0
ic->ic_updateslot = myath_updateslot;
#endif
ic->ic_wme.wme_update = wtap_wme_update;
ic->ic_vap_create = wtap_vap_create;
ic->ic_vap_delete = wtap_vap_delete;

View File

@ -224,15 +224,17 @@ ieee80211_chan_init(struct ieee80211com *ic)
}
static void
null_update_mcast(struct ifnet *ifp)
null_update_mcast(struct ieee80211com *ic)
{
if_printf(ifp, "need multicast update callback\n");
ic_printf(ic, "need multicast update callback\n");
}
static void
null_update_promisc(struct ifnet *ifp)
null_update_promisc(struct ieee80211com *ic)
{
if_printf(ifp, "need promiscuous mode update callback\n");
ic_printf(ic, "need promiscuous mode update callback\n");
}
static int

View File

@ -650,7 +650,7 @@ ieee80211_set_shortslottime(struct ieee80211com *ic, int onoff)
ic->ic_flags &= ~IEEE80211_F_SHSLOT;
/* notify driver */
if (ic->ic_updateslot != NULL)
ic->ic_updateslot(ic->ic_ifp);
ic->ic_updateslot(ic);
}
/*
@ -1164,18 +1164,16 @@ static void
update_mcast(void *arg, int npending)
{
struct ieee80211com *ic = arg;
struct ifnet *parent = ic->ic_ifp;
ic->ic_update_mcast(parent);
ic->ic_update_mcast(ic);
}
static void
update_promisc(void *arg, int npending)
{
struct ieee80211com *ic = arg;
struct ifnet *parent = ic->ic_ifp;
ic->ic_update_promisc(parent);
ic->ic_update_promisc(ic);
}
static void

View File

@ -258,11 +258,11 @@ struct ieee80211com {
struct mbuf *,
const struct ieee80211_bpf_params *);
/* update device state for 802.11 slot time change */
void (*ic_updateslot)(struct ifnet *);
void (*ic_updateslot)(struct ieee80211com *);
/* handle multicast state changes */
void (*ic_update_mcast)(struct ifnet *);
void (*ic_update_mcast)(struct ieee80211com *);
/* handle promiscuous mode changes */
void (*ic_update_promisc)(struct ifnet *);
void (*ic_update_promisc)(struct ieee80211com *);
/* new station association callback/notification */
void (*ic_newassoc)(struct ieee80211_node *, int);
/* TDMA update notification */