summaryrefslogtreecommitdiff
path: root/sys/dev/pci/if_ste.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/pci/if_ste.c')
-rw-r--r--sys/dev/pci/if_ste.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/sys/dev/pci/if_ste.c b/sys/dev/pci/if_ste.c
index 32a1a00d823..0e8d1072b95 100644
--- a/sys/dev/pci/if_ste.c
+++ b/sys/dev/pci/if_ste.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ste.c,v 1.5 1999/12/08 00:38:08 aaron Exp $ */
+/* $OpenBSD: if_ste.c,v 1.6 2000/02/15 02:28:15 jason Exp $ */
/*
* Copyright (c) 1997, 1998, 1999
* Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved.
@@ -1349,8 +1349,18 @@ int ste_ioctl(ifp, command, data)
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
- ste_setmulti(sc);
- error = 0;
+ error = (command == SIOCADDMULTI) ?
+ ether_addmulti(ifr, &sc->arpcom) :
+ ether_delmulti(ifr, &sc->arpcom);
+
+ if (error == ENETRESET) {
+ /*
+ * Multicast list has changed; set the hardware
+ * filter accordingly.
+ */
+ ste_setmulti(sc);
+ error = 0;
+ }
break;
case SIOCGIFMEDIA:
case SIOCSIFMEDIA: