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

Reply via email to