diff options
author | Aaron Campbell <aaron@cvs.openbsd.org> | 2000-10-27 18:13:45 +0000 |
---|---|---|
committer | Aaron Campbell <aaron@cvs.openbsd.org> | 2000-10-27 18:13:45 +0000 |
commit | 245bd13cb60f5ca535deb2d04fa03b7b90a1bc3e (patch) | |
tree | 5b088580a290a4d5bac75dbd749288d15986c5ec /sys/dev/pci | |
parent | f7642ca8faaa647ea847edc74e3ebb58237938f0 (diff) |
From FreeBSD:
Set the DC_TX_INTR_ALWAYS and DC_TX_STORENFWD flags for the Davicom chips.
Do not set DC_TX_ONE. The DC_TX_USE_INTR flag causes dc_encap() to set the
'interrupt on TX completion' bit only once every 64 packets. This is an
attempt to reduce the number of interrupts generated by the chip. You're
supposed to get a 'no more TX buffers left' interrupt once you hit the last
packet whether you ask for one or not, however it seems the Davicom chip
doesn't generate this interrupt, or at least it doesn't generate it under
the same circumstances. The result is that if you transmit n packets, where
n is less than 64, and then wait 5 seconds, you'll get a watchdog timeout
whether you want one or not. The DC_TX_INTR_ALWAYS causes dc_encap() to
request an interrupt for every frame.
Diffstat (limited to 'sys/dev/pci')
-rw-r--r-- | sys/dev/pci/if_dc_pci.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/pci/if_dc_pci.c b/sys/dev/pci/if_dc_pci.c index 532cdd162e6..166d828d130 100644 --- a/sys/dev/pci/if_dc_pci.c +++ b/sys/dev/pci/if_dc_pci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_dc_pci.c,v 1.7 2000/10/16 17:08:08 aaron Exp $ */ +/* $OpenBSD: if_dc_pci.c,v 1.8 2000/10/27 18:13:44 aaron Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -268,8 +268,8 @@ void dc_pci_attach(parent, self, aux) PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_DAVICOM_DM9102) { found = 1; sc->dc_type = DC_TYPE_DM9102; - sc->dc_flags |= DC_TX_COALESCE|DC_TX_USE_TX_INTR; - sc->dc_flags |= DC_REDUCED_MII_POLL; + sc->dc_flags |= DC_TX_COALESCE|DC_TX_INTR_ALWAYS; + sc->dc_flags |= DC_REDUCED_MII_POLL|DC_TX_STORENFWD; sc->dc_pmode = DC_PMODE_MII; } break; |