RELENG_7 em problems (and RELENG_8)

Pyun YongHyeon pyunyh at gmail.com
Tue Aug 17 19:47:09 UTC 2010


On Tue, Aug 17, 2010 at 12:34:31PM -0700, Jack Vogel wrote:
> I believe the requirement of a context descriptor for most frames in the igb
> driver
> is just the way the hardware works, I've looked over the Linux driver again
> and it
> looks like they require the same. I don't believe its a big deal, just the
> added
> descriptor for the frame.
> 

Setting up context does not cost much. The real cost comes from
stopping requesting DMA for next packet whenever a new context
is written.
AFAIK Linux always added a new checksum context. I don't know
whether Linux cares about the cost of refilling pipeline or
measured the performance differences. FreeBSD noticed the
difference on em(4) controllers and took appropriate action to take
full advantage of the hardware feature, I think.
I have to experiment how igb(4) works when it is told to reuse
configured context(both checksum and TSO context).

> Jack
> 
> 
> On Tue, Aug 17, 2010 at 12:14 PM, Pyun YongHyeon <pyunyh at gmail.com> wrote:
> 
> > On Tue, Aug 17, 2010 at 11:52:08AM -0700, Pyun YongHyeon wrote:
> > > On Mon, Aug 16, 2010 at 05:07:11PM -0400, Mike Tancsa wrote:
> > > > Hi Jack,
> > > >         FYI, I am still seeing this same problem on RELENG_8 (code
> > > > as of today).  Unfortunately I cant try Pyun's patch since the
> > > > underlying code has changed since then.
> > > >
> > > > em4 at pci0:3:0:0: class=0x020000 card=0x34ec8086 chip=0x10d38086
> > > > rev=0x00 hdr=0x00
> > > >     vendor     = 'Intel Corporation'
> > > >     device     = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
> > > >     class      = network
> > > >     subclass   = ethernet
> > > >     cap 01[c8] = powerspec 2  supports D0 D3  current D0
> > > >     cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
> > > >     cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
> > > >     cap 11[a0] = MSI-X supports 5 messages in map 0x1c
> > > >
> > > > pci3: <ACPI PCI bus> on pcib3
> > > > em4: <Intel(R) PRO/1000 Network Connection 7.0.5> port 0x1000-0x101f
> > > > mem 0xb1900000-0xb191ffff,0xb1920000-0xb1923fff irq 16 at device 0.0 on
> > pci3
> > > > em4: Using MSI interrupt
> > > > em4: [FILTER]
> > > > em4: Ethernet address: 00:15:17:ed:3e:c4
> > > >
> > >
> > > Here is updated patch for HEAD and stable/8.
> > > http://people.freebsd.org/~yongari/em.csum_tso.20100817.patch<http://people.freebsd.org/%7Eyongari/em.csum_tso.20100817.patch>
> > >
> > > It seems to work as expected under my limited environments. If
> > > you're using multiple Tx queues with em(4) it would be better to
> > > disable Tx checksum offloading as driver always have to create a
> > > new checksum context for each frame. This will effectively disable
> > > pipelined Tx data DMA which in turn greatly slows down Tx
> > > performance for small sized frames. The reason driver have to
> > > create a new checksum context when it uses multiple Tx queues comes
> > > from hardware limitation. The controller tracks only for the last
> > > context descriptor that was written such that driver does not know
> > > the state of checksum context configured in other Tx queue.
> > > Hope this helps.
> > >
> >
> > For igb(4) controllers, it seems we also need a way to avoid
> > creating a new checksum context for every Tx frame as we did in
> > em(4). Unlike em(4) controllers, igb(4) seems to maintain context
> > per queue such that we can safely reuse previously configured
> > context for a queue.
> > _______________________________________________
> > freebsd-stable at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> > To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"
> >


More information about the freebsd-stable mailing list