Return-path: Received: from mail.atheros.com ([12.36.123.2]:17738 "EHLO mail.atheros.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751565AbYLARWS (ORCPT ); Mon, 1 Dec 2008 12:22:18 -0500 Received: from mail.atheros.com ([10.10.20.108]) by sidewinder.atheros.com for ; Mon, 01 Dec 2008 09:22:18 -0800 Date: Mon, 1 Dec 2008 09:22:12 -0800 From: "Luis R. Rodriguez" To: Andrey Vul CC: Luis Rodriguez , "linux-wireless@vger.kernel.org" Subject: Re: cannot compile compat-wireless-2.6-old Message-ID: <20081201172212.GC5992@tesla> (sfid-20081201_182223_483257_C3D7ED0C) References: <20081125203244.GD5950@tesla> <20081126173453.GC6515@tesla> <20081127010443.GC13226@tesla> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" In-Reply-To: Sender: linux-wireless-owner@vger.kernel.org List-ID: On Wed, Nov 26, 2008 at 09:11:49PM -0800, Andrey Vul wrote: > On Wed, Nov 26, 2008 at 20:04, Luis R. Rodriguez wrote: > > On Wed, Nov 26, 2008 at 03:54:14PM -0800, Andrey Vul wrote: > >> On Wed, Nov 26, 2008 at 12:34, Luis R. Rodriguez wrote: > >> > On Tue, Nov 25, 2008 at 04:51:48PM -0800, Andrey Vul wrote: > >> >> On Tue, Nov 25, 2008 at 16:30, Andrey Vul wrote: > >> >> > On Tue, Nov 25, 2008 at 15:32, Luis R. Rodriguez wrote: > >> >> >> On Tue, Nov 25, 2008 at 09:57:57AM -0800, Andrey Vul wrote: > >> >> >>> I cannot compile the current compat tarball. > >> >> >>> Make log: > >> >> >>> ./scripts/gen-compat-autoconf.sh config.mk > include/linux/compat_autoconf.h > >> >> >>> make -C /usr/src/linux-2.6.26.6-rt11/ M=/root/compat-wireless-2.6-old modules > >> >> >>> make[1]: Entering directory `/usr/src/linux-2.6.26.6-rt11' > >> >> >>> CC [M] /root/compat-wireless-2.6-old/drivers/net/wireless/mac80211_hwsim.o > >> >> >>> In file included from :0: > >> >> >>> /root/compat-wireless-2.6-old/include/net/compat.h:877: error: > >> >> >>> redefinition of 'list_splice_tail' > >> >> >>> include/linux/list.h:356: error: previous definition of > >> >> >>> 'list_splice_tail' was here > >> >> >>> /root/compat-wireless-2.6-old/include/net/compat.h:892: error: > >> >> >>> redefinition of 'list_splice_tail_init' > >> >> >>> include/linux/list.h:379: error: previous definition of > >> >> >>> 'list_splice_tail_init' was here > >> >> >> > >> >> >> list_splice_tail was added as of 2.6.27, and you have 2.6.26. Which > >> >> >> means your kernel headers for your box are completely messed up. This > >> >> >> means you can expect a kernel panic if you were to successfully > >> >> >> compile external modules. Go fix that first. > >> >> >> > >> >> I have $(uname -r)/include/linux/list.h containing list_splice_tail, > >> >> where uname -r is 2.6.26.5-rt9. > >> >> Frankly, I need rt and the code for my wifi card is only in the compat tarball. > >> >> Is this a problem with .[56] or with -rt? > >> > > >> > Ah, yeah RT had their own list_splice_tail(), try this. BTW what driver > >> > are you going to be using? > >> > > >> > >> I'm going to be using iwl5000 which depends on iwlwifi, iwlcore, > >> iwlwifi-leds, and iwlwifi-rfkill . > >> > >> So, in short, all I have to do is this? > >> #!/bin/bash > >> for a in `find ~/compat-wireless-2.6-old -name '*.c' -or -name '*.h'`; do > >> sed -e 's/list_splice_tail/list_splice_tail27/' -i $a; > >> done > >> > >> The only thing I see as possibly problematic is > >> list_splice_tail27_init() (sed is regex after all). > > > > Yup, but since there are some RT 2.6.26 kernels out there if we want > > this fixed in compat-wireless-old I'd rather apply a patch there too. > > Anyway list_splice_tail() is only used for ath9k. > It's used in ath9k but exported to all the drivers via net/compat.h, > leading to the redefinition errors from gcc when compiling an > unrelated (to ath9k) wireless driver. > > So for RT-safety, just do the sed -i in the previous message on > drivers/net/wirelss/ath9k/xmit.c and on include/net/compat.h . So I'd like to commit this to compat-wireless-old to help users like you instead of requiring them to sed all the time. It would be appreciated if you can test the patch to ensure it compiles fine. Luis