summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAaron Campbell <aaron@cvs.openbsd.org>2000-10-27 18:13:45 +0000
committerAaron Campbell <aaron@cvs.openbsd.org>2000-10-27 18:13:45 +0000
commit245bd13cb60f5ca535deb2d04fa03b7b90a1bc3e (patch)
tree5b088580a290a4d5bac75dbd749288d15986c5ec /sys
parentf7642ca8faaa647ea847edc74e3ebb58237938f0 (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')
-rw-r--r--sys/dev/pci/if_dc_pci.c6
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;