diff options
author | Henric Jungheim <henric@cvs.openbsd.org> | 2003-03-02 02:59:11 +0000 |
---|---|---|
committer | Henric Jungheim <henric@cvs.openbsd.org> | 2003-03-02 02:59:11 +0000 |
commit | 727d4fd600e72da0257f3aa9093b66f0817c36dc (patch) | |
tree | b13170c6cd28c57e84ff7032806e6be53867c46a /sys/dev/ic/gem.c | |
parent | 0d4ae03d6d21f5f02361f8d8c9ee858c7bf10a3f (diff) |
The gem driver will sometimes unmap bus_dma mappings that are still
in use by the hardware. Since the sparc64 has IOMMUs, an access by
the hardware after the unmap operation will cause a fault.
This replaces "disable" calls by "reset" calls. This increases
the time between the command to disable DMA and when the maps
are actually unloaded.
Diffstat (limited to 'sys/dev/ic/gem.c')
-rw-r--r-- | sys/dev/ic/gem.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/ic/gem.c b/sys/dev/ic/gem.c index 92414bf959c..aeaadbe0446 100644 --- a/sys/dev/ic/gem.c +++ b/sys/dev/ic/gem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gem.c,v 1.30 2003/01/23 22:55:52 jason Exp $ */ +/* $OpenBSD: gem.c,v 1.31 2003/03/02 02:59:10 henric Exp $ */ /* $NetBSD: gem.c,v 1.1 2001/09/16 00:11:43 eeh Exp $ */ /* @@ -446,9 +446,8 @@ gem_stop(struct ifnet *ifp, int disable) timeout_del(&sc->sc_tick_ch); mii_down(&sc->sc_mii); - /* XXX - Should we reset these instead? */ - gem_disable_rx(sc); - gem_disable_tx(sc); + gem_reset_rx(sc); + gem_reset_tx(sc); /* * Release any queued transmit buffers. |