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:
parent
81158452be
commit
7a099cc936
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=136683
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user