Hi.

 While modifying Ethernet multicast's code, I noticed that
athn.c doesn't modify the multicast filter. Does IPv6 on
athn(4) work?

---------------
Index: sys/dev/ic/athn.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/athn.c,v
retrieving revision 1.18
diff -u -p -r1.18 athn.c
--- sys/dev/ic/athn.c   26 Jun 2018 06:48:00 -0000      1.18
+++ sys/dev/ic/athn.c   24 May 2019 06:28:27 -0000
@@ -136,8 +136,8 @@ Static void athn_ani_lower_immunity(stru
 Static void    athn_ani_monitor(struct athn_softc *);
 Static void    athn_ani_ofdm_err_trigger(struct athn_softc *);
 Static void    athn_ani_restart(struct athn_softc *);
-Static void    athn_set_multi(struct athn_softc *);
 #endif /* notyet */
+Static void    athn_set_multi(struct athn_softc *);
 
 PUBLIC int
 athn_attach(struct athn_softc *sc)
@@ -2751,12 +2751,11 @@ athn_watchdog(struct ifnet *ifp)
        ieee80211_watchdog(&sc->sc_ic);
 }
 
-#ifdef notyet
 Static void
 athn_set_multi(struct athn_softc *sc)
 {
-       struct arpcom *ac = &sc->sc_ic.ic_ac;
-       struct ifnet *ifp = &ac->ac_if;
+       struct ethercom *ec = &sc->sc_ec;
+       struct ifnet *ifp = &ec->ec_if;
        struct ether_multi *enm;
        struct ether_multistep step;
        const uint8_t *addr;
@@ -2768,7 +2767,7 @@ athn_set_multi(struct athn_softc *sc)
                goto done;
        }
        lo = hi = 0;
-       ETHER_FIRST_MULTI(step, ac, enm);
+       ETHER_FIRST_MULTI(step, ec, enm);
        while (enm != NULL) {
                if (memcmp(enm->enm_addrlo, enm->enm_addrhi, 6) != 0) {
                        ifp->if_flags |= IFF_ALLMULTI;
@@ -2793,7 +2792,6 @@ athn_set_multi(struct athn_softc *sc)
        AR_WRITE(sc, AR_MCAST_FIL1, hi);
        AR_WRITE_BARRIER(sc);
 }
-#endif /* notyet */
 
 Static int
 athn_ioctl(struct ifnet *ifp, u_long cmd, void *data)
@@ -2835,9 +2833,7 @@ athn_ioctl(struct ifnet *ifp, u_long cmd
        case SIOCDELMULTI:
                if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) {
                        /* setup multicast filter, etc */
-#ifdef notyet
                        athn_set_multi(sc);
-#endif
                        error = 0;
                }
                break;

---------------
(The same diff is at: http://www.netbsd.org/~msaitoh/athn-20190524-0.dif)

Could someone test the above diff on athn(4)?
Is it OK to commit?

-- 
-----------------------------------------------
                SAITOH Masanobu ([email protected]
                                 [email protected])

Reply via email to