diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/pci/if_sis.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/pci/if_sis.c b/sys/dev/pci/if_sis.c index b1369c59944..256b8feed8d 100644 --- a/sys/dev/pci/if_sis.c +++ b/sys/dev/pci/if_sis.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_sis.c,v 1.66 2006/03/25 22:41:45 djm Exp $ */ +/* $OpenBSD: if_sis.c,v 1.67 2006/04/28 06:14:46 brad Exp $ */ /* * Copyright (c) 1997, 1998, 1999 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. @@ -1646,6 +1646,10 @@ sis_init(void *xsc) sis_stop(sc); sc->sis_stopped = 0; + /* Configure interrupt holdoff register. */ + if (sc->sis_type == SIS_TYPE_83815 && sc->sis_srr == NS_SRR_16A) + CSR_WRITE_4(sc, NS_IHR, NS_IHR_VALUE); + mii = &sc->sc_mii; /* Set MAC address */ @@ -1885,7 +1889,7 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data) switch(command) { case SIOCSIFADDR: ifp->if_flags |= IFF_UP; - if ((ifp->if_flags & IFF_RUNNING) == 0) + if (!(ifp->if_flags & IFF_RUNNING)) sis_init(sc); #ifdef INET if (ifa->ifa_addr->sa_family == AF_INET) @@ -1910,13 +1914,14 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data) (ifp->if_flags ^ sc->sc_if_flags) & IFF_ALLMULTI) { sis_setmulti(sc); } else { - if ((ifp->if_flags & IFF_RUNNING) == 0) + if (!(ifp->if_flags & IFF_RUNNING)) sis_init(sc); } } else { if (ifp->if_flags & IFF_RUNNING) sis_stop(sc); } + sc->sc_if_flags = ifp->if_flags; break; case SIOCSIFMTU: if (ifr->ifr_mtu < ETHERMIN || ifr->ifr_mtu > ETHERMTU) |