Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Nov 2002 12:41:53 -0500
From:      Don Bowman <don@sandvine.com>
To:        'Terry Lambert' <tlambert2@mindspring.com>, hiten@unixdaemons.com
Cc:        tony@ubik.demon.co.uk, freebsd-hackers@freebsd.org
Subject:   RE: if_ti DEVICE_POLLING  patch (Was: Re: [hackers] Re: Netgraphc ouldbe   a router also)
Message-ID:  <FE045D4D9F7AED4CBFF1B3B813C8533701022FB8@mail.sandvine.com>

next in thread | raw e-mail | index | archive | help
> From: Terry Lambert [mailto:tlambert2@mindspring.com]
> Hiten Pandya wrote:
> > Hehe.  I was not being sarcastic.  I just acknoledged your 
> statement.  The
> > reason I asked about committing the patch in the first 
> place, is because I
> > thought that the patch had been around on the -net@ list, 
> and had been reviewed.
> > 
> > My apologies.
> 
> It's been around on the list for a while, but if it's working for
> the people involved, they are not saying anything.
> 
> Last I heard, the person who had the problem had tried the Intel
> Gigabit card, but not the Tigon III, but was looking for a Gigabit
> card recommendation.
> 
> I suppose I could make the same patch for the Intel card.
> 
> The problem is that DEVICE_POLLING is an all-or-nothing thing,
> you can't control it on a card-by-card basis, even with a
> sysctl, because it fills out an entry point that's statically,
> rather than procedurally initialized.

Is there any point to using device polling with the tigon 3
(broadcom 570x etc)? It has a pretty good interrupt reducer in it
by itself.
Just tune the 2 rx and the 2 tx parameters and you get a constant
interrupt rate with good latency for any packet rate.

I changed (if_bge.c):
        /* RX Interrupt no more than every ~500 us */
        sc->bge_rx_coal_ticks = 512;
        /* TX Interrupt no more than every ~500 us */
        sc->bge_tx_coal_ticks = 512;
        /* RX Interrupt no more than every ~120 packets */
        sc->bge_rx_max_coal_bds = 128;
        /* TX Interrupt no more than every ~120 packets */
        sc->bge_tx_max_coal_bds = 128;

and this gives no more than 2000 interrupts/s, and no more than 500us
of latency.

The if_em has similar functionality AFAIK.

--don

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE045D4D9F7AED4CBFF1B3B813C8533701022FB8>