Reclaim transmitted frames in re_tick(). This is for PCIe

controllers that lose Tx completion interrupts under certain
conditions. With this change it's safe to use MSI on PCIe
controllers so enable MSI on these controllers.
This commit is contained in:
Pyun YongHyeon 2009-02-09 04:59:13 +00:00
parent 51cec12145
commit c2d2e19cb7

View File

@ -156,7 +156,7 @@ MODULE_DEPEND(re, miibus, 1, 1, 1);
#include "miibus_if.h"
/* Tunables. */
static int msi_disable = 1;
static int msi_disable = 0;
TUNABLE_INT("hw.re.msi_disable", &msi_disable);
#define RE_CSUM_FEATURES (CSUM_IP | CSUM_TCP | CSUM_UDP)
@ -2064,6 +2064,13 @@ re_tick(void *xsc)
mii_tick(mii);
if ((sc->rl_flags & RL_FLAG_LINK) == 0)
re_miibus_statchg(sc->rl_dev);
/*
* Reclaim transmitted frames here. Technically it is not
* necessary to do here but it ensures periodic reclamation
* regardless of Tx completion interrupt which seems to be
* lost on PCIe based controllers under certain situations.
*/
re_txeof(sc);
re_watchdog(sc);
callout_reset(&sc->rl_stat_callout, hz, re_tick, sc);
}