From 15ae71a28c897caffe9b88d2997e74326239a5f6 Mon Sep 17 00:00:00 2001 From: simonb Date: Sun, 14 Mar 2004 10:55:45 +0000 Subject: [PATCH] Call sbmac_start() at the end of the interrupt service function to try to send more packets. Fixes problems with high UDP Tx rates. Thanks to Matt Thomas for applying clue. --- sys/arch/mips/sibyte/dev/sbmac.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/arch/mips/sibyte/dev/sbmac.c b/sys/arch/mips/sibyte/dev/sbmac.c index 0819d5a386fe..ca11758481d8 100644 --- a/sys/arch/mips/sibyte/dev/sbmac.c +++ b/sys/arch/mips/sibyte/dev/sbmac.c @@ -1,4 +1,4 @@ -/* $NetBSD: sbmac.c,v 1.13 2004/03/08 11:28:48 simonb Exp $ */ +/* $NetBSD: sbmac.c,v 1.14 2004/03/14 10:55:45 simonb Exp $ */ /* * Copyright 2000, 2001 @@ -33,7 +33,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sbmac.c,v 1.13 2004/03/08 11:28:48 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sbmac.c,v 1.14 2004/03/14 10:55:45 simonb Exp $"); #include "bpfilter.h" #include "opt_inet.h" @@ -1688,6 +1688,7 @@ static void sbmac_intr(void *xsc, uint32_t status, uint32_t pc) { struct sbmac_softc *sc = (struct sbmac_softc *) xsc; + struct ifnet *ifp = &sc->sc_ethercom.ec_if; uint64_t isr; for (;;) { @@ -1715,6 +1716,9 @@ sbmac_intr(void *xsc, uint32_t status, uint32_t pc) if (isr & (M_MAC_INT_CHANNEL << S_MAC_RX_CH0)) sbdma_rx_process(sc, &(sc->sbm_rxdma)); } + + /* try to get more packets going */ + sbmac_start(ifp); }