On Thu, Nov 15, 2007 at 09:25:02AM +0300, Igor Sysoev wrote:
> > >Ну там ещё есть запас - настроено на
> > >*) прерывание после 64 rx пакетов или 128 tx пакетов.
> > >*) или задержка прерывания на 150ms.
> > >
> > >
> > не нашёл никаких похожих настроек в man bge
>
> Их там нет, только в исходниках. В аттаче патч с настройками.
Патч.
--
Игорь Сысоев
http://sysoev.ru
--- sys/dev/bge/if_bge.c 2007-08-02 19:12:43.000000000 +0400
+++ sys/dev/bge/if_bge.c 2007-10-04 15:10:38.000000000 +0400
@@ -814,21 +814,15 @@
return (0);
}
-/*
- * The standard receive ring has 512 entries in it. At 2K per mbuf cluster,
- * that's 1MB or memory, which is a lot. For now, we fill only the first
- * 256 ring entries and hope that our CPU is fast enough to keep up with
- * the NIC.
- */
static int
bge_init_rx_ring_std(struct bge_softc *sc)
{
int i;
- for (i = 0; i < BGE_SSLOTS; i++) {
+ for (i = 0; i < BGE_STD_RX_RING_CNT; i++) {
if (bge_newbuf_std(sc, i, NULL) == ENOBUFS)
return (ENOBUFS);
- };
+ }
bus_dmamap_sync(sc->bge_cdata.bge_rx_std_ring_tag,
sc->bge_cdata.bge_rx_std_ring_map,
@@ -2391,8 +2385,8 @@
sc->bge_stat_ticks = BGE_TICKS_PER_SEC;
sc->bge_rx_coal_ticks = 150;
sc->bge_tx_coal_ticks = 150;
- sc->bge_rx_max_coal_bds = 10;
- sc->bge_tx_max_coal_bds = 10;
+ sc->bge_rx_max_coal_bds = 64;
+ sc->bge_tx_max_coal_bds = 128;
/* Set up ifnet structure */
ifp = sc->bge_ifp = if_alloc(IFT_ETHER);