We have someone working on your problem, my hope is that he will be able to email you a test patch today.
Jesse -----Original Message----- From: Hitoshi Mitake [mailto:[EMAIL PROTECTED] Sent: Friday, August 08, 2008 3:06 AM To: Brandeburg, Jesse Cc: e1000-devel@lists.sourceforge.net Subject: Re: [E1000-devel] [PATCH] Temporary solution for problem,e1000e breaking IPMI Jesse Thanks for you replying. And sorry my lazy replying. I've missed the way to add this flag as a module parameter. So I wrote a patch to add a new module parameter. Parameter name is HwCrcStrip, this is boolean value. I named to be similar to other parameters. This is patch. I think this is smarter than previous patch. If you like it, please use. Hitoshi Index: e1000e-0.4.1.7/src/e1000.h =================================================================== --- e1000e-0.4.1.7.orig/src/e1000.h 2008-08-08 18:35:23.062686528 +0900 +++ e1000e-0.4.1.7/src/e1000.h 2008-08-08 18:38:43.080686442 +0900 @@ -319,6 +319,7 @@ unsigned int flags; u32 *config_space; u32 stats_freq_us; /* stats update freq (microseconds) */ + unsigned int hw_crc_strip; /* hardware crc stripping enabled flag */ }; struct e1000_info { Index: e1000e-0.4.1.7/src/netdev.c =================================================================== --- e1000e-0.4.1.7.orig/src/netdev.c 2008-08-08 18:35:23.709686288 +0900 +++ e1000e-0.4.1.7/src/netdev.c 2008-08-08 18:35:37.696686311 +0900 @@ -2730,7 +2730,8 @@ rctl |= E1000_RCTL_LPE; /* Enable hardware CRC frame stripping */ - rctl |= E1000_RCTL_SECRC; + if(adapter->hw_crc_strip) + rctl |= E1000_RCTL_SECRC; /* Setup buffer sizes */ rctl &= ~E1000_RCTL_SZ_4096; Index: e1000e-0.4.1.7/src/param.c =================================================================== --- e1000e-0.4.1.7.orig/src/param.c 2008-08-08 18:35:23.738686202 +0900 +++ e1000e-0.4.1.7/src/param.c 2008-08-08 18:53:09.413686307 +0900 @@ -160,6 +160,15 @@ */ E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround"); +/* + * Hardware CRC Stripping + * + * Valid Range: 0, 1 + * + * Default Value: 1 (enabled) + */ +E1000_PARAM(HwCrcStrip, "Hardware CRC Stripping"); + struct e1000_option { enum { enable_option, range_option, list_option } type; const char *name; @@ -444,4 +453,20 @@ opt.def); } } + { /* Hardware CRC Stripping */ + const struct e1000_option opt = { + .type = enable_option, + .name = "Hardware CRC Stripping", + .err = "defaulting to Enabled", + .def = OPTION_ENABLED + }; + + if (num_HwCrcStrip > bd) { + unsigned int hw_crc_strip = HwCrcStrip[bd]; + e1000_validate_option(&hw_crc_strip, &opt, adapter); + adapter->hw_crc_strip = hw_crc_strip; + } else { + adapter->hw_crc_strip = opt.def; + } + } } Index: e1000e-0.4.1.7/README =================================================================== --- e1000e-0.4.1.7.orig/README 2008-08-08 18:35:22.820686218 +0900 +++ e1000e-0.4.1.7/README 2008-08-08 18:45:26.343686419 +0900 @@ -332,6 +332,17 @@ interrupt order is MSI-X, MSI, Legacy. If specifying MSI (IntMode=1) interrupts, only MSI and Legacy will be attempted. +HwCrcStrip +------- +Valid Range: 0-1 (0 is disabled, 1 is enabled) +Default Value: 1 + +If this parameter is 1, e1000e driver uses hardware CRC stripping function, +if is 0, driver doesn't use the function. + +For example, when you want to use IPMI, hardware CRC stripping function is +conflict with that. So you should make hw_crc_strip 0. + Additional Configurations ========================= Brandeburg, Jesse wrote: > would you accept a module option that did the same thing? We could also > add the kernel option so that you could change the default in the driver > at compile time. Seems like both would be a good solution. > > I have a similar report from another user, he proposed a module option > fix_broken_bmc > > There is a better patch that works in all cases when disabling hardware > CRC stripping, but it is more complex than your solution. It would be > essentially reverting git-commit > 140a74802894e9db57e5cd77ccff77e590ece5f3 [1] > > how about we call it > > hw_crc_strip=0 > > it would be a module parameter similar to all the other parameters. We > actually could enable ethtool to support this kind of change, since it > probably is a generic problem, and is definitely an ethernet control. > That would be a future effort however. > > Jesse > > [1] http://tinyurl.com/5qte88 > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Hitoshi > Mitake > Sent: Wednesday, July 23, 2008 11:11 PM > To: e1000-devel@lists.sourceforge.net > Subject: [E1000-devel] [PATCH] Temporary solution for problem,e1000e > breaking IPMI > > Hi. > > My name is Hitoshi Mitake, nice to meet you. > I'm a Japanese part-time enginner of Cluster Computing, Inc. ( > http://clustcom.com/ ) > At first, please excuse my broken English. > > I'm getting in a bind with the problem that > hardware CRC frame stripping of e1000e breaks IPMI transmission. > I found this problem was discussed in this mailing list a few times > before. > > http://sourceforge.net/mailarchive/forum.php?thread_name=20080616211636. > GA5179%40develbox.linuxbox.cz&forum_name=e1000-devel > http://sourceforge.net/mailarchive/forum.php?thread_name=200806092007.58 > 402.arekm%40maven.pl&forum_name=e1000-devel > > So I wrote a little patch, this make users to be able to choose > to use hardware CRC frame stripping function or not from menuconfig of > kernel. > It seems that hardware CRC stripping function don't have to be enabled > any time. > > I know this isn't a radical way to solve the problem. > But some people(including me) may glad if this patch is in kernel source > > tree. > > As a temporary solution, please use this. > When you use this, apply to 2.6.26-rc10. > > This is the patch: > diff -r 005282133715 drivers/net/Kconfig > --- a/drivers/net/Kconfig Thu Jul 24 12:03:12 2008 +0900 > +++ b/drivers/net/Kconfig Thu Jul 24 13:38:34 2008 +0900 > @@ -1954,6 +1954,13 @@ > To compile this driver as a module, choose M here. The module > will be called e1000e. > > +config E1000E_DISABLE_HWCRCSTRIP > + bool "Disabling e1000e hardware crc frame stripping" > + depends on E1000E > + help > + Say Y if you don't want e1000e to enable hardware crc frame > stripping. > + This may help you if you want to use IPMI. > + > config IP1000 > tristate "IP1000 Gigabit Ethernet support" > depends on PCI && EXPERIMENTAL > diff -r 005282133715 drivers/net/e1000e/netdev.c > --- a/drivers/net/e1000e/netdev.c Thu Jul 24 12:03:12 2008 +0900 > +++ b/drivers/net/e1000e/netdev.c Thu Jul 24 13:38:35 2008 +0900 > @@ -1972,8 +1972,10 @@ > else > rctl |= E1000_RCTL_LPE; > > +#ifndef CONFIG_E1000E_DISABLE_HWCRCSTRIP > /* Enable hardware CRC frame stripping */ > rctl |= E1000_RCTL_SECRC; > +#endif /* !CONFIG_E1000E_DISABLE_HWCRCSTRIP */ > > /* Setup buffer sizes */ > rctl &= ~E1000_RCTL_SZ_4096; > > > ------------------------------------------------------------------------ > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > E1000-devel mailing list > E1000-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/e1000-devel > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel