summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2001-09-19 21:39:26 +0000
committerwpaul <wpaul@FreeBSD.org>2001-09-19 21:39:26 +0000
commite11a32487cd685fb304e41fce511f1bc61642471 (patch)
tree8d1c252aafbce6092ebce7275f2131237e647720
parentdcf7dde14532f48c9adcdcea0805c4c998e25902 (diff)
downloadFreeBSD-src-e11a32487cd685fb304e41fce511f1bc61642471.zip
FreeBSD-src-e11a32487cd685fb304e41fce511f1bc61642471.tar.gz
Handle the RX FIFO overflow condition with the rxeof handler instead
of the rxeoc handler for now. The rxeoc handler will reset the link, and the NatSemi chip's RX FIFO will overflow on a 32-bit bus once you start hitting it with 500Mbps or more of traffic. Also increase the size of the RX ring to 128 descriptors (was 64).
-rw-r--r--sys/dev/nge/if_nge.c5
-rw-r--r--sys/dev/nge/if_ngereg.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/nge/if_nge.c b/sys/dev/nge/if_nge.c
index be42d04..99ff20c 100644
--- a/sys/dev/nge/if_nge.c
+++ b/sys/dev/nge/if_nge.c
@@ -1495,12 +1495,13 @@ static void nge_intr(arg)
if ((status & NGE_ISR_RX_DESC_OK) ||
(status & NGE_ISR_RX_ERR) ||
+ (status & NGE_ISR_RX_OFLOW) ||
(status & NGE_ISR_RX_OK))
nge_rxeof(sc);
-
+#ifdef notdef
if ((status & NGE_ISR_RX_OFLOW))
nge_rxeoc(sc);
-
+#endif
if (status & NGE_ISR_SYSERR) {
nge_reset(sc);
ifp->if_flags &= ~IFF_RUNNING;
diff --git a/sys/dev/nge/if_ngereg.h b/sys/dev/nge/if_ngereg.h
index 575ae2fe..f10590e 100644
--- a/sys/dev/nge/if_ngereg.h
+++ b/sys/dev/nge/if_ngereg.h
@@ -562,7 +562,7 @@ struct nge_desc_32 {
#define NGE_RXEXTSTS_UDPPKT 0x00200000
#define NGE_RXEXTSTS_UDPCSUMERR 0x00400000
-#define NGE_RX_LIST_CNT 64
+#define NGE_RX_LIST_CNT 128
#define NGE_TX_LIST_CNT 128
struct nge_list_data {
OpenPOWER on IntegriCloud