Thread (1 message) 1 message, 1 author, 2008-06-16

Re: [regression?] e1000e breaks IPMI

From: Brandeburg, Jesse <hidden>
Date: 2008-06-16 22:31:04
Also in: lkml

Nikola Ciprich wrote:
Hi,
it seems that e1000e breaks IPMI support on at least some
motherboards (ie SuperMicro PDSMi-LN4 with AOC-IPMI20-E+ module, and
also others).  
When e1000e module is loaded, IPMI module stops to respond. The
problem is, that it was working before, so I tried examining further
and bisect showed that following commit caused it to stop working:  
thank you for bisecting.
also, I added netdev so the network developers are aware of this thread.
 
commit 5918bd88effd0233a048983570ec5803f5f753dc
Author: Auke Kok [off-list ref]
Date:   Tue Feb 12 15:20:24 2008 -0800

    e1000e: Fix CRC stripping in hardware context bug

    CRC stripping was only correctly enabled for packet split recieves
    which is used when receiving jumbo frames. Correctly enable SECRC
    also for normal buffer packet receives.
At one point I fixed a similar bug in e1000 on 82546 hardware that was
connected to a BMC.  In that case the packets were being discarded by a
BMC that is apparently unable to understand that the hardware is
stripping the CRC at reception (and then the BMC looks for the CRC and
drops the packet because there isn't one)

Basically this works fine for Intel BMC's that know about the (AFAIK -
I'm not a BMC expert) special fields in the SMBUS header that indicate
whether the packet was CRCd correctly.  Does the BMC have an option to
turn off CRC checking?  The BMC is the real problem here, probably.
 
I can confirm that reverting the patch makes IPMI work again. So it
either is a regression, or maybe just trigger for some other bug
(seems more likely to me). Pity I haven't noticed it sooner, we've
been using older e1000[e] drivers up to now.   

Any suggestions on where the problem could be?
I'm pretty sure that if you disable hardware stripping then it will
start working.  The short term solution is change the code to disable
setting the SECRC bit, like you did when you reverted the patch.

There is a possible complex patch that completely implements software
stripping of CRCs, because there are a lot of issues with doing
pskb_trim, etc in receive.  It would be modeled on the same kind of
thing we did for e1000.  

I hate working around this broken BMC (again) when others are known to
work just fine, and CRC stripping in hardware really simplifies our
receive path.

Netdev, any advice?


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help