From: Brandeburg, J. <jes...@in...> - 2009-06-24 18:10:45
|
On Thu, 21 May 2009, Nix wrote: > On 20 May 2009, ni...@es... spake thusly: > > > All is not well with the out-of-tree driver, though: 0.5.18.3 doesn't > This is because the enumization of irqreturn_t conflicts with kcompat.h > quite badly: you can't #ifdef-check for the presence of enums, so the > existing code ends up blowing away IRQ_HANDLED, IRQ_NONE and > irqreturn_t, leading to all the interrupt handlers returning > garbage. The simplest solution seems to be to wrap this section in a > LINUX_VERSION_CODE check. With that done, e1000e seems to work perfectly > well in the latest git. > --- e1000e-0.5.18.3-orig/src/kcompat.h 2009-05-21 23:37:41.000000000 +0100 > +++ e1000e-0.5.18.3-orig/src/kcompat.h 2009-05-21 23:46:04.000000000 +0100 > @@ -141,12 +141,6 @@ > #endif > #endif > > -#ifndef IRQ_HANDLED > -#define irqreturn_t void > -#define IRQ_HANDLED > -#define IRQ_NONE > -#endif > - > #ifndef SET_NETDEV_DEV > #define SET_NETDEV_DEV(net, pdev) > #endif > @@ -1650,4 +1644,12 @@ > #define pci_request_selected_regions_exclusive(pdev, bars, name) \ > pci_request_selected_regions(pdev, bars, name) > #endif /* < 2.6.29 */ > +/*****************************************************************************/ > +#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) ) > +#ifndef IRQ_HANDLED > +#define irqreturn_t void > +#define IRQ_HANDLED > +#define IRQ_NONE > +#endif > +#endif /* < 2.6.30 */ > #endif /* _KCOMPAT_H_ */ I just double checked, a similar change will be in the next release of e1000e, thanks for the feedback! We moved the code into a < 2.6.18 section. Jesse |