aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/vx/if_vx.c
diff options
context:
space:
mode:
authorGarrett Wollman <wollman@FreeBSD.org>1997-01-13 21:26:53 +0000
committerGarrett Wollman <wollman@FreeBSD.org>1997-01-13 21:26:53 +0000
commit477180fbc8ab2f3a673e34ee57746a79409bc22b (patch)
tree910b1426d4c193f9ebe781e273cdb61d4b1ee1fd /sys/dev/vx/if_vx.c
parentbc6c2e1ec77d819795188292c425527be7e4a11b (diff)
Use the new if_multiaddrs list for multicast addresses rather than the
previous hackery involving struct in_ifaddr and arpcom. Get rid of the abominable multi_kludge. Update all network interfaces to use the new machanism. Distressingly few Ethernet drivers program the multicast filter properly (assuming the hardware has one, which it usually does).
Notes
Notes: svn path=/head/; revision=21666
Diffstat (limited to 'sys/dev/vx/if_vx.c')
-rw-r--r--sys/dev/vx/if_vx.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/sys/dev/vx/if_vx.c b/sys/dev/vx/if_vx.c
index 6125ff8ddce9..a4a29cd3535a 100644
--- a/sys/dev/vx/if_vx.c
+++ b/sys/dev/vx/if_vx.c
@@ -311,11 +311,11 @@ vxsetfilter(sc)
struct vx_softc *sc;
{
register struct ifnet *ifp = &sc->arpcom.ac_if;
-
+
GO_WINDOW(1); /* Window 1 is operating window */
outw(BASE + VX_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | FIL_BRDCST |
- ((sc->arpcom.ac_multicnt > 0) ? FIL_MULTICAST : 0 ) |
- ((ifp->if_flags & IFF_PROMISC) ? FIL_PROMISC : 0 ));
+ FIL_MULTICAST |
+ ((ifp->if_flags & IFF_PROMISC) ? FIL_PROMISC : 0 ));
}
static void
@@ -967,18 +967,12 @@ vxioctl(ifp, cmd, data)
case SIOCADDMULTI:
case SIOCDELMULTI:
- error = ((u_int) cmd == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->arpcom) :
- ether_delmulti(ifr, &sc->arpcom);
-
- if (error == ENETRESET) {
- /*
- * Multicast list has changed; set the hardware filter
- * accordingly.
- */
- vxreset(sc);
- error = 0;
- }
+ /*
+ * Multicast list has changed; set the hardware filter
+ * accordingly.
+ */
+ vxreset(sc);
+ error = 0;
break;