diff --git a/sys/dev/ath/if_ath_ioctl.h b/sys/dev/ath/if_ath_ioctl.h --- a/sys/dev/ath/if_ath_ioctl.h +++ b/sys/dev/ath/if_ath_ioctl.h @@ -29,6 +29,6 @@ #ifndef __IF_ATH_IOCTL_H__ #define __IF_ATH_IOCTL_H__ -extern int ath_ioctl(struct ieee80211com *ic, u_long cmd, void *data); +extern int ath_ioctl(struct ieee80211vap *, u_long cmd, void *data); #endif diff --git a/sys/dev/ath/if_ath_ioctl.c b/sys/dev/ath/if_ath_ioctl.c --- a/sys/dev/ath/if_ath_ioctl.c +++ b/sys/dev/ath/if_ath_ioctl.c @@ -232,9 +232,10 @@ #endif /* ATH_DIAGAPI */ int -ath_ioctl(struct ieee80211com *ic, u_long cmd, void *data) +ath_ioctl(struct ieee80211vap *vap0, u_long cmd, void *data) { struct ifreq *ifr = data; + struct ieee80211com *ic = vap0->iv_ic; struct ath_softc *sc = ic->ic_softc; switch (cmd) { diff --git a/sys/dev/iwi/if_iwi.c b/sys/dev/iwi/if_iwi.c --- a/sys/dev/iwi/if_iwi.c +++ b/sys/dev/iwi/if_iwi.c @@ -179,7 +179,7 @@ static void iwi_start(struct iwi_softc *); static int iwi_transmit(struct ieee80211com *, struct mbuf *); static void iwi_watchdog(void *); -static int iwi_ioctl(struct ieee80211com *, u_long, void *); +static int iwi_ioctl(struct ieee80211vap *, u_long, void *); static void iwi_parent(struct ieee80211com *); static void iwi_stop_master(struct iwi_softc *); static int iwi_reset(struct iwi_softc *); @@ -2042,9 +2042,10 @@ } static int -iwi_ioctl(struct ieee80211com *ic, u_long cmd, void *data) +iwi_ioctl(struct ieee80211vap *vap0, u_long cmd, void *data) { struct ifreq *ifr = data; + struct ieee80211com *ic = vap0->iv_ic; struct iwi_softc *sc = ic->ic_softc; int error; IWI_LOCK_DECL; diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -240,7 +240,6 @@ static int iwn_transmit(struct ieee80211com *, struct mbuf *); static void iwn_scan_timeout(void *); static void iwn_watchdog(void *); -static int iwn_ioctl(struct ieee80211com *, u_long , void *); static void iwn_parent(struct ieee80211com *); static int iwn_cmd(struct iwn_softc *, int, const void *, int, int); static int iwn4965_add_node(struct iwn_softc *, struct iwn_node_info *, @@ -646,7 +645,6 @@ ieee80211_ifattach(ic); ic->ic_vap_create = iwn_vap_create; - ic->ic_ioctl = iwn_ioctl; ic->ic_parent = iwn_parent; ic->ic_vap_delete = iwn_vap_delete; ic->ic_transmit = iwn_transmit; @@ -5177,13 +5175,6 @@ return (rc); } -static int -iwn_ioctl(struct ieee80211com *ic, u_long cmd, void *data) -{ - - return (ENOTTY); -} - static void iwn_parent(struct ieee80211com *ic) { diff --git a/sys/dev/mwl/if_mwl.c b/sys/dev/mwl/if_mwl.c --- a/sys/dev/mwl/if_mwl.c +++ b/sys/dev/mwl/if_mwl.c @@ -98,7 +98,7 @@ const struct ieee80211_bpf_params *); static int mwl_media_change(if_t); static void mwl_watchdog(void *); -static int mwl_ioctl(struct ieee80211com *, u_long, void *); +static int mwl_ioctl(struct ieee80211vap *, u_long, void *); static void mwl_radar_proc(void *, int); static void mwl_chanswitch_proc(void *, int); static void mwl_bawatchdog_proc(void *, int); @@ -4707,8 +4707,9 @@ } static int -mwl_ioctl(struct ieee80211com *ic, u_long cmd, void *data) +mwl_ioctl(struct ieee80211vap *vap0, u_long cmd, void *data) { + struct ieee80211com *ic = vap0->iv_ic; struct mwl_softc *sc = ic->ic_softc; struct ifreq *ifr = data; int error = 0; diff --git a/sys/dev/rtwn/rtl8812a/r12a.h b/sys/dev/rtwn/rtl8812a/r12a.h --- a/sys/dev/rtwn/rtl8812a/r12a.h +++ b/sys/dev/rtwn/rtl8812a/r12a.h @@ -79,7 +79,7 @@ void r12a_iq_calib(struct rtwn_softc *); /* r12a_caps.c */ -int r12a_ioctl_net(struct ieee80211com *, u_long, void *); +int r12a_ioctl_net(struct ieee80211vap *, u_long, void *); /* r12a_chan.c */ void r12a_fix_spur(struct rtwn_softc *, struct ieee80211_channel *); diff --git a/sys/dev/rtwn/rtl8812a/r12a_caps.c b/sys/dev/rtwn/rtl8812a/r12a_caps.c --- a/sys/dev/rtwn/rtl8812a/r12a_caps.c +++ b/sys/dev/rtwn/rtl8812a/r12a_caps.c @@ -58,8 +58,9 @@ #include int -r12a_ioctl_net(struct ieee80211com *ic, u_long cmd, void *data) +r12a_ioctl_net(struct ieee80211vap *vap0, u_long cmd, void *data) { + struct ieee80211com *ic = vap0->iv_ic; struct rtwn_softc *sc = ic->ic_softc; struct r12a_softc *rs = sc->sc_priv; struct ifreq *ifr = (struct ifreq *)data; diff --git a/sys/dev/usb/wlan/if_rsu.c b/sys/dev/usb/wlan/if_rsu.c --- a/sys/dev/usb/wlan/if_rsu.c +++ b/sys/dev/usb/wlan/if_rsu.c @@ -254,7 +254,7 @@ static int rsu_transmit(struct ieee80211com *, struct mbuf *); static void rsu_start(struct rsu_softc *); static void _rsu_start(struct rsu_softc *); -static int rsu_ioctl_net(struct ieee80211com *, u_long, void *); +static int rsu_ioctl_net(struct ieee80211vap *, u_long, void *); static void rsu_parent(struct ieee80211com *); static void rsu_stop(struct rsu_softc *); static void rsu_ms_delay(struct rsu_softc *, int); @@ -2996,8 +2996,9 @@ } static int -rsu_ioctl_net(struct ieee80211com *ic, u_long cmd, void *data) +rsu_ioctl_net(struct ieee80211vap *vap0, u_long cmd, void *data) { + struct ieee80211com *ic = vap0->iv_ic; struct rsu_softc *sc = ic->ic_softc; struct ifreq *ifr = (struct ifreq *)data; int error; diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -3719,7 +3719,7 @@ * returns ENOTTY, then to the generic Ethernet handler. */ if (ic->ic_ioctl != NULL && - (error = ic->ic_ioctl(ic, cmd, data)) != ENOTTY) + (error = ic->ic_ioctl(vap, cmd, data)) != ENOTTY) break; error = ether_ioctl(ifp, cmd, data); break; diff --git a/sys/net80211/ieee80211_var.h b/sys/net80211/ieee80211_var.h --- a/sys/net80211/ieee80211_var.h +++ b/sys/net80211/ieee80211_var.h @@ -269,7 +269,7 @@ const uint8_t [IEEE80211_ADDR_LEN]); void (*ic_vap_delete)(struct ieee80211vap *); /* device specific ioctls */ - int (*ic_ioctl)(struct ieee80211com *, + int (*ic_ioctl)(struct ieee80211vap *, u_long, void *); /* start/stop device */ void (*ic_parent)(struct ieee80211com *);