Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 May 2010 11:48:49 -0400
From:      Andrew Boyer <aboyer@averesystems.com>
To:        freebsd-net@freebsd.org
Subject:   Re: ixgbe 2.1.7 can't disable LRO on 82599?
Message-ID:  <9CD0086A-0B7C-4D13-B8BD-3380634597F3@averesystems.com>
In-Reply-To: <AANLkTikxQ8icOAKs815x-J5YWRqtzX8qoBFATU24xDhH@mail.gmail.com>
References:  <D20C2626-BE6E-408A-8FF8-4BA7DF5589D6@averesystems.com> <AANLkTikkAFPHmJC27D-OWbaoP_lFvIft3H2Vo-Zye9HW@mail.gmail.com> <AANLkTikxQ8icOAKs815x-J5YWRqtzX8qoBFATU24xDhH@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
All,=20
The solution was simple.  Check to make sure the IFCAP_LRO bit is set =
before calling ixgbe_setup_hw_rsc().

-Andrew

--- a/src/sys/dev/ixgbe/ixgbe.c
+++ b/src/sys/dev/ixgbe/ixgbe.c
@@ -3728,6 +3728,9 @@ ixgbe_setup_receive_ring(struct rx_ring *rxr)
        ** Disable RSC when RXCSUM is off
        */
        if ((adapter->hw.mac.type =3D=3D ixgbe_mac_82599EB) &&
+           (ifp->if_capenable & IFCAP_LRO) &&
            (ifp->if_capenable & IFCAP_RXCSUM))
                ixgbe_setup_hw_rsc(rxr);
        else if (ifp->if_capenable & IFCAP_LRO) {


On May 12, 2010, at 4:29 PM, Jack Vogel wrote:

> Correction, the 82599 is doing HW RSC, I'm sluggish after a good =
Indian lunch :)
>=20
>=20
> On Wed, May 12, 2010 at 1:28 PM, Jack Vogel <jfvogel@gmail.com> wrote:
> Oh, this is because the 82598 is doing HW RSC which is a different =
code path from the LRO that the 598
> does, and that may be the problem, I will need to look into that. =
Thanks for the report.
>=20
> And, yes, LRO is a major improvement in 10G performance, as is TSO. =
Are you sure you have no
> alternative to disabling?
>=20
> Cheers,
>=20
> Jack
>=20
>=20
> On Wed, May 12, 2010 at 12:03 PM, Andrew Boyer =
<aboyer@averesystems.com> wrote:
> Hello all,
> I'm using the 2.1.7 version of ixgbe from -CURRENT, backported to =
FreeBSD 7.1.  With some fiddling it seems to work on both 82598 and =
82599 controllers.
>=20
> On 82598, 'ifconfig ix0 -lro' causes dev.ix.0.counters.rxr0.lro_queued =
and ...lro_flushed to stop incrementing, as expected.  There's also a =
significant throughput hit which would seem to indicate that it took =
effect.
>=20
> However, it appears that LRO is always enabled on 82599.  'ifconfig =
ix0 -lro' removes the LRO flag from the port in ifconfig but the =
...hw_lro_merge counter continues to increase.  The throughput reported =
by the iperf port is the same with or without LRO on.
>=20
> Any advice?  Am I misinterpreting something?
>=20
> Thanks,
>  Andrew
>=20
> P.S.  We need to disable LRO because we don't have Appropriate Byte =
Counting support and LRO causes TCP ACK havoc without it.

--------------------------------------------------
Andrew Boyer	aboyer@averesystems.com







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9CD0086A-0B7C-4D13-B8BD-3380634597F3>