2009-10-02 01:23:49

by Larry Finger

[permalink] [raw]
Subject: [PATCH] compat-wireless: Fix the bleeding-edge version to build on 2.6.27

When building the bleeding-edge compat-wireless for kernel 2.6.27,
several compilation errors were detected.

Signed-off-by: Larry Finger <[email protected]>
---

Luis,

I checked these patches on 2.6.27 and 2.6.31, but not for the intermediate
releases.

Larry
---

Index: compat-wireless-2009-09-05/include/net/compat-2.6.28.h
===================================================================
--- compat-wireless-2009-09-05.orig/include/net/compat-2.6.28.h
+++ compat-wireless-2009-09-05/include/net/compat-2.6.28.h
@@ -149,6 +149,7 @@ static inline void skb_queue_splice_tail
struct module;
struct tracepoint;

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
struct tracepoint {
const char *name; /* Tracepoint name */
int state; /* State. */
@@ -159,6 +160,7 @@ struct tracepoint {
* align these on the structure size.
* Keep in sync with vmlinux.lds.h.
*/
+#endif

#ifndef DECLARE_TRACE

@@ -179,13 +181,17 @@ struct tracepoint {
return -ENOSYS; \
}

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
#define DEFINE_TRACE(name)
+#endif
#define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
#define EXPORT_TRACEPOINT_SYMBOL(name)

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
static inline void tracepoint_update_probe_range(struct tracepoint *begin,
struct tracepoint *end)
{ }
+#endif

#endif

Index: compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
===================================================================
--- compat-wireless-2009-09-05.orig/net/wireless/compat-2.6.28.c
+++ compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
@@ -260,6 +260,7 @@ static unsigned long round_jiffies_commo
return j;
}

+#if 0
/**
* round_jiffies_up - function to round jiffies up to a full second
* @j: the time in (absolute) jiffies that should be rounded
@@ -274,5 +275,6 @@ unsigned long round_jiffies_up(unsigned
return round_jiffies_common(j, raw_smp_processor_id(), true);
}
EXPORT_SYMBOL_GPL(round_jiffies_up);
+#endif

#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) */
Index: compat-wireless-2009-09-05/net/wireless/scan.c
===================================================================
--- compat-wireless-2009-09-05.orig/net/wireless/scan.c
+++ compat-wireless-2009-09-05/net/wireless/scan.c
@@ -499,8 +499,10 @@ cfg80211_inform_bss(struct wiphy *wiphy,

kref_init(&res->ref);

+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
/* cfg80211_bss_update() eats up res - we ensure we free it there */
kmemleak_ignore(res);
+#endif

res = cfg80211_bss_update(wiphy_to_dev(wiphy), res, 0);
if (!res)


2009-10-11 21:32:30

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] compat-wireless: Fix the bleeding-edge version to build on 2.6.27

On 10/11/2009 02:00 PM, Hauke Mehrtens wrote:
> Larry Finger wrote:
>> When building the bleeding-edge compat-wireless for kernel 2.6.27,
>> several compilation errors were detected.
>>
>> Signed-off-by: Larry Finger <[email protected]>
>> ---
>>
>> Luis,
>>
>> I checked these patches on 2.6.27 and 2.6.31, but not for the intermediate
>> releases.
>>
>> Larry
>> ---
>>
>> Index: compat-wireless-2009-09-05/include/net/compat-2.6.28.h
>> ===================================================================
>> --- compat-wireless-2009-09-05.orig/include/net/compat-2.6.28.h
>> +++ compat-wireless-2009-09-05/include/net/compat-2.6.28.h
>> @@ -149,6 +149,7 @@ static inline void skb_queue_splice_tail
>> struct module;
>> struct tracepoint;
>>
>> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
>> struct tracepoint {
>> const char *name; /* Tracepoint name */
>> int state; /* State. */
>> @@ -159,6 +160,7 @@ struct tracepoint {
>> * align these on the structure size.
>> * Keep in sync with vmlinux.lds.h.
>> */
>> +#endif
>>
>> #ifndef DECLARE_TRACE
>>
>> @@ -179,13 +181,17 @@ struct tracepoint {
>> return -ENOSYS; \
>> }
>>
>> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
>> #define DEFINE_TRACE(name)
>> +#endif
>> #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
>> #define EXPORT_TRACEPOINT_SYMBOL(name)
>>
>> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
>> static inline void tracepoint_update_probe_range(struct tracepoint *begin,
>> struct tracepoint *end)
>> { }
>> +#endif
>>
>> #endif
>>
>
> LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) can not be true in
> compat-2.6.28.h. The definitions are not needed in compat-wireless any
> more. Removing this does not break compiling with mainline kernel 2.6.25
> to 2.6.32

Well... I was using the openSUSE 2.6.27 kernel, and it broke without
this statement, as did the compilation of the user on the o-penSUSE
forums!

>> Index: compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
>> ===================================================================
>> --- compat-wireless-2009-09-05.orig/net/wireless/compat-2.6.28.c
>> +++ compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
>> @@ -260,6 +260,7 @@ static unsigned long round_jiffies_commo
>> return j;
>> }
>>
>> +#if 0
>> /**
>> * round_jiffies_up - function to round jiffies up to a full second
>> * @j: the time in (absolute) jiffies that should be rounded
>> @@ -274,5 +275,6 @@ unsigned long round_jiffies_up(unsigned
>> return round_jiffies_common(j, raw_smp_processor_id(), true);
>> }
>> EXPORT_SYMBOL_GPL(round_jiffies_up);
>> +#endif
>>
>> #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) */
>
> The mainline kernel 2.6.27 does not contain round_jiffies_up. Are you
> using Suse? Suse adds some extra extensions into the kernel, we need an
> other way to deactivate the round_jiffies_up export. With this patch
> this symbol is missing while compiling against mainline kernel <=
> 2.6.27. An other user reported a problem with the Suse kernel in:
> http://marc.info/?l=linux-wireless&m=125393384728475

Yes, the openSUSE patched kernel sources for 2.6.27.

Larry

2009-10-11 19:01:05

by Hauke Mehrtens

[permalink] [raw]
Subject: Re: [PATCH] compat-wireless: Fix the bleeding-edge version to build on 2.6.27

Larry Finger wrote:
> When building the bleeding-edge compat-wireless for kernel 2.6.27,
> several compilation errors were detected.
>
> Signed-off-by: Larry Finger <[email protected]>
> ---
>
> Luis,
>
> I checked these patches on 2.6.27 and 2.6.31, but not for the intermediate
> releases.
>
> Larry
> ---
>
> Index: compat-wireless-2009-09-05/include/net/compat-2.6.28.h
> ===================================================================
> --- compat-wireless-2009-09-05.orig/include/net/compat-2.6.28.h
> +++ compat-wireless-2009-09-05/include/net/compat-2.6.28.h
> @@ -149,6 +149,7 @@ static inline void skb_queue_splice_tail
> struct module;
> struct tracepoint;
>
> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
> struct tracepoint {
> const char *name; /* Tracepoint name */
> int state; /* State. */
> @@ -159,6 +160,7 @@ struct tracepoint {
> * align these on the structure size.
> * Keep in sync with vmlinux.lds.h.
> */
> +#endif
>
> #ifndef DECLARE_TRACE
>
> @@ -179,13 +181,17 @@ struct tracepoint {
> return -ENOSYS; \
> }
>
> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
> #define DEFINE_TRACE(name)
> +#endif
> #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
> #define EXPORT_TRACEPOINT_SYMBOL(name)
>
> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
> static inline void tracepoint_update_probe_range(struct tracepoint *begin,
> struct tracepoint *end)
> { }
> +#endif
>
> #endif
>

LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) can not be true in
compat-2.6.28.h. The definitions are not needed in compat-wireless any
more. Removing this does not break compiling with mainline kernel 2.6.25
to 2.6.32

> Index: compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
> ===================================================================
> --- compat-wireless-2009-09-05.orig/net/wireless/compat-2.6.28.c
> +++ compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
> @@ -260,6 +260,7 @@ static unsigned long round_jiffies_commo
> return j;
> }
>
> +#if 0
> /**
> * round_jiffies_up - function to round jiffies up to a full second
> * @j: the time in (absolute) jiffies that should be rounded
> @@ -274,5 +275,6 @@ unsigned long round_jiffies_up(unsigned
> return round_jiffies_common(j, raw_smp_processor_id(), true);
> }
> EXPORT_SYMBOL_GPL(round_jiffies_up);
> +#endif
>
> #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) */

The mainline kernel 2.6.27 does not contain round_jiffies_up. Are you
using Suse? Suse adds some extra extensions into the kernel, we need an
other way to deactivate the round_jiffies_up export. With this patch
this symbol is missing while compiling against mainline kernel <=
2.6.27. An other user reported a problem with the Suse kernel in:
http://marc.info/?l=linux-wireless&m=125393384728475

> Index: compat-wireless-2009-09-05/net/wireless/scan.c
> ===================================================================
> --- compat-wireless-2009-09-05.orig/net/wireless/scan.c
> +++ compat-wireless-2009-09-05/net/wireless/scan.c
> @@ -499,8 +499,10 @@ cfg80211_inform_bss(struct wiphy *wiphy,
>
> kref_init(&res->ref);
>
> +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
> /* cfg80211_bss_update() eats up res - we ensure we free it there */
> kmemleak_ignore(res);
> +#endif
>
> res = cfg80211_bss_update(wiphy_to_dev(wiphy), res, 0);
> if (!res)

Hauke


Attachments:
signature.asc (898.00 B)
OpenPGP digital signature

2009-10-02 20:48:23

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH] compat-wireless: Fix the bleeding-edge version to build on 2.6.27

On Thu, Oct 1, 2009 at 6:23 PM, Larry Finger <[email protected]> wrote:

> I checked these patches on 2.6.27 and 2.6.31, but not for the intermediate
> releases.

That works for me thanks, applied with some minor modifications.

> Index: compat-wireless-2009-09-05/include/net/compat-2.6.28.h
> ===================================================================
> --- compat-wireless-2009-09-05.orig/include/net/compat-2.6.28.h
> +++ compat-wireless-2009-09-05/include/net/compat-2.6.28.h


> Index: compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c
> ===================================================================
> --- compat-wireless-2009-09-05.orig/net/wireless/compat-2.6.28.c
> +++ compat-wireless-2009-09-05/net/wireless/compat-2.6.28.c

Just a heads up, I don't keep these file at include/net or
net/wireless on my git tree, instead I stash them into compat/. The
./scripts/admin-update.sh then is used to cp then. I did this to make
it clear that the compat stuff comes from outside.

> Index: compat-wireless-2009-09-05/net/wireless/scan.c
> ===================================================================
> --- compat-wireless-2009-09-05.orig/net/wireless/scan.c
> +++ compat-wireless-2009-09-05/net/wireless/scan.c
> @@ -499,8 +499,10 @@ cfg80211_inform_bss(struct wiphy *wiphy,
>
>        kref_init(&res->ref);
>
> +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
>        /* cfg80211_bss_update() eats up res - we ensure we free it there */
>        kmemleak_ignore(res);
> +#endif

And this hunk should no longer be present on bleeding edge.

Thanks!

Luis