1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-18 10:35:55 +00:00

fix (for me) the problems where if_de gets really slow after time

(usually taking 20 seconds to transmit a packet).. no longer fall back
to only transmitting one packet (instead of the entire queue) after we
have processed the entire send queue...  I have no idea why we didn't
start seeing this problem ~6 years ago when this code was introduced...
This commit is contained in:
John-Mark Gurney 2004-10-18 23:06:12 +00:00
parent 81158452be
commit 7a099cc936
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=136683
2 changed files with 0 additions and 42 deletions

View File

@ -117,7 +117,6 @@ static void tulip_ifinit(void *);
static int tulip_ifmedia_change(struct ifnet * const ifp);
static void tulip_ifmedia_status(struct ifnet * const ifp,
struct ifmediareq *req);
static void tulip_ifstart_one(struct ifnet *ifp);
static void tulip_ifstart(struct ifnet *ifp);
static void tulip_init(tulip_softc_t * const sc);
static void tulip_intr_shared(void *arg);
@ -4635,30 +4634,10 @@ tulip_ifstart(
break;
}
}
if (IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd))
sc->tulip_if.if_start = tulip_ifstart_one;
}
TULIP_PERFEND(ifstart);
}
static void
tulip_ifstart_one(
struct ifnet * const ifp)
{
TULIP_PERFSTART(ifstart_one)
tulip_softc_t * const sc = (tulip_softc_t *)ifp->if_softc;
if ((sc->tulip_if.if_flags & IFF_RUNNING)
&& !IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) {
struct mbuf *m;
IFQ_DRV_DEQUEUE(&sc->tulip_if.if_snd, m);
if(m == NULL);
else if((m = tulip_txput(sc, m)) != NULL)
IFQ_DRV_PREPEND(&sc->tulip_if.if_snd, m);
}
TULIP_PERFEND(ifstart_one);
}
/*
* Even though this routine runs at device spl, it does not break

View File

@ -117,7 +117,6 @@ static void tulip_ifinit(void *);
static int tulip_ifmedia_change(struct ifnet * const ifp);
static void tulip_ifmedia_status(struct ifnet * const ifp,
struct ifmediareq *req);
static void tulip_ifstart_one(struct ifnet *ifp);
static void tulip_ifstart(struct ifnet *ifp);
static void tulip_init(tulip_softc_t * const sc);
static void tulip_intr_shared(void *arg);
@ -4635,30 +4634,10 @@ tulip_ifstart(
break;
}
}
if (IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd))
sc->tulip_if.if_start = tulip_ifstart_one;
}
TULIP_PERFEND(ifstart);
}
static void
tulip_ifstart_one(
struct ifnet * const ifp)
{
TULIP_PERFSTART(ifstart_one)
tulip_softc_t * const sc = (tulip_softc_t *)ifp->if_softc;
if ((sc->tulip_if.if_flags & IFF_RUNNING)
&& !IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) {
struct mbuf *m;
IFQ_DRV_DEQUEUE(&sc->tulip_if.if_snd, m);
if(m == NULL);
else if((m = tulip_txput(sc, m)) != NULL)
IFQ_DRV_PREPEND(&sc->tulip_if.if_snd, m);
}
TULIP_PERFEND(ifstart_one);
}
/*
* Even though this routine runs at device spl, it does not break