summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/pci/if_sis.c4
-rw-r--r--sys/pci/if_sisreg.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/sys/pci/if_sis.c b/sys/pci/if_sis.c
index 0db8747..7e15dae 100644
--- a/sys/pci/if_sis.c
+++ b/sys/pci/if_sis.c
@@ -2044,6 +2044,7 @@ sis_init(xsc)
* Cancel pending I/O and free all RX/TX buffers.
*/
sis_stop(sc);
+ sc->sis_stopped = 0;
#ifdef notyet
if (sc->sis_type == SIS_TYPE_83815 && sc->sis_srr >= NS_SRR_16A) {
@@ -2379,6 +2380,8 @@ sis_stop(sc)
register int i;
struct ifnet *ifp;
+ if (sc->sis_stopped)
+ return;
SIS_LOCK(sc);
ifp = &sc->arpcom.ac_if;
ifp->if_timer = 0;
@@ -2431,6 +2434,7 @@ sis_stop(sc)
bzero(sc->sis_ldata.sis_tx_list,
sizeof(sc->sis_ldata.sis_tx_list));
+ sc->sis_stopped = 1;
SIS_UNLOCK(sc);
return;
diff --git a/sys/pci/if_sisreg.h b/sys/pci/if_sisreg.h
index e39bd08..aebc2af 100644
--- a/sys/pci/if_sisreg.h
+++ b/sys/pci/if_sisreg.h
@@ -470,6 +470,7 @@ struct sis_softc {
bus_dma_tag_t sis_tag;
struct sis_ring_data sis_cdata;
struct callout sis_stat_ch;
+ int sis_stopped;
#ifdef DEVICE_POLLING
int rxcycles;
#endif
OpenPOWER on IntegriCloud