2010-02-13 02:11:01

by Luis R. Rodriguez

[permalink] [raw]
Subject: compat-wireless updated for 2.6.33-rc8, 2.6.32.8 and next-20100212

The bleeding edge compat-wireless updates were stuck due to a
bluetooth hunk failing on net/bluetooth/hidp/core.c, that should be
fixed now, at least it compiles for me down to 2.6.27. I also hadn't
updated a 2.6.33-rcx releases in a while, as well as 2.6.32.y release.
This should all now be in synch with upstream. I never got reports
about MQ support on older kernels so I just threw in the code, issues
can be dealt with once actually found.

ath3k went in on 2.6.33-rc8 so we enable it now. Atheros Ethernet
AR8152/AR8152 support was submitted upstream for atl1c but it hasn't
been merged yet so likely it won't get into 2.6.33, but once its
merged for 2.6.34 I will just throw in the patch as an extra onto the
compat-wireless-2.6.33 releases.

Worth noting also is if you have any specific patch which did *not* go
into a stable release due to size but yet considered relatively
important and if it is merged upstream please send a note to
linux-wireless about it and we can consider enabling it if it is not
insane. This applies to new drivers as well. I will likely an an
extra/ dir. The only requirement is you *must* have the patch merged
upstream on one of the trees, either wireless-testing,
bluetooth-testing, or net-next-2.6. Reasoning for enabling patches
like these is as I have seen, even as hard we try we somehow can't get
rid of a small delta between what we feel needs to be supported and
what is on stable. My main concern over accepting patches like these
is creating a fork but forks can be avoided if we have a requirement
of first requiring the patch on a development tree.

Please report any issues found:

http://wireless.kernel.org/en/users/Documentation/Reporting_bugs

Stable releases:
=========

2.6.32.8:

sha1sum 694b453db50cd22798b754d022aca1e5ba45c8f1
http://www.orbit-lab.org/kernel/compat-wireless-2.6-stable/v2.6.32/compat-wireless-2.6.32.8.tar.bz2
http://www.orbit-lab.org/kernel/compat-wireless-2.6-stable/v2.6.32/ChangeLog-2.6.32.8-wireless

2.6.33-rc8:

sha1sum 4811f419acb1d9d12e5262bffc4892da71134510
http://www.orbit-lab.org/kernel/compat-wireless-2.6-stable/v2.6.33/compat-wireless-2.6.33-rc8.tar.bz2
http://www.orbit-lab.org/kernel/compat-wireless-2.6-stable/v2.6.33/ChangeLog-2.6.33-rc8-wireless

Bleeding edge release based on linux-next:
==========================

http://wireless.kernel.org/en/users/Download
http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2

Luis


2010-02-18 18:30:59

by Luis Chamberlain

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Thu, Feb 18, 2010 at 01:15:34AM -0500, Pavel Roskin wrote:
> On Wed, 2010-02-17 at 23:23 -0500, Pavel Roskin wrote:
>
> > The idea is to descend the directory structure from the top (i.e. the
> > directory to be removed) to look for a child that is a file or an empty
> > directory and remove it. Then start from the top and do the same until
> > the top directory has no children. Then remove the top directory.
>
> Here it is. I tested it by actually replacing the original function in
> wireless-testing. I checked unloading all wireless drivers. I also
> tested error handling by keeping a file in debugfs open while removing
> the modules.
>
> I could compile it against Linux 2.6.26, so it's portable enough for our
> purposes.
>
>
> void debugfs_remove_recursive(struct dentry *dentry)
> {
> struct dentry *last = NULL;
>
> /* Sanity checks */
> if (!dentry || !dentry->d_parent || !dentry->d_parent->d_inode)
> return;
>
> while (dentry != last) {
> struct dentry *child = dentry;
>
> /* Find a child without children */
> while (!list_empty(&child->d_subdirs))
> child = list_entry(child->d_subdirs.next, struct dentry,
> d_u.d_child);
>
> /* Bail out if we already tried to remove that entry */
> if (child == last)
> return;
>
> last = child;
> debugfs_remove(child);
> }
> }

Sweeet, thanks a lot! I've sucked this into all the respective git trees. This
means we now have backporting re-enabled on bleeding edge for kernels older
than 2.6.27 (whoopdi-free'kin-doo for those who are on those ancient kernels).

Luis

2010-02-18 19:18:50

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Thu, Feb 18, 2010 at 10:29 AM, Luis R. Rodriguez
<[email protected]> wrote:
> On Wed, Feb 17, 2010 at 10:44:35PM -0500, Pavel Roskin wrote:
>> On Tue, 2010-02-16 at 14:59 -0800, Luis R. Rodriguez wrote:
>>
>> > > Anyway, I'd rather see
>> > > dma_sync_single_range_for_device() for ARM backported.
>> >
>> > Patches are welcomed for it indeed.
>>
>> Here's the patch.  I'm not sure if include/net/compat-2.6.27.h or
>> compat/compat-2.6.27.h is the real source file, as I was patching the
>> downloaded tarball.
>
> For 2.6.32 compat.ko is not created and it is also not managed through
> a separate git tree so compat/compat-2.6.27.h would have been the right
> file for patching purposes.
>
> I tend to prefer to apply things first on bleeding edge and then trickle
> things down just as with upstream. I started to package the general
> kernel compatibility stuff into its own git tree for the 2.6.33 release,
> so for future compat-wireless compat-*.[ch] files go there and patches
> should be sent against:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git
>
> In that tree I have branches for each stable release, just as with
> the compat-wireless git tree. I apply on the master for bleedinge edge
> and then trickle down the stable releases.
>
> Thanks for your patch I have sucked it in and applied it to all
> the respective trees.
>
>> The missing functions are only used by b44.  The functions available in
>> 2.6.26 don't have the offset argument, so I had to extend the range to
>> start at zero.  This could affect the b44 throughput, but I would not
>> worry too much about it.
>>
>> The is another problem.  For some reason, CONFIG_SSB_PCMCIAHOST is
>> enabled in compat_autoconf.h, even though the target kernel lacks PCMCIA
>> support.  However, CONFIG_SSB_PCMCIAHOST is not set in the makefiles, so
>> ssb.ko is compiled with CONFIG_SSB_PCMCIAHOST, but pcmcia.o is not
>> linked into it, which leads to unresolved symbols.  However, the build
>> succeeds and there are no warnings about it.
>
> Ah, try this patch, or you can just git pull.
>
> From: Luis R. Rodriguez <[email protected]>
> Date: Thu, 18 Feb 2010 10:17:52 -0800
> Subject: [PATCH] compat-wireless: make CONFIG_SSB_PCMCIAHOST depend on CONFIG_PCMCIA
>
> The dependency was created but since we don't use our own mconf magic
> thing we have to create our own build dep for our
> include/linux/compat_autoconf.h file. We currently handle these sort
> of dependencies on a case by case basis as compat-wireless was
> relatively simple.
>
> Adding this case would generate this on the compat_autoconf.h file:
>
> ifdef CONFIG_PCMCIA
> ifndef CONFIG_SSB_PCMCIAHOST
> define CONFIG_SSB_PCMCIAHOST 1
> endif /* CONFIG_SSB_PCMCIAHOST */
> else
>
> Reported-by: Pavel Roskin <[email protected]>
> Signed-off-by: Luis R. Rodriguez <[email protected]>
> ---
>  scripts/gen-compat-autoconf.sh |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/scripts/gen-compat-autoconf.sh b/scripts/gen-compat-autoconf.sh
> index 6c7cae7..6184392 100755
> --- a/scripts/gen-compat-autoconf.sh
> +++ b/scripts/gen-compat-autoconf.sh
> @@ -169,6 +169,10 @@ for i in $(grep '^CONFIG_' $COMPAT_CONFIG); do
>                define_config_dep $VAR $VALUE CONFIG_USB_NET_CDCETHER
>                continue
>                ;;
> +       CONFIG_SSB_PCMCIAHOST)
> +               define_config_dep $VAR $VALUE CONFIG_PCMCIA
> +               continue
> +               ;;
>        # ignore this, we have a special hanlder for this at the botttom
>        # instead. We still need to keep this in config.mk to let Makefiles
>        # know its enabled so just ignore it here.

Sorry, I just noticed this would break CONFIG_B43_PCMCIA, and making
that also depend on PCMCIA doesn't work on my end. Eh.

Luis

2010-02-18 03:44:46

by Pavel Roskin

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Tue, 2010-02-16 at 14:59 -0800, Luis R. Rodriguez wrote:

> > Anyway, I'd rather see
> > dma_sync_single_range_for_device() for ARM backported.
>
> Patches are welcomed for it indeed.

Here's the patch. I'm not sure if include/net/compat-2.6.27.h or
compat/compat-2.6.27.h is the real source file, as I was patching the
downloaded tarball.

The missing functions are only used by b44. The functions available in
2.6.26 don't have the offset argument, so I had to extend the range to
start at zero. This could affect the b44 throughput, but I would not
worry too much about it.

The is another problem. For some reason, CONFIG_SSB_PCMCIAHOST is
enabled in compat_autoconf.h, even though the target kernel lacks PCMCIA
support. However, CONFIG_SSB_PCMCIAHOST is not set in the makefiles, so
ssb.ko is compiled with CONFIG_SSB_PCMCIAHOST, but pcmcia.o is not
linked into it, which leads to unresolved symbols. However, the build
succeeds and there are no warnings about it.


--- a/include/net/compat-2.6.27.h
+++ b/include/net/compat-2.6.27.h
@@ -185,4 +185,28 @@

#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)) */

+#ifdef CONFIG_ARM
+
+/*
+ * The caller asks to handle a range between offset and offset + size,
+ * but we process a larger range from 0 to offset + size due to lack of
+ * offset support.
+ */
+
+static inline void dma_sync_single_range_for_cpu(struct device *dev,
+ dma_addr_t handle, unsigned long offset, size_t size,
+ enum dma_data_direction dir)
+{
+ dma_sync_single_for_cpu(dev, handle, offset + size, dir);
+}
+
+static inline void dma_sync_single_range_for_device(struct device *dev,
+ dma_addr_t handle, unsigned long offset, size_t size,
+ enum dma_data_direction dir)
+{
+ dma_sync_single_for_device(dev, handle, offset + size, dir);
+}
+
+#endif /* arm */
+
#endif /* LINUX_26_27_COMPAT_H */

--
Regards,
Pavel Roskin

2010-02-18 05:09:42

by Pavel Roskin

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Tue, 2010-02-16 at 16:51 -0800, Luis R. Rodriguez wrote:

> FWIW the two globals can be seen here:
>
> simple_release_fs(&debugfs_mount, &debugfs_mount_count);
>
> Not sure how to deal with that.

I think the safest approach would be to reimplement
debugfs_remove_recursive() using only debugfs_remove(). It would only
use the debugfs internals to find the children. I would even avoid
looking for siblings.

The idea is to descend the directory structure from the top (i.e. the
directory to be removed) to look for a child that is a file or an empty
directory and remove it. Then start from the top and do the same until
the top directory has no children. Then remove the top directory.

--
Regards,
Pavel Roskin

2010-02-20 02:37:21

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Fri, Feb 19, 2010 at 4:21 PM, Pavel Roskin <[email protected]> wrote:
> On Thu, 2010-02-18 at 13:30 -0500, Luis R. Rodriguez wrote:
>
>> Sweeet, thanks a lot! I've sucked this into all the respective git trees. This
>> means we now have backporting re-enabled on bleeding edge for kernels older
>> than 2.6.27 (whoopdi-free'kin-doo for those who are on those ancient kernels).
>
> debugfs_remove_recursive() was misplaced.  It should be in
> compat-2.6.27, as it appeared in Linux 2.6.27.  With that change,
> compat-wireless compiles for 2.6.26.8 for Gateworks Cambria boards :)

Neat!

> Thank you for your great work on compat-wireless!

Thanks for your patches :D

Luis

2010-02-20 00:22:14

by Pavel Roskin

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Thu, 2010-02-18 at 13:30 -0500, Luis R. Rodriguez wrote:

> Sweeet, thanks a lot! I've sucked this into all the respective git trees. This
> means we now have backporting re-enabled on bleeding edge for kernels older
> than 2.6.27 (whoopdi-free'kin-doo for those who are on those ancient kernels).

debugfs_remove_recursive() was misplaced. It should be in
compat-2.6.27, as it appeared in Linux 2.6.27. With that change,
compat-wireless compiles for 2.6.26.8 for Gateworks Cambria boards :)

Thank you for your great work on compat-wireless!

--
Regards,
Pavel Roskin

2010-02-14 05:10:43

by Pavel Roskin

[permalink] [raw]
Subject: compat-wireless + Linux 2.6.26.8 testing results

On Fri, 2010-02-12 at 18:10 -0800, Luis R. Rodriguez wrote:
> The bleeding edge compat-wireless updates were stuck due to a
> bluetooth hunk failing on net/bluetooth/hidp/core.c, that should be
> fixed now, at least it compiles for me down to 2.6.27. I also hadn't
> updated a 2.6.33-rcx releases in a while, as well as 2.6.32.y release.
> This should all now be in synch with upstream. I never got reports
> about MQ support on older kernels so I just threw in the code, issues
> can be dealt with once actually found.

I've tried compiling all three tarballs against Linux 2.6.26.8. It's a
kernel with some hardware patches for arm architecture that are hard to
port to newer kernels, so compat-wireless would be very helpful.

compat-wireless-2.6.32.8 compiles just fine with ath5k selected.

compat-wireless-2.6.33-rc8 fails:

/home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c: In
function '__ieee80211_wake_queue':
/home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c:290:
error: implicit declaration of function 'netif_tx_wake_queue'
/home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c:290:
error: implicit declaration of function 'netdev_get_tx_queue'
/home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c: In
function '__ieee80211_stop_queue':
/home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c:325:
error: implicit declaration of function 'netif_tx_stop_queue'

compat-wireless-2010-02-13 fails differently:

/home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c: In
function 'ieee80211_if_setup':
/home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c:738:
error: 'struct net_device' has no member named 'select_queue'
/home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c: In
function 'ieee80211_setup_sdata':
/home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c:790:
error: 'struct net_device' has no member named 'select_queue'

I tried enabling CONFIG_NETDEVICES_MULTIQUEUE, but it made no
difference.

It looks like compat-wireless-2.6.33-rc8 and compat-wireless-2010-02-13
don't have the patches to deal with the lack of netif_tx_wake_queue and
select_queue in Linux 2.6.26. compat-wireless-2.6.32.8 has such
patches.

If all drivers are selected, compat-wireless-2.6.32.8 fails:

In file included
from /home/proski/src/compat-wireless-2.6.32.8/drivers/net/b44.c:28:
/home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h: In
function 'ssb_dma_sync_single_range_for_cpu':
/home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h:595:
error: implicit declaration of function 'dma_sync_single_range_for_cpu'
/home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h: In
function 'ssb_dma_sync_single_range_for_device':
/home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h:620:
error: implicit declaration of function
'dma_sync_single_range_for_device'

That appears to be caused by the lack of
dma_sync_single_range_for_device on the arm architecture. Other
architectures have it. "make -k" doesn't find any other errors. All
other drivers compile fine.

--
Regards,
Pavel Roskin

2010-02-17 00:51:30

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Tue, Feb 16, 2010 at 4:45 PM, Luis R. Rodriguez <[email protected]> wrote:

> Hey OK so I propagated MQ support into compat-wireless based on
> linux-next. I just hit a snag I forgot about and explains more
> logically why I hadn't moved MQ support to bleeding edge:
> debugfs_remove_recursive() needs some backport work as well. Last I
> looked at it, I determined we could not directly backport it as it
> relied on two internal globals on fs/debugfs/inode.c. I did copy over
> the code onto compat/compat-2.6.26.c but ifdef'd it out for now.
>
> One option is to disable debugfs on compat-wireless for older kernels
> or if you figure out a way to backport that call without using a
> global even better. For now I just can't work on this but I do welcome
> patches if someone manages to pull off backporting it.
>
>  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.o
> /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.c: In
> function ‘rate_control_release’:
> /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.c:190: error:
> implicit declaration of function ‘debugfs_remove_recursive’
> make[3]: *** [/home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.o]
> Error 1
> make[2]: *** [/home/mcgrof/devel/compat-wireless-2.6/net/mac80211] Error 2
> make[1]: *** [_module_/home/mcgrof/devel/compat-wireless-2.6] Error 2
> make[1]: Leaving directory `/home/mcgrof/kernels/linux-2.6.26.8'

FWIW the two globals can be seen here:

simple_release_fs(&debugfs_mount, &debugfs_mount_count);

Not sure how to deal with that.

Luis

2010-02-18 06:15:46

by Pavel Roskin

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Wed, 2010-02-17 at 23:23 -0500, Pavel Roskin wrote:

> The idea is to descend the directory structure from the top (i.e. the
> directory to be removed) to look for a child that is a file or an empty
> directory and remove it. Then start from the top and do the same until
> the top directory has no children. Then remove the top directory.

Here it is. I tested it by actually replacing the original function in
wireless-testing. I checked unloading all wireless drivers. I also
tested error handling by keeping a file in debugfs open while removing
the modules.

I could compile it against Linux 2.6.26, so it's portable enough for our
purposes.


void debugfs_remove_recursive(struct dentry *dentry)
{
struct dentry *last = NULL;

/* Sanity checks */
if (!dentry || !dentry->d_parent || !dentry->d_parent->d_inode)
return;

while (dentry != last) {
struct dentry *child = dentry;

/* Find a child without children */
while (!list_empty(&child->d_subdirs))
child = list_entry(child->d_subdirs.next, struct dentry,
d_u.d_child);

/* Bail out if we already tried to remove that entry */
if (child == last)
return;

last = child;
debugfs_remove(child);
}
}

--
Regards,
Pavel Roskin

2010-02-16 22:59:50

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Tue, Feb 16, 2010 at 2:12 PM, Pavel Roskin <[email protected]> wrote:
> On Tue, 2010-02-16 at 13:23 -0800, Luis R. Rodriguez wrote:
>
>> > It looks like compat-wireless-2.6.33-rc8 and compat-wireless-2010-02-13
>> > don't have the patches to deal with the lack of netif_tx_wake_queue and
>> > select_queue in Linux 2.6.26.  compat-wireless-2.6.32.8 has such
>> > patches.
>>
>> Oh right, so I was hoping to get some reports on results of MQ
>> backport on 2.6.32.y, I guess its OK enough to merge now and if its
>> borked we can remove older kernel support or something.
>
> I confirm that ath5k and ath9k actually work on that kernel, so the
> results are good.

Sweet!

> There are some funny messages from ath9k, but scanning still works, and
> I don't think it's related to compat-wireless:
>
> ath9k 0000:00:01.0: alloc_safe_buffer: could not alloc dma memory (size=3872)
> ath9k 0000:00:01.0: map_single: unable to map unsafe buffer c6ffe020!
> ath9k 0000:00:01.0: alloc_safe_buffer: could not alloc dma memory (size=3872)
> ath9k 0000:00:01.0: map_single: unable to map unsafe buffer c6800020!

Interesting, not sure what could cause this.

>> > That appears to be caused by the lack of
>> > dma_sync_single_range_for_device on the arm architecture.
>>
>> Interesting... well that would just mean we have to lift SSB off of
>> 2.6.28 kernels.
>
> Perhaps you mean 2.6.26?

Sorry, for some reason I misunderstood and though you were using
2.6.28. Since you did use 2.6.26 it means you did test the new MQ
code, so great :) I'll move that stuff to bleeding edge code + 2.6.33
branch.

> Anyway, I'd rather see
> dma_sync_single_range_for_device() for ARM backported.

Patches are welcomed for it indeed.

Luis

2010-02-16 21:23:53

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Sat, Feb 13, 2010 at 9:10 PM, Pavel Roskin <[email protected]> wrote:
> On Fri, 2010-02-12 at 18:10 -0800, Luis R. Rodriguez wrote:
>> The bleeding edge compat-wireless updates were stuck due to a
>> bluetooth hunk failing on net/bluetooth/hidp/core.c, that should be
>> fixed now, at least it compiles for me down to 2.6.27. I also hadn't
>> updated a 2.6.33-rcx releases in a while, as well as 2.6.32.y release.
>> This should all now be in synch with upstream. I never got reports
>> about MQ support on older kernels so I just threw in the code, issues
>> can be dealt with once actually found.
>
> I've tried compiling all three tarballs against Linux 2.6.26.8.  It's a
> kernel with some hardware patches for arm architecture that are hard to
> port to newer kernels, so compat-wireless would be very helpful.
>
> compat-wireless-2.6.32.8 compiles just fine with ath5k selected.
>
> compat-wireless-2.6.33-rc8 fails:
>
> /home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c: In
> function '__ieee80211_wake_queue':
> /home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c:290:
> error: implicit declaration of function 'netif_tx_wake_queue'
> /home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c:290:
> error: implicit declaration of function 'netdev_get_tx_queue'
> /home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c: In
> function '__ieee80211_stop_queue':
> /home/proski/src/compat-wireless-2.6.33-rc8/net/mac80211/util.c:325:
> error: implicit declaration of function 'netif_tx_stop_queue'
>
> compat-wireless-2010-02-13 fails differently:
>
> /home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c: In
> function 'ieee80211_if_setup':
> /home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c:738:
> error: 'struct net_device' has no member named 'select_queue'
> /home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c: In
> function 'ieee80211_setup_sdata':
> /home/proski/src/compat-wireless-2010-02-13/net/mac80211/iface.c:790:
> error: 'struct net_device' has no member named 'select_queue'
>
> I tried enabling CONFIG_NETDEVICES_MULTIQUEUE, but it made no
> difference.
>
> It looks like compat-wireless-2.6.33-rc8 and compat-wireless-2010-02-13
> don't have the patches to deal with the lack of netif_tx_wake_queue and
> select_queue in Linux 2.6.26.  compat-wireless-2.6.32.8 has such
> patches.

Oh right, so I was hoping to get some reports on results of MQ
backport on 2.6.32.y, I guess its OK enough to merge now and if its
borked we can remove older kernel support or something.

> If all drivers are selected, compat-wireless-2.6.32.8 fails:
>
> In file included
> from /home/proski/src/compat-wireless-2.6.32.8/drivers/net/b44.c:28:
> /home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h: In
> function 'ssb_dma_sync_single_range_for_cpu':
> /home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h:595:
> error: implicit declaration of function 'dma_sync_single_range_for_cpu'
> /home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h: In
> function 'ssb_dma_sync_single_range_for_device':
> /home/proski/src/compat-wireless-2.6.32.8/include/linux/ssb/ssb.h:620:
> error: implicit declaration of function
> 'dma_sync_single_range_for_device'
>
> That appears to be caused by the lack of
> dma_sync_single_range_for_device on the arm architecture.

Interesting... well that would just mean we have to lift SSB off of
2.6.28 kernels.

> Other
> architectures have it.  "make -k" doesn't find any other errors.  All
> other drivers compile fine.

Thanks for the reports and tests.

Luis

2010-02-16 22:12:30

by Pavel Roskin

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Tue, 2010-02-16 at 13:23 -0800, Luis R. Rodriguez wrote:

> > It looks like compat-wireless-2.6.33-rc8 and compat-wireless-2010-02-13
> > don't have the patches to deal with the lack of netif_tx_wake_queue and
> > select_queue in Linux 2.6.26. compat-wireless-2.6.32.8 has such
> > patches.
>
> Oh right, so I was hoping to get some reports on results of MQ
> backport on 2.6.32.y, I guess its OK enough to merge now and if its
> borked we can remove older kernel support or something.

I confirm that ath5k and ath9k actually work on that kernel, so the
results are good.

There are some funny messages from ath9k, but scanning still works, and
I don't think it's related to compat-wireless:

ath9k 0000:00:01.0: alloc_safe_buffer: could not alloc dma memory (size=3872)
ath9k 0000:00:01.0: map_single: unable to map unsafe buffer c6ffe020!
ath9k 0000:00:01.0: alloc_safe_buffer: could not alloc dma memory (size=3872)
ath9k 0000:00:01.0: map_single: unable to map unsafe buffer c6800020!

> > That appears to be caused by the lack of
> > dma_sync_single_range_for_device on the arm architecture.
>
> Interesting... well that would just mean we have to lift SSB off of
> 2.6.28 kernels.

Perhaps you mean 2.6.26? Anyway, I'd rather see
dma_sync_single_range_for_device() for ARM backported.

--
Regards,
Pavel Roskin

2010-02-18 18:29:48

by Luis Chamberlain

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Wed, Feb 17, 2010 at 10:44:35PM -0500, Pavel Roskin wrote:
> On Tue, 2010-02-16 at 14:59 -0800, Luis R. Rodriguez wrote:
>
> > > Anyway, I'd rather see
> > > dma_sync_single_range_for_device() for ARM backported.
> >
> > Patches are welcomed for it indeed.
>
> Here's the patch. I'm not sure if include/net/compat-2.6.27.h or
> compat/compat-2.6.27.h is the real source file, as I was patching the
> downloaded tarball.

For 2.6.32 compat.ko is not created and it is also not managed through
a separate git tree so compat/compat-2.6.27.h would have been the right
file for patching purposes.

I tend to prefer to apply things first on bleeding edge and then trickle
things down just as with upstream. I started to package the general
kernel compatibility stuff into its own git tree for the 2.6.33 release,
so for future compat-wireless compat-*.[ch] files go there and patches
should be sent against:

git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git

In that tree I have branches for each stable release, just as with
the compat-wireless git tree. I apply on the master for bleedinge edge
and then trickle down the stable releases.

Thanks for your patch I have sucked it in and applied it to all
the respective trees.

> The missing functions are only used by b44. The functions available in
> 2.6.26 don't have the offset argument, so I had to extend the range to
> start at zero. This could affect the b44 throughput, but I would not
> worry too much about it.
>
> The is another problem. For some reason, CONFIG_SSB_PCMCIAHOST is
> enabled in compat_autoconf.h, even though the target kernel lacks PCMCIA
> support. However, CONFIG_SSB_PCMCIAHOST is not set in the makefiles, so
> ssb.ko is compiled with CONFIG_SSB_PCMCIAHOST, but pcmcia.o is not
> linked into it, which leads to unresolved symbols. However, the build
> succeeds and there are no warnings about it.

Ah, try this patch, or you can just git pull.

From: Luis R. Rodriguez <[email protected]>
Date: Thu, 18 Feb 2010 10:17:52 -0800
Subject: [PATCH] compat-wireless: make CONFIG_SSB_PCMCIAHOST depend on CONFIG_PCMCIA

The dependency was created but since we don't use our own mconf magic
thing we have to create our own build dep for our
include/linux/compat_autoconf.h file. We currently handle these sort
of dependencies on a case by case basis as compat-wireless was
relatively simple.

Adding this case would generate this on the compat_autoconf.h file:

ifdef CONFIG_PCMCIA
ifndef CONFIG_SSB_PCMCIAHOST
define CONFIG_SSB_PCMCIAHOST 1
endif /* CONFIG_SSB_PCMCIAHOST */
else

Reported-by: Pavel Roskin <[email protected]>
Signed-off-by: Luis R. Rodriguez <[email protected]>
---
scripts/gen-compat-autoconf.sh | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/scripts/gen-compat-autoconf.sh b/scripts/gen-compat-autoconf.sh
index 6c7cae7..6184392 100755
--- a/scripts/gen-compat-autoconf.sh
+++ b/scripts/gen-compat-autoconf.sh
@@ -169,6 +169,10 @@ for i in $(grep '^CONFIG_' $COMPAT_CONFIG); do
define_config_dep $VAR $VALUE CONFIG_USB_NET_CDCETHER
continue
;;
+ CONFIG_SSB_PCMCIAHOST)
+ define_config_dep $VAR $VALUE CONFIG_PCMCIA
+ continue
+ ;;
# ignore this, we have a special hanlder for this at the botttom
# instead. We still need to keep this in config.mk to let Makefiles
# know its enabled so just ignore it here.
--
1.6.3.3

2010-02-17 00:45:47

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: compat-wireless + Linux 2.6.26.8 testing results

On Tue, Feb 16, 2010 at 2:59 PM, Luis R. Rodriguez <[email protected]> wrote:
> On Tue, Feb 16, 2010 at 2:12 PM, Pavel Roskin <[email protected]> wrote:
>> On Tue, 2010-02-16 at 13:23 -0800, Luis R. Rodriguez wrote:
>>
>>> > It looks like compat-wireless-2.6.33-rc8 and compat-wireless-2010-02-13
>>> > don't have the patches to deal with the lack of netif_tx_wake_queue and
>>> > select_queue in Linux 2.6.26.  compat-wireless-2.6.32.8 has such
>>> > patches.
>>>
>>> Oh right, so I was hoping to get some reports on results of MQ
>>> backport on 2.6.32.y, I guess its OK enough to merge now and if its
>>> borked we can remove older kernel support or something.
>>
>> I confirm that ath5k and ath9k actually work on that kernel, so the
>> results are good.
>
> Sweet!

Hey OK so I propagated MQ support into compat-wireless based on
linux-next. I just hit a snag I forgot about and explains more
logically why I hadn't moved MQ support to bleeding edge:
debugfs_remove_recursive() needs some backport work as well. Last I
looked at it, I determined we could not directly backport it as it
relied on two internal globals on fs/debugfs/inode.c. I did copy over
the code onto compat/compat-2.6.26.c but ifdef'd it out for now.

One option is to disable debugfs on compat-wireless for older kernels
or if you figure out a way to backport that call without using a
global even better. For now I just can't work on this but I do welcome
patches if someone manages to pull off backporting it.

CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.o
/home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.c: In
function ‘rate_control_release’:
/home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.c:190: error:
implicit declaration of function ‘debugfs_remove_recursive’
make[3]: *** [/home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.o]
Error 1
make[2]: *** [/home/mcgrof/devel/compat-wireless-2.6/net/mac80211] Error 2
make[1]: *** [_module_/home/mcgrof/devel/compat-wireless-2.6] Error 2
make[1]: Leaving directory `/home/mcgrof/kernels/linux-2.6.26.8'

Luis