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);
        }

Reply via email to