On 25/10/17(Wed) 15:37, Martin Pieuchot wrote: > Diff below moves the common code to add/remove multicast filters > to ieee80211_ioctl(9). Wireless drivers that do things slightly > differently are left untouched for the moment. > > ok?
Updated diff. Index: dev/ic/acx.c =================================================================== RCS file: /cvs/src/sys/dev/ic/acx.c,v retrieving revision 1.120 diff -u -p -r1.120 acx.c --- dev/ic/acx.c 22 Jan 2017 10:17:37 -0000 1.120 +++ dev/ic/acx.c 25 Oct 2017 13:31:27 -0000 @@ -837,7 +837,6 @@ acx_ioctl(struct ifnet *ifp, u_long cmd, { struct acx_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; uint8_t chan; @@ -855,16 +854,6 @@ acx_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) error = acx_stop(sc); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: /* allow fast channel switching in monitor mode */ Index: dev/ic/bwi.c =================================================================== RCS file: /cvs/src/sys/dev/ic/bwi.c,v retrieving revision 1.126 diff -u -p -r1.126 bwi.c --- dev/ic/bwi.c 8 Sep 2017 05:36:52 -0000 1.126 +++ dev/ic/bwi.c 25 Oct 2017 13:31:16 -0000 @@ -7107,7 +7107,6 @@ bwi_ioctl(struct ifnet *ifp, u_long cmd, { struct bwi_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; uint8_t chan; @@ -7125,16 +7124,6 @@ bwi_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) bwi_stop(sc, 1); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: /* allow fast channel switching in monitor mode */ Index: dev/ic/rtwn.c =================================================================== RCS file: /cvs/src/sys/dev/ic/rtwn.c,v retrieving revision 1.35 diff -u -p -r1.35 rtwn.c --- dev/ic/rtwn.c 23 Sep 2017 13:57:41 -0000 1.35 +++ dev/ic/rtwn.c 25 Oct 2017 13:32:05 -0000 @@ -1434,7 +1434,6 @@ rtwn_ioctl(struct ifnet *ifp, u_long cmd { struct rtwn_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; s = splnet(); @@ -1462,15 +1461,6 @@ rtwn_ioctl(struct ifnet *ifp, u_long cmd if (ifp->if_flags & IFF_RUNNING) rtwn_stop(ifp); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: error = ieee80211_ioctl(ifp, cmd, data); Index: dev/ic/malo.c =================================================================== RCS file: /cvs/src/sys/dev/ic/malo.c,v retrieving revision 1.115 diff -u -p -r1.115 malo.c --- dev/ic/malo.c 8 Sep 2017 05:36:52 -0000 1.115 +++ dev/ic/malo.c 25 Oct 2017 13:31:09 -0000 @@ -933,7 +933,6 @@ malo_ioctl(struct ifnet *ifp, u_long cmd { struct malo_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; uint8_t chan; @@ -951,16 +950,6 @@ malo_ioctl(struct ifnet *ifp, u_long cmd if (ifp->if_flags & IFF_RUNNING) malo_stop(sc); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: /* allow fast channel switching in monitor mode */ Index: dev/ic/pgt.c =================================================================== RCS file: /cvs/src/sys/dev/ic/pgt.c,v retrieving revision 1.89 diff -u -p -r1.89 pgt.c --- dev/ic/pgt.c 22 Jan 2017 10:17:38 -0000 1.89 +++ dev/ic/pgt.c 25 Oct 2017 13:24:41 -0000 @@ -2362,15 +2362,6 @@ pgt_ioctl(struct ifnet *ifp, u_long cmd, } } break; - case SIOCADDMULTI: - case SIOCDELMULTI: - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; - break; case SIOCSIFMTU: if (ifr->ifr_mtu > PGT_FRAG_SIZE) { error = EINVAL; Index: dev/ic/rt2560.c =================================================================== RCS file: /cvs/src/sys/dev/ic/rt2560.c,v retrieving revision 1.83 diff -u -p -r1.83 rt2560.c --- dev/ic/rt2560.c 3 Jul 2017 09:21:09 -0000 1.83 +++ dev/ic/rt2560.c 25 Oct 2017 13:31:38 -0000 @@ -2011,7 +2011,6 @@ rt2560_ioctl(struct ifnet *ifp, u_long c { struct rt2560_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; s = splnet(); @@ -2030,17 +2029,6 @@ rt2560_ioctl(struct ifnet *ifp, u_long c if (ifp->if_flags & IFF_RUNNING) rt2560_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: Index: dev/ic/rt2661.c =================================================================== RCS file: /cvs/src/sys/dev/ic/rt2661.c,v retrieving revision 1.93 diff -u -p -r1.93 rt2661.c --- dev/ic/rt2661.c 12 Aug 2017 14:09:46 -0000 1.93 +++ dev/ic/rt2661.c 25 Oct 2017 13:31:49 -0000 @@ -2006,7 +2006,6 @@ rt2661_ioctl(struct ifnet *ifp, u_long c { struct rt2661_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; s = splnet(); @@ -2025,17 +2024,6 @@ rt2661_ioctl(struct ifnet *ifp, u_long c if (ifp->if_flags & IFF_RUNNING) rt2661_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: Index: dev/ic/rt2860.c =================================================================== RCS file: /cvs/src/sys/dev/ic/rt2860.c,v retrieving revision 1.94 diff -u -p -r1.94 rt2860.c --- dev/ic/rt2860.c 3 Jul 2017 09:21:09 -0000 1.94 +++ dev/ic/rt2860.c 25 Oct 2017 13:32:15 -0000 @@ -1778,7 +1778,6 @@ rt2860_ioctl(struct ifnet *ifp, u_long c { struct rt2860_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; s = splnet(); @@ -1795,17 +1794,6 @@ rt2860_ioctl(struct ifnet *ifp, u_long c if (ifp->if_flags & IFF_RUNNING) rt2860_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: Index: dev/pci/if_iwm.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_iwm.c,v retrieving revision 1.216 diff -u -p -r1.216 if_iwm.c --- dev/pci/if_iwm.c 22 Oct 2017 09:55:02 -0000 1.216 +++ dev/pci/if_iwm.c 25 Oct 2017 13:30:27 -0000 @@ -6650,8 +6650,6 @@ int iwm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct iwm_softc *sc = ifp->if_softc; - struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, err = 0, generation = sc->sc_generation; /* @@ -6680,16 +6678,6 @@ iwm_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) iwm_stop(ifp); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - err = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (err == ENETRESET) - err = 0; break; default: Index: dev/pci/if_iwi.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_iwi.c,v retrieving revision 1.136 diff -u -p -r1.136 if_iwi.c --- dev/pci/if_iwi.c 29 Mar 2017 16:42:25 -0000 1.136 +++ dev/pci/if_iwi.c 25 Oct 2017 13:30:51 -0000 @@ -1445,8 +1445,6 @@ int iwi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct iwi_softc *sc = ifp->if_softc; - struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; error = rw_enter(&sc->sc_rwlock, RW_WRITE | RW_INTR); @@ -1466,17 +1464,6 @@ iwi_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) iwi_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCG80211TXPOWER: Index: dev/pci/if_iwn.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_iwn.c,v retrieving revision 1.193 diff -u -p -r1.193 if_iwn.c --- dev/pci/if_iwn.c 28 Sep 2017 16:17:30 -0000 1.193 +++ dev/pci/if_iwn.c 25 Oct 2017 13:30:37 -0000 @@ -3281,7 +3281,6 @@ iwn_ioctl(struct ifnet *ifp, u_long cmd, { struct iwn_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; error = rw_enter(&sc->sc_rwlock, RW_WRITE | RW_INTR); @@ -3301,17 +3300,6 @@ iwn_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) iwn_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211POWER: Index: dev/pci/if_wpi.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_wpi.c,v retrieving revision 1.140 diff -u -p -r1.140 if_wpi.c --- dev/pci/if_wpi.c 8 Apr 2017 02:57:25 -0000 1.140 +++ dev/pci/if_wpi.c 25 Oct 2017 13:30:57 -0000 @@ -1968,7 +1968,6 @@ wpi_ioctl(struct ifnet *ifp, u_long cmd, { struct wpi_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; error = rw_enter(&sc->sc_rwlock, RW_WRITE | RW_INTR); @@ -1988,17 +1987,6 @@ wpi_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) wpi_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211POWER: Index: dev/pci/if_ipw.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_ipw.c,v retrieving revision 1.120 diff -u -p -r1.120 if_ipw.c --- dev/pci/if_ipw.c 8 Mar 2017 12:02:41 -0000 1.120 +++ dev/pci/if_ipw.c 25 Oct 2017 13:38:56 -0000 @@ -1348,8 +1348,6 @@ int ipw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct ipw_softc *sc = ifp->if_softc; - struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; error = rw_enter(&sc->sc_rwlock, RW_WRITE | RW_INTR); @@ -1369,17 +1367,6 @@ ipw_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) ipw_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCG80211TXPOWER: Index: dev/pcmcia/if_malo.c =================================================================== RCS file: /cvs/src/sys/dev/pcmcia/if_malo.c,v retrieving revision 1.92 diff -u -p -r1.92 if_malo.c --- dev/pcmcia/if_malo.c 22 Jan 2017 10:17:39 -0000 1.92 +++ dev/pcmcia/if_malo.c 25 Oct 2017 13:30:09 -0000 @@ -362,10 +362,8 @@ int cmalo_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct malo_softc *sc = ifp->if_softc; - struct ieee80211com *ic = &sc->sc_ic; struct ieee80211_nodereq_all *na; struct ieee80211_nodereq *nr; - struct ifreq *ifr; int i, j, s, error = 0; s = splnet(); @@ -393,15 +391,6 @@ cmalo_ioctl(struct ifnet *ifp, u_long cm if (ifp->if_flags & IFF_RUNNING) cmalo_stop(sc); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; case SIOCS80211SCAN: cmalo_cmd_set_scan(sc); Index: dev/usb/if_athn_usb.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_athn_usb.c,v retrieving revision 1.47 diff -u -p -r1.47 if_athn_usb.c --- dev/usb/if_athn_usb.c 8 Apr 2017 02:57:25 -0000 1.47 +++ dev/usb/if_athn_usb.c 25 Oct 2017 13:29:23 -0000 @@ -2121,7 +2121,6 @@ athn_usb_ioctl(struct ifnet *ifp, u_long struct athn_softc *sc = ifp->if_softc; struct athn_usb_softc *usc = (struct athn_usb_softc *)sc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; if (usbd_is_dying(usc->sc_udev)) @@ -2143,15 +2142,6 @@ athn_usb_ioctl(struct ifnet *ifp, u_long if (ifp->if_flags & IFF_RUNNING) athn_usb_stop(ifp); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: error = ieee80211_ioctl(ifp, cmd, data); Index: dev/usb/if_ral.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_ral.c,v retrieving revision 1.143 diff -u -p -r1.143 if_ral.c --- dev/usb/if_ral.c 3 Jul 2017 09:21:09 -0000 1.143 +++ dev/usb/if_ral.c 25 Oct 2017 13:30:16 -0000 @@ -1299,7 +1299,6 @@ ural_ioctl(struct ifnet *ifp, u_long cmd { struct ural_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; if (usbd_is_dying(sc->sc_udev)) @@ -1323,17 +1322,6 @@ ural_ioctl(struct ifnet *ifp, u_long cmd if (ifp->if_flags & IFF_RUNNING) ural_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: Index: dev/usb/if_otus.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_otus.c,v retrieving revision 1.59 diff -u -p -r1.59 if_otus.c --- dev/usb/if_otus.c 20 Jul 2017 22:29:26 -0000 1.59 +++ dev/usb/if_otus.c 25 Oct 2017 13:28:02 -0000 @@ -1469,7 +1469,6 @@ otus_ioctl(struct ifnet *ifp, u_long cmd { struct otus_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; if (usbd_is_dying(sc->sc_udev)) @@ -1496,15 +1495,6 @@ otus_ioctl(struct ifnet *ifp, u_long cmd otus_stop(ifp); sc->sc_if_flags = ifp->if_flags; - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: error = ieee80211_ioctl(ifp, cmd, data); Index: dev/usb/if_rsu.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_rsu.c,v retrieving revision 1.40 diff -u -p -r1.40 if_rsu.c --- dev/usb/if_rsu.c 21 Jul 2017 13:15:05 -0000 1.40 +++ dev/usb/if_rsu.c 25 Oct 2017 13:28:21 -0000 @@ -1674,8 +1674,6 @@ int rsu_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct rsu_softc *sc = ifp->if_softc; - struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; if (usbd_is_dying(sc->sc_udev)) @@ -1697,15 +1695,6 @@ rsu_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) rsu_stop(ifp); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; default: error = ieee80211_ioctl(ifp, cmd, data); Index: dev/usb/if_rum.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_rum.c,v retrieving revision 1.122 diff -u -p -r1.122 if_rum.c --- dev/usb/if_rum.c 3 Jul 2017 09:21:09 -0000 1.122 +++ dev/usb/if_rum.c 25 Oct 2017 13:29:48 -0000 @@ -1306,7 +1306,6 @@ rum_ioctl(struct ifnet *ifp, u_long cmd, { struct rum_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; if (usbd_is_dying(sc->sc_udev)) @@ -1330,17 +1329,6 @@ rum_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) rum_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: Index: dev/usb/if_uath.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_uath.c,v retrieving revision 1.81 diff -u -p -r1.81 if_uath.c --- dev/usb/if_uath.c 28 Jul 2017 10:50:56 -0000 1.81 +++ dev/usb/if_uath.c 25 Oct 2017 13:28:46 -0000 @@ -1532,9 +1532,6 @@ uath_watchdog(struct ifnet *ifp) int uath_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { - struct uath_softc *sc = ifp->if_softc; - struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; s = splnet(); @@ -1551,16 +1548,6 @@ uath_ioctl(struct ifnet *ifp, u_long cmd if (ifp->if_flags & IFF_RUNNING) uath_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; default: Index: dev/usb/if_run.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_run.c,v retrieving revision 1.123 diff -u -p -r1.123 if_run.c --- dev/usb/if_run.c 14 Aug 2017 05:52:21 -0000 1.123 +++ dev/usb/if_run.c 25 Oct 2017 13:29:36 -0000 @@ -2593,7 +2593,6 @@ run_ioctl(struct ifnet *ifp, u_long cmd, { struct run_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; if (usbd_is_dying(sc->sc_udev)) @@ -2615,17 +2614,6 @@ run_ioctl(struct ifnet *ifp, u_long cmd, if (ifp->if_flags & IFF_RUNNING) run_stop(ifp, 1); } - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: Index: dev/usb/if_upgt.c =================================================================== RCS file: /cvs/src/sys/dev/usb/if_upgt.c,v retrieving revision 1.80 diff -u -p -r1.80 if_upgt.c --- dev/usb/if_upgt.c 26 Mar 2017 15:31:15 -0000 1.80 +++ dev/usb/if_upgt.c 25 Oct 2017 13:29:09 -0000 @@ -1126,7 +1126,6 @@ upgt_ioctl(struct ifnet *ifp, u_long cmd { struct upgt_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - struct ifreq *ifr; int s, error = 0; uint8_t chan; @@ -1144,15 +1143,6 @@ upgt_ioctl(struct ifnet *ifp, u_long cmd if (ifp->if_flags & IFF_RUNNING) upgt_stop(sc); } - break; - case SIOCADDMULTI: - case SIOCDELMULTI: - ifr = (struct ifreq *)data; - error = (cmd == SIOCADDMULTI) ? - ether_addmulti(ifr, &ic->ic_ac) : - ether_delmulti(ifr, &ic->ic_ac); - if (error == ENETRESET) - error = 0; break; case SIOCS80211CHANNEL: /* allow fast channel switching in monitor mode */ Index: net80211/ieee80211_ioctl.c =================================================================== RCS file: /cvs/src/sys/net80211/ieee80211_ioctl.c,v retrieving revision 1.53 diff -u -p -r1.53 ieee80211_ioctl.c --- net80211/ieee80211_ioctl.c 19 Jul 2017 22:04:46 -0000 1.53 +++ net80211/ieee80211_ioctl.c 25 Oct 2017 13:22:54 -0000 @@ -841,6 +841,14 @@ ieee80211_ioctl(struct ifnet *ifp, u_lon ic->ic_flags = (ic->ic_flags & ~IEEE80211_F_USERMASK) | flags; error = ENETRESET; break; + case SIOCADDMULTI: + case SIOCDELMULTI: + error = (cmd == SIOCADDMULTI) ? + ether_addmulti(ifr, &ic->ic_ac) : + ether_delmulti(ifr, &ic->ic_ac); + if (error == ENETRESET) + error = 0; + break; default: error = ether_ioctl(ifp, &ic->ic_ac, cmd, data); }