On 08/06/2012 10:33 PM, Hauke Mehrtens wrote: > On 08/06/2012 09:53 PM, Luis R. Rodriguez wrote: >> On Sun, Aug 5, 2012 at 3:29 AM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: >>> From: Johannes Berg <johannes.berg@xxxxxxxxx> >>> >>> Some distro kernels (in particular the Debian 3.2.0-3 >>> kernel I'm running) backport codel already, so trying >>> to backport it again causes issues. Protect the compat >>> backport with #ifdef TCA_CODEL_MAX. >>> >>> Also link the flow_dissector code into the codel module >>> which then won't be loaded on kernels that already have >>> codel backported. >>> >>> Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> >> >> Applied and pushed, thanks! >> >> Luis >> > This breaks my build if net/codel.h is not in the kernel headers: > > In file included from > /home/hauke/compat-wireless/compat-wireless/compat/sch_fq_codel_core.c:27:0: > /home/hauke/compat-wireless/compat-wireless/include/net/codel.h:5:28: > fatal error: net/codel.h: No such file or directory > compilation terminated. > > TCA_CODEL_MAX is defined in include/linux/compat-3.5.h and this file is > included ever time, so the check around #include_next <net/codel.h> is > never false. > > You could define something like COMPAT_CODEL_BACKPORT in > include/linux/compat-3.5.h and extend the check in include/net/codel.h > that this has to be unset. > > Hauke With the attached patch in addition to Johannes' patch it works for me. Anyone feel free to integrate it or use it in any other way. Hauke
diff --git a/include/linux/compat-3.5.h b/include/linux/compat-3.5.h index 7fadbf2..3aec3bd 100644 --- a/include/linux/compat-3.5.h +++ b/include/linux/compat-3.5.h @@ -150,6 +150,8 @@ static inline int compat_vga_switcheroo_register_client(struct pci_dev *dev, #ifndef TCA_CODEL_MAX /* CODEL */ +#define COMPAT_CODEL_BACKPORT + enum { TCA_CODEL_UNSPEC, TCA_CODEL_TARGET, diff --git a/include/net/codel.h b/include/net/codel.h index ab901c5..eee0359 100644 --- a/include/net/codel.h +++ b/include/net/codel.h @@ -1,7 +1,7 @@ #include <linux/version.h> #include <linux/pkt_sched.h> -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) || defined(TCA_CODEL_MAX) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) || (defined(TCA_CODEL_MAX) && !defined(COMPAT_CODEL_BACKPORT)) #include_next <net/codel.h> #else