[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