[ofa-general] Re: problems with ofed-1.2.c chelsio low level driver

Michael S. Tsirkin mst at dev.mellanox.co.il
Thu Aug 9 07:39:18 PDT 2007


> Quoting Steve Wise <swise at opengridcomputing.com>:
> Subject: Re: problems with ofed-1.2.c chelsio low level driver
> 
> 
> 
> Michael S. Tsirkin wrote:
> >>Quoting Steve Wise <swise at opengridcomputing.com>:
> >>Subject: problems with ofed-1.2.c chelsio low level driver
> >>
> >>Michael,
> >>
> >>I've discovered that I was really testing the ofed-1.2 cxgb3.ko module 
> >>in my testing 1.2.c regression test.  Upon getting a complete 1.2.c 
> >>installed, I'm seeing crashes with the chelsio driver.  I think there 
> >>are some patches that went into the ofed-1.2 branch, that did not get 
> >>merged into ofed-1.2.c.   The ofed-1.2 branch works, but 1.2.c is broken.
> >>
> >>I'm investigating now, but we'll need to fix this before shipping 
> >>1.2.c/1.2.5.
> >
> >I went through list of patches again and I don't see anything missing.
> >Please send fixes, if any, to Vlad by this weekend, so Vlad can integrate
> >them on Sunday.
> >
> 
> 
> Will do.
> 
> I found the problem:  In 2.6.22 and beyond, eth_type_trans() initializes 
> the skb->dev ptr.  The Chelsio driver in 2.6.22 was changed to utilize 
> this.  Thus if you run it on an older kernel, the skb->dev ptr never 
> gets set and the driver crashes immediately when processing incoming 
> traffic.  I've created a backport fix for this that I'll be sending out 
> soon.
> 
> Steve.
> 
> The backport look like this (need one of these for each kernel):
> 
> diff --git a/kernel_addons/backport/2.6.11/include/linux/etherdevice.h 
> b/kernel_addons/backport/2.6.11/include/linux/etherdevice.h
> new file mode 100644
> index 0000000..cd709f0
> --- /dev/null
> +++ b/kernel_addons/backport/2.6.11/include/linux/etherdevice.h
> @@ -0,0 +1,15 @@
> +#ifndef BACKPORT_LINUX_ETHERDEVICE
> +#define BACKPORT_LINUX_ETHERDEVICE
> +
> +#include_next <linux/etherdevice.h>
> +
> +static inline unsigned short backport_eth_type_trans(struct sk_buff *skb,
> +                                                    struct net_device *dev)
> +{
> +       skb->dev = dev;
> +       return eth_type_trans(skb, dev);
> +}
> +
> +#define eth_type_trans backport_eth_type_trans
> +
> +#endif

Totally cool.

-- 
MST



More information about the general mailing list