diff options
Diffstat (limited to 'sys/dev/pci/if_ste.c')
-rw-r--r-- | sys/dev/pci/if_ste.c | 16 |
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: |