Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: [RFC/RFT] rtl8187: Implement rfkill support
From: Hin-Tak Leung @ 2009-08-25  6:51 UTC (permalink / raw)
  To: Larry Finger; +Cc: Herton Ronaldo Krzesinski, linux-wireless
In-Reply-To: <4A935C2D.5010308@lwfinger.net>

--- On Tue, 25/8/09, Larry Finger <Larry.Finger@lwfinger.net> wrote:

> Hin-Tak Leung wrote:
> > --- On Tue, 25/8/09, Larry Finger <Larry.Finger@lwfinger.net>
> wrote:
> > 
> >>> [PATCH] rtl8187: fix circular locking
> >> (rtl8187_stop/rtl8187_work)
> >>
> >> This patch fixes the problem. You can add a
> Tested-by to
> >> it.
> > 
> > Hmm, I am still wondering about why NM insists on if
> up'ing the device. I read bits of things and apparently hal
> is supposed to know the device is rfkill'ed and let NM know.
> But lshal is not listing the device as having an killswitch.
> I don't know how hal is supposed to work out that info
> though. 
> > 
> > also I noted that
> /sys/class/rfkill_backport/rfkill0/state goes from 1 to 2
> when I slide the switch to the 'off' position. Some says it
> should be 0?
> > Don't know if hal is affected by its being
> rfkill_backport (compat-wireless) rather than rfkill (stock
> vendor kernel). well, it should look there if it isn't :-).
> > 
> > It looks like it is a hal problem...
> 
> The interpretation is as follows:
> 0 - blocked by software such as 'rfkill block 1'
> 1 - unblocked
> 2 - blocked by hardware
> 
> Your state is doing exactly what I would expect. When NM
> brings the
> device up, does the above state change? Does dmesg show
> anything?

dmesg and rfkill/state corresponds exactly to what the sliding switch does (in the on position, dmesg says it is on, states says 2, in the off position, dmesg says it is off, state says 1). NM basically ignores rfkill/state, and just if'up the device whenever it notices the device has gone down.

hal is supposed to have knowledge of the rfkill state (which it hasn't, from what I see of the lshal output - there is no killswitch entry in there), and let NM through dbus know to not bother the device. At the moment I think it is somewhere in hal that's not working properly.


      


^ permalink raw reply

* Re: Abour linux driver supports BCM4325
From: feng tian @ 2009-08-25  7:16 UTC (permalink / raw)
  To: Michael Buesch; +Cc: Johannes Berg, Larry Finger, linux-wireless
In-Reply-To: <f42a38140908240235v9206b79m3055f8a96c3dcb64@mail.gmail.com>

Dear Michael,

Another question:
We can't get the actual "datasheet" of BCM 4325. The pdf from broadcom
is so rough, and we also sent email to ask more detailed spec, but no
feedback.
What kind of datasheet of BCM4325 are you using now?
Could you please share this with us?

Thank you very much.

BR, Feng

^ permalink raw reply

* Re: [PATCH] compal-laptop: Replace sysfs support with rfkill support
From: Alan Jenkins @ 2009-08-25  8:15 UTC (permalink / raw)
  To: Mario Limonciello
  Cc: cezary.jackiewicz, linux-wireless, linux-acpi, linux-kernel
In-Reply-To: <1251143422-13905-1-git-send-email-Mario_Limonciello@Dell.com>

On 8/24/09, Mario Limonciello <Mario_Limonciello@dell.com> wrote:
> This drops the support for manually groking the files in sysfs
> to turn on and off the WLAN and BT for Compal laptops in favor
> of platform rfkill support.
>
> It has been combined into a single patch to not introduce regressions
> in the process of simply adding rfkill support

Ok, that looks better.

Thanks
Alan

^ permalink raw reply

* Re: [RFC/RFT] rtl8187: Implement rfkill support
From: Johannes Berg @ 2009-08-25  9:27 UTC (permalink / raw)
  To: htl10; +Cc: Larry Finger, Herton Ronaldo Krzesinski, linux-wireless
In-Reply-To: <950315.98615.qm@web23105.mail.ird.yahoo.com>

[-- Attachment #1: Type: text/plain, Size: 806 bytes --]

On Tue, 2009-08-25 at 06:51 +0000, Hin-Tak Leung wrote:

> dmesg and rfkill/state corresponds exactly to what the sliding switch
> does (in the on position, dmesg says it is on, states says 2, in the
> off position, dmesg says it is off, state says 1). NM basically
> ignores rfkill/state, and just if'up the device whenever it notices
> the device has gone down.

NM can't ignore the state since cfg80211 enforces it.

Can you please use rfkill (http://git.sipsolutions.net/rfkill.git) to
see what's going on? Like print out events while you slide the button
and use NM etc.

One thing that would be possible -- does your poll callback work while
the interface is down? Try to tell NM to turn off the wireless network,
and see whether the state ever changes with your slider.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* [PATCH] PRISM54: fix compilation warning
From: Jaswinder Singh Rajput @ 2009-08-25  9:58 UTC (permalink / raw)
  To: Luis R. Rodriguez, linux-wireless, John W. Linville


 CC [M]  drivers/net/wireless/prism54/islpci_eth.o
drivers/net/wireless/prism54/islpci_eth.c: In function ‘islpci_eth_cleanup_transmit’:
drivers/net/wireless/prism54/islpci_eth.c:53: warning: cast from pointer to integer of different size
drivers/net/wireless/prism54/islpci_eth.c: In function ‘islpci_eth_receive’:
drivers/net/wireless/prism54/islpci_eth.c:453: warning: cast from pointer to integer of different size

Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
---
 drivers/net/wireless/prism54/islpci_eth.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/prism54/islpci_eth.c b/drivers/net/wireless/prism54/islpci_eth.c
index 8f62109..80a9a9c 100644
--- a/drivers/net/wireless/prism54/islpci_eth.c
+++ b/drivers/net/wireless/prism54/islpci_eth.c
@@ -50,7 +50,7 @@ islpci_eth_cleanup_transmit(islpci_private *priv,
 
 		/* check for holes in the arrays caused by multi fragment frames
 		 * searching for the last fragment of a frame */
-		if (priv->pci_map_tx_address[index] != (dma_addr_t) NULL) {
+		if (priv->pci_map_tx_address[index]) {
 			/* entry is the last fragment of a frame
 			 * free the skb structure and unmap pci memory */
 			skb = priv->data_low_tx[index];
@@ -450,7 +450,7 @@ islpci_eth_receive(islpci_private *priv)
 		    pci_map_single(priv->pdev, (void *) skb->data,
 				   MAX_FRAGMENT_SIZE_RX + 2,
 				   PCI_DMA_FROMDEVICE);
-		if (unlikely(priv->pci_map_rx_address[index] == (dma_addr_t) NULL)) {
+		if (unlikely(!priv->pci_map_rx_address[index])) {
 			/* error mapping the buffer to device accessable memory address */
 			DEBUG(SHOW_ERROR_MESSAGES,
 			      "Error mapping DMA address\n");
-- 
1.6.2.5




^ permalink raw reply related

* Re: Linux Kernel Wireless stack presentation
From: Rami Rosen @ 2009-08-25 10:29 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1250760130.4100.23.camel@johannes.local>

Hello,


> iwconfig wlan0 power timeout 0 == PS-poll,

I am not sure I fully understand what you mean here by
"iwconfig wlan0 power timeout 0 == PS-poll". As far as I understand,
"iwconfig wlan0 power timeout 0" invokes ieee80211_change_ps(); this method
notifies the driver about disabling PS (by
ieee80211_hw_config(...IEEE80211_CONF_CHANGE_PS))
and sets the flags to have ~IEEE80211_CONF_PS; It also cancells the
dynamic_ps_enable_work work_queue thread. But what PS-POLL has to do with it ?
I am not sure I understand how PSPOLL is relevant here.

It could be that I missunderstand you in some point here.

Regards,
Rami Rosen


On Thu, Aug 20, 2009 at 12:22 PM, Johannes
Berg<johannes@sipsolutions.net> wrote:
> On Thu, 2009-08-20 at 10:02 +0300, Rami Rosen wrote:
>
>> http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf
>
> had a quick look
>
>  * almost all drivers support passive scanning -- all the modern ones at
>   least -- maybe some old drivers don't, but all using cfg80211 do
>  * your presentation is based on old code -- all the code stuff about
>   scanning is already outdated in wireless-testing
>  * you can scan for multiple specific SSIDs and channels:
>   iw wlan0 scan freq 2412 ssid foo bar baz
>  * iw has a better IE parser, so showing a result from that may be more
>   instructive
>  * code stuff about authentication/association is also outdated already
>  * the STA_MLME_DISABLED stuff no longer exists
>  * AP MLME will never be in the kernel, not just not in the near
>   future :)
>  * raw packets still go through the mac80211 stack, they arrive in
>   monitor_start_xmit() or so
>  * four-address format is not necessarily used only for WDS, the
>   standard doesn't define uses for it (ToDS = FromDS = 1)
>  * an AP may transmit nullfunc (!) frames to tell clients it has no data
>   buffered, but it never transmits frames with the PM bit on
>  * power timeout 5 is described incorrectly -- it doesn't go to sleep
>   for 5 seconds, it actually stays awake for 5 seconds after each
>   packet transmission -- the time spent asleep is calculated based on
>   the DTIM period etc. Cf. 04fe20372e70685d9f15966216cdffd3795fe590.
>  * STA may wake up in response to TIM[AID] == 1 instead of sending
>   PS-poll, which we do depends on the timeout (iwconfig wlan0 power
>   timeout 0 == PS-poll, iwconfig wlan0 power timeout 100ms == send
>   nullfunc and stay awake for 100ms)
>  * "paramter" typo
>  * ibss is in net/mac80211/ibss.c and has been for quite a while
>  * PM in IBSS is not implemented typically
>  * s/80211.s/802.11s/
>  * s/80211.n/802.11n/
>  * you can change the channel with iw (iw phy set freq ...) but it isn't
>   really useful unless you're AP/monitor (and rejected otherwise)
>  * Fedora no longer updates from wireless-testing afaik
>  * wmaster0 is no longer created
>  * assigning interface_modes doesn't set the mode, it just sets the
>   possible modes :)
>  * you can also call iterate_interfaces_atomic() in irq context
>  * nobody cares about the wireless extensions version any more :)
>  * for sniffing you may care about "iw dev <devname> set monitor <flag>*"
>
> Hey that got long!
>
> johannes
>

^ permalink raw reply

* Re: Linux Kernel Wireless stack presentation
From: Johannes Berg @ 2009-08-25 10:37 UTC (permalink / raw)
  To: Rami Rosen; +Cc: linux-wireless
In-Reply-To: <eb3ff54b0908250329s3e1a4715u27c82512fff520d5@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 792 bytes --]

Hi,

> > iwconfig wlan0 power timeout 0 == PS-poll,
> 
> I am not sure I fully understand what you mean here by
> "iwconfig wlan0 power timeout 0 == PS-poll". As far as I understand,
> "iwconfig wlan0 power timeout 0" invokes ieee80211_change_ps(); this method
> notifies the driver about disabling PS (by
> ieee80211_hw_config(...IEEE80211_CONF_CHANGE_PS))
> and sets the flags to have ~IEEE80211_CONF_PS; It also cancells the
> dynamic_ps_enable_work work_queue thread. But what PS-POLL has to do with it ?
> I am not sure I understand how PSPOLL is relevant here.

No,

	iwconfig wlan0 power off

goes into the disable PS case.

	iwconfig wlan0 power timeout 0

sets the timeout to zero and power management on. And when the timeout
is 0 we use ps-poll.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* Re: Abour linux driver supports BCM4325
From: Michael Buesch @ 2009-08-25 10:53 UTC (permalink / raw)
  To: feng tian; +Cc: Johannes Berg, Larry Finger, linux-wireless
In-Reply-To: <f42a38140908250016g72207b64h9d2a33cb73a78b1f@mail.gmail.com>

On Tuesday 25 August 2009 09:16:36 feng tian wrote:
> Dear Michael,
> 
> Another question:
> We can't get the actual "datasheet" of BCM 4325. The pdf from broadcom
> is so rough, and we also sent email to ask more detailed spec, but no
> feedback.
> What kind of datasheet of BCM4325 are you using now?
> Could you please share this with us?
> 
> Thank you very much.
> 
> BR, Feng
> 
> 

http://bcm-v4.sipsolutions.net/

-- 
Greetings, Michael.

^ permalink raw reply

* Compiling against different kernel
From: Ed W @ 2009-08-25 12:46 UTC (permalink / raw)
  To: linux-wireless

Hi, I am building a kernel for an embedded 32bit x86 kernel on my x86_64 
machine.  I have a 32bit x86 build environment in a chroot, but 
obviously "uname" still looks like the host

I try to compile compat-wireless (2009-08-24) like this:

make ARCH=x86 KLIB=/usr/src/linux-2.6.30.5-grsecurity-2.1.14-aufs/ 
KLIB_BUILD=/usr/src/linux-2.6.30.5-grsecurity-2.1.14-aufs/

I get:

FATAL: Could not load 
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such 
file or directory
FATAL: Could not load 
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such 
file or directory
./scripts/gen-compat-autoconf.sh config.mk > include/linux/compat_autoconf.h
FATAL: Could not load 
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such 
file or directory
FATAL: Could not load 
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such 
file or directory
make -C /usr/src/linux-2.6.30.5-grsecurity-2.1.14-aufs/ 
M=/usr/src/compat-wireless-2009-08-24 modules
..etc..

(where it's clearly trying to find the modules dir for the running 64bit 
kernel, rather than the
I'm looking through the makefile, but I can't see how it's trying to 
adapt depmod to use the correct modules.dep?

Can someone please help with the correct incantation to cross compile?

Thanks

Ed W

^ permalink raw reply

* [PATCH] b43: LP-PHY: Fix a few typos in the RC calibration code
From: Gábor Stefanik @ 2009-08-25 14:17 UTC (permalink / raw)
  To: John Linville, Michael Buesch, Larry Finger, Mark Huijgen
  Cc: Broadcom Wireless, linux-wireless

The RC calibration code has some typos - fix them.
Also, make the default channel 7, as channel 1 is still
broken (only channels 7 and 8, and occasionally 9 work).

Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
---
 drivers/net/wireless/b43/phy_lp.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
index 2d3a5d8..7e70c07 100644
--- a/drivers/net/wireless/b43/phy_lp.c
+++ b/drivers/net/wireless/b43/phy_lp.c
@@ -44,7 +44,7 @@ static inline u16 channel2freq_lp(u8 channel)
 static unsigned int b43_lpphy_op_get_default_chan(struct b43_wldev *dev)
 {
 	if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
-		return 1;
+		return 7; //FIXME temporary - channel 1 is broken
 	return 36;
 }
 
@@ -705,7 +705,7 @@ static void lpphy_set_rc_cap(struct b43_wldev *dev)
 	u8 rc_cap = (lpphy->rc_cap & 0x1F) >> 1;
 
 	if (dev->phy.rev == 1) //FIXME check channel 14!
-		rc_cap = max_t(u8, rc_cap + 5, 15);
+		rc_cap = min_t(u8, rc_cap + 5, 15);
 
 	b43_radio_write(dev, B2062_N_RXBB_CALIB2,
 			max_t(u8, lpphy->rc_cap - 4, 0x80));
@@ -1008,6 +1008,7 @@ static int lpphy_loopback(struct b43_wldev *dev)
 
 	b43_phy_maskset(dev, B43_LPPHY_RF_OVERRIDE_VAL_0, 0xFFFC, 0x3);
 	b43_phy_set(dev, B43_LPPHY_RF_OVERRIDE_0, 0x3);
+	b43_phy_set(dev, B43_LPPHY_AFE_CTL_OVR, 1);
 	b43_phy_mask(dev, B43_LPPHY_AFE_CTL_OVRVAL, 0xFFFE);
 	b43_phy_set(dev, B43_LPPHY_RF_OVERRIDE_0, 0x800);
 	b43_phy_set(dev, B43_LPPHY_RF_OVERRIDE_VAL_0, 0x800);
@@ -1213,7 +1214,7 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev *dev)
 			mean_sq_pwr = ideal_pwr - normal_pwr;
 			mean_sq_pwr *= mean_sq_pwr;
 			inner_sum += mean_sq_pwr;
-			if ((i = 128) || (inner_sum < mean_sq_pwr_min)) {
+			if ((i == 128) || (inner_sum < mean_sq_pwr_min)) {
 				lpphy->rc_cap = i;
 				mean_sq_pwr_min = inner_sum;
 			}
-- 
1.5.6


^ permalink raw reply related

* [PATCH] mac80211: fix scan cancel on ifdown
From: Johannes Berg @ 2009-08-25 14:33 UTC (permalink / raw)
  To: John Linville; +Cc: Jouni Malinen, linux-wireless

When an interface is taken down while a scan is
pending -- i.e. a scan request was accepted but
not yet acted upon due to other work being in
progress -- we currently do not properly cancel
that scan and end up getting stuck. Fix this by
doing better checks when an interface is taken
down.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
 net/mac80211/iface.c |   26 ++------------------------
 net/mac80211/scan.c  |    9 ++++++---
 2 files changed, 8 insertions(+), 27 deletions(-)

--- wireless-testing.orig/net/mac80211/iface.c	2009-08-25 14:39:06.000000000 +0200
+++ wireless-testing/net/mac80211/iface.c	2009-08-25 14:39:42.000000000 +0200
@@ -497,30 +497,8 @@ static int ieee80211_stop(struct net_dev
 		}
 		/* fall through */
 	default:
-		if (local->scan_sdata == sdata) {
-			if (!local->ops->hw_scan)
-				cancel_delayed_work_sync(&local->scan_work);
-			/*
-			 * The software scan can no longer run now, so we can
-			 * clear out the scan_sdata reference. However, the
-			 * hardware scan may still be running. The complete
-			 * function must be prepared to handle a NULL value.
-			 */
-			local->scan_sdata = NULL;
-			/*
-			 * The memory barrier guarantees that another CPU
-			 * that is hardware-scanning will now see the fact
-			 * that this interface is gone.
-			 */
-			smp_mb();
-			/*
-			 * If software scanning, complete the scan but since
-			 * the scan_sdata is NULL already don't send out a
-			 * scan event to userspace -- the scan is incomplete.
-			 */
-			if (test_bit(SCAN_SW_SCANNING, &local->scanning))
-				ieee80211_scan_completed(&local->hw, true);
-		}
+		if (local->scan_sdata == sdata)
+			ieee80211_scan_cancel(local);
 
 		/*
 		 * Disable beaconing for AP and mesh, IBSS can't
--- wireless-testing.orig/net/mac80211/scan.c	2009-08-25 14:37:44.000000000 +0200
+++ wireless-testing/net/mac80211/scan.c	2009-08-25 15:50:07.000000000 +0200
@@ -280,6 +280,7 @@ void ieee80211_scan_completed(struct iee
 	if (local->scan_req != local->int_scan_req)
 		cfg80211_scan_done(local->scan_req, aborted);
 	local->scan_req = NULL;
+	local->scan_sdata = NULL;
 
 	was_hw_scan = test_bit(SCAN_HW_SCANNING, &local->scanning);
 	local->scanning = 0;
@@ -660,6 +661,7 @@ void ieee80211_scan_work(struct work_str
 		int rc;
 
 		local->scan_req = NULL;
+		local->scan_sdata = NULL;
 
 		rc = __ieee80211_start_scan(sdata, req);
 		mutex_unlock(&local->scan_mtx);
@@ -742,7 +744,7 @@ int ieee80211_request_internal_scan(stru
 
 void ieee80211_scan_cancel(struct ieee80211_local *local)
 {
-	bool swscan;
+	bool abortscan;
 
 	cancel_delayed_work_sync(&local->scan_work);
 
@@ -751,9 +753,10 @@ void ieee80211_scan_cancel(struct ieee80
 	 * queued -- mostly at suspend under RTNL.
 	 */
 	mutex_lock(&local->scan_mtx);
-	swscan = test_bit(SCAN_SW_SCANNING, &local->scanning);
+	abortscan = test_bit(SCAN_SW_SCANNING, &local->scanning) ||
+		    (!local->scanning && local->scan_req);
 	mutex_unlock(&local->scan_mtx);
 
-	if (swscan)
+	if (abortscan)
 		ieee80211_scan_completed(&local->hw, true);
 }



^ permalink raw reply

* [PATCH] b43: LP-PHY: Fix and simplify Qdiv roundup
From: Gábor Stefanik @ 2009-08-25 14:40 UTC (permalink / raw)
  To: John Linville, Michael Buesch, Larry Finger, Mark Huijgen
  Cc: Broadcom Wireless, linux-wireless

The Qdiv roundup routine is essentially a fixed-point
division algorithm, using only integer math.
However, the version in the specs had a major error
that has been recently fixed (a missing quotient++).

Replace Qdiv roundup with a rewritten, simplified version.

Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
---
 drivers/net/wireless/b43/phy_lp.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
index 7e70c07..d0280d5 100644
--- a/drivers/net/wireless/b43/phy_lp.c
+++ b/drivers/net/wireless/b43/phy_lp.c
@@ -1034,7 +1034,7 @@ static int lpphy_loopback(struct b43_wldev *dev)
 
 static u32 lpphy_qdiv_roundup(u32 dividend, u32 divisor, u8 precision)
 {
-	u32 quotient, remainder, rbit, roundup, tmp;
+	u32 quotient, remainder;
 
 	if (divisor == 0)
 		return 0;
@@ -1042,20 +1042,14 @@ static u32 lpphy_qdiv_roundup(u32 dividend, u32 divisor, u8 precision)
 	quotient = dividend / divisor;
 	remainder = dividend % divisor;
 
-	rbit = divisor & 0x1;
-	roundup = (divisor >> 1) + rbit;
-
 	while (precision != 0) {
-		tmp = remainder - roundup;
 		quotient <<= 1;
-		if (remainder >= roundup)
-			remainder = (tmp << 1) + rbit;
-		else
-			remainder <<= 1;
+		quotient |= (remainder << 1) / divisor;
+		remainder = (remainder << 1) % divisor;
 		precision--;
 	}
 
-	if (remainder >= roundup)
+	if (remainder << 1 >= divisor)
 		quotient++;
 
 	return quotient;
-- 
1.5.6


^ permalink raw reply related

* Re: [PATCH] b43: LP-PHY: Fix and simplify Qdiv roundup
From: Bob Copeland @ 2009-08-25 15:09 UTC (permalink / raw)
  To: Gábor Stefanik
  Cc: John Linville, Michael Buesch, Larry Finger, Mark Huijgen,
	Broadcom Wireless, linux-wireless
In-Reply-To: <1251211217-7816-1-git-send-email-netrolller.3d@gmail.com>

2009/8/25 Gábor Stefanik <netrolller.3d@gmail.com>:
> The Qdiv roundup routine is essentially a fixed-point
> division algorithm, using only integer math.
> However, the version in the specs had a major error
> that has been recently fixed (a missing quotient++).
>
> Replace Qdiv roundup with a rewritten, simplified version.

Hi!

> @@ -1042,20 +1042,14 @@ static u32 lpphy_qdiv_roundup(u32 dividend, u32 divisor, u8 precision)
>        quotient = dividend / divisor;
>        remainder = dividend % divisor;
>
> -       rbit = divisor & 0x1;
> -       roundup = (divisor >> 1) + rbit;
> -
>        while (precision != 0) {
> -               tmp = remainder - roundup;
>                quotient <<= 1;
> -               if (remainder >= roundup)
> -                       remainder = (tmp << 1) + rbit;
> -               else
> -                       remainder <<= 1;
> +               quotient |= (remainder << 1) / divisor;
> +               remainder = (remainder << 1) % divisor;
>                precision--;
>        }

Unless precision is 0, this just added a bunch of divides into
the inner loop, which might be a big surprise to anyone expecting
this to be fast...

-- 
Bob Copeland %% www.bobcopeland.com

^ permalink raw reply

* [PATCH] mac80211: Check pending scan request after having processed mgd work
From: Jouni Malinen @ 2009-08-25 14:44 UTC (permalink / raw)
  To: Johannes Berg, John W. Linville; +Cc: linux-wireless

When the queued management work items are processed in
ieee80211_sta_work() an item could be removed. This could change the
anybusy from true to false, so we better check whether we can start a
new scan only after having processed the pending work first.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>

---
 net/mac80211/mlme.c |   28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

--- uml.orig/net/mac80211/mlme.c	2009-08-25 17:29:08.000000000 +0300
+++ uml/net/mac80211/mlme.c	2009-08-25 17:32:04.000000000 +0300
@@ -2123,25 +2123,9 @@ static void ieee80211_sta_work(struct wo
 		}
 	}
 
-	list_for_each_entry(wk, &ifmgd->work_list, list) {
-		if (wk->state != IEEE80211_MGD_STATE_IDLE) {
-			anybusy = true;
-			break;
-		}
-	}
 
 	ieee80211_recalc_idle(local);
 
-	if (!anybusy) {
-		mutex_unlock(&ifmgd->mtx);
-
-		if (test_and_clear_bit(IEEE80211_STA_REQ_SCAN, &ifmgd->request))
-			ieee80211_queue_delayed_work(&local->hw,
-						     &local->scan_work,
-						     round_jiffies_relative(0));
-		return;
-	}
-
 	list_for_each_entry_safe(wk, tmp, &ifmgd->work_list, list) {
 		if (time_is_after_jiffies(wk->timeout)) {
 			/*
@@ -2187,6 +2171,18 @@ static void ieee80211_sta_work(struct wo
 		}
 	}
 
+	list_for_each_entry(wk, &ifmgd->work_list, list) {
+		if (wk->state != IEEE80211_MGD_STATE_IDLE) {
+			anybusy = true;
+			break;
+		}
+	}
+	if (!anybusy &&
+	    test_and_clear_bit(IEEE80211_STA_REQ_SCAN, &ifmgd->request))
+		ieee80211_queue_delayed_work(&local->hw,
+					     &local->scan_work,
+					     round_jiffies_relative(0));
+
 	mutex_unlock(&ifmgd->mtx);
 
 	list_for_each_entry_safe(wk, tmp, &free_work, list) {

-- 
Jouni Malinen                                            PGP id EFC895FA

^ permalink raw reply

* B44 not being installed
From: Gregy @ 2009-08-25 17:02 UTC (permalink / raw)
  To: linux-wireless

Hello, I would like to report something that looks like a bug to me.
compat-wireless 2009-08-25
kernel 2.6.31-rc4
With stock config.mk b44 is enabled and should be compiled and
installed with make && make install
I fact it is not compiled and installed -> after I load new ssb wired
network stops working

Could you please look into it?

Thanks

^ permalink raw reply

* [PATCH] libipw: initiate cfg80211 API conversion
From: John W. Linville @ 2009-08-25 18:12 UTC (permalink / raw)
  To: linux-wireless; +Cc: John W. Linville

Initiate the conversion of libipw to the new cfg80211 configuration API.

For now, leave CONFIG_IPW2200_PROMISCUOUS stuff alone.  Eventually
migrate it to cfg80211 when the add/del/change_virtual_intf methods
are implemented.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
 drivers/net/wireless/ipw2x00/ipw2100.c       |    6 +-
 drivers/net/wireless/ipw2x00/ipw2200.c       |  141 +++++++++++++++++++++-----
 drivers/net/wireless/ipw2x00/libipw.h        |    8 +-
 drivers/net/wireless/ipw2x00/libipw_module.c |   42 +++++++-
 4 files changed, 161 insertions(+), 36 deletions(-)

diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
index 8caa07a..7745738 100644
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
@@ -6029,7 +6029,7 @@ static struct net_device *ipw2100_alloc_device(struct pci_dev *pci_dev,
 	struct ipw2100_priv *priv;
 	struct net_device *dev;
 
-	dev = alloc_ieee80211(sizeof(struct ipw2100_priv));
+	dev = alloc_ieee80211(sizeof(struct ipw2100_priv), 0);
 	if (!dev)
 		return NULL;
 	priv = libipw_priv(dev);
@@ -6342,7 +6342,7 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
 		sysfs_remove_group(&pci_dev->dev.kobj,
 				   &ipw2100_attribute_group);
 
-		free_ieee80211(dev);
+		free_ieee80211(dev, 0);
 		pci_set_drvdata(pci_dev, NULL);
 	}
 
@@ -6400,7 +6400,7 @@ static void __devexit ipw2100_pci_remove_one(struct pci_dev *pci_dev)
 		if (dev->base_addr)
 			iounmap((void __iomem *)dev->base_addr);
 
-		free_ieee80211(dev);
+		free_ieee80211(dev, 0);
 	}
 
 	pci_release_regions(pci_dev);
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
index 0ccec9f..3f8372d 100644
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
@@ -103,6 +103,25 @@ static int antenna = CFG_SYS_ANTENNA_BOTH;
 static int rtap_iface = 0;     /* def: 0 -- do not create rtap interface */
 #endif
 
+static struct ieee80211_rate ipw2200_rates[] = {
+	{ .bitrate = 10 },
+	{ .bitrate = 20, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
+	{ .bitrate = 55, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
+	{ .bitrate = 110, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
+	{ .bitrate = 60 },
+	{ .bitrate = 90 },
+	{ .bitrate = 120 },
+	{ .bitrate = 180 },
+	{ .bitrate = 240 },
+	{ .bitrate = 360 },
+	{ .bitrate = 480 },
+	{ .bitrate = 540 }
+};
+
+#define ipw2200_a_rates		(ipw2200_rates + 4)
+#define ipw2200_num_a_rates	8
+#define ipw2200_bg_rates	(ipw2200_rates + 0)
+#define ipw2200_num_bg_rates	12
 
 #ifdef CONFIG_IPW2200_QOS
 static int qos_enable = 0;
@@ -8640,24 +8659,6 @@ static int ipw_sw_reset(struct ipw_priv *priv, int option)
  *
  */
 
-static int ipw_wx_get_name(struct net_device *dev,
-			   struct iw_request_info *info,
-			   union iwreq_data *wrqu, char *extra)
-{
-	struct ipw_priv *priv = libipw_priv(dev);
-	mutex_lock(&priv->mutex);
-	if (priv->status & STATUS_RF_KILL_MASK)
-		strcpy(wrqu->name, "radio off");
-	else if (!(priv->status & STATUS_ASSOCIATED))
-		strcpy(wrqu->name, "unassociated");
-	else
-		snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11%c",
-			 ipw_modes[priv->assoc_request.ieee_mode]);
-	IPW_DEBUG_WX("Name: %s\n", wrqu->name);
-	mutex_unlock(&priv->mutex);
-	return 0;
-}
-
 static int ipw_set_channel(struct ipw_priv *priv, u8 channel)
 {
 	if (channel == 0) {
@@ -9957,7 +9958,7 @@ static int ipw_wx_sw_reset(struct net_device *dev,
 /* Rebase the WE IOCTLs to zero for the handler array */
 #define IW_IOCTL(x) [(x)-SIOCSIWCOMMIT]
 static iw_handler ipw_wx_handlers[] = {
-	IW_IOCTL(SIOCGIWNAME) = ipw_wx_get_name,
+	IW_IOCTL(SIOCGIWNAME) = (iw_handler) cfg80211_wext_giwname,
 	IW_IOCTL(SIOCSIWFREQ) = ipw_wx_set_freq,
 	IW_IOCTL(SIOCGIWFREQ) = ipw_wx_get_freq,
 	IW_IOCTL(SIOCSIWMODE) = ipw_wx_set_mode,
@@ -11401,16 +11402,100 @@ static void ipw_bg_down(struct work_struct *work)
 /* Called by register_netdev() */
 static int ipw_net_init(struct net_device *dev)
 {
+	int i, rc = 0;
 	struct ipw_priv *priv = libipw_priv(dev);
+	const struct libipw_geo *geo = libipw_get_geo(priv->ieee);
+	struct wireless_dev *wdev = &priv->ieee->wdev;
 	mutex_lock(&priv->mutex);
 
 	if (ipw_up(priv)) {
-		mutex_unlock(&priv->mutex);
-		return -EIO;
+		rc = -EIO;
+		goto out;
 	}
 
+	memcpy(wdev->wiphy->perm_addr, priv->mac_addr, ETH_ALEN);
+
+	/* fill-out priv->ieee->bg_band */
+	if (geo->bg_channels) {
+		struct ieee80211_supported_band *bg_band = &priv->ieee->bg_band;
+
+		bg_band->band = IEEE80211_BAND_2GHZ;
+		bg_band->n_channels = geo->bg_channels;
+		bg_band->channels =
+			kzalloc(geo->bg_channels *
+				sizeof(struct ieee80211_channel), GFP_KERNEL);
+		/* translate geo->bg to bg_band.channels */
+		for (i = 0; i < geo->bg_channels; i++) {
+			bg_band->channels[i].band = IEEE80211_BAND_2GHZ;
+			bg_band->channels[i].center_freq = geo->bg[i].freq;
+			bg_band->channels[i].hw_value = geo->bg[i].channel;
+			bg_band->channels[i].max_power = geo->bg[i].max_power;
+			if (geo->bg[i].flags & LIBIPW_CH_PASSIVE_ONLY)
+				bg_band->channels[i].flags |=
+					IEEE80211_CHAN_PASSIVE_SCAN;
+			if (geo->bg[i].flags & LIBIPW_CH_NO_IBSS)
+				bg_band->channels[i].flags |=
+					IEEE80211_CHAN_NO_IBSS;
+			if (geo->bg[i].flags & LIBIPW_CH_RADAR_DETECT)
+				bg_band->channels[i].flags |=
+					IEEE80211_CHAN_RADAR;
+			/* No equivalent for LIBIPW_CH_80211H_RULES,
+			   LIBIPW_CH_UNIFORM_SPREADING, or
+			   LIBIPW_CH_B_ONLY... */
+		}
+		/* point at bitrate info */
+		bg_band->bitrates = ipw2200_bg_rates;
+		bg_band->n_bitrates = ipw2200_num_bg_rates;
+
+		wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = bg_band;
+	}
+
+	/* fill-out priv->ieee->a_band */
+	if (geo->a_channels) {
+		struct ieee80211_supported_band *a_band = &priv->ieee->a_band;
+
+		a_band->band = IEEE80211_BAND_5GHZ;
+		a_band->n_channels = geo->a_channels;
+		a_band->channels =
+			kzalloc(geo->a_channels *
+				sizeof(struct ieee80211_channel), GFP_KERNEL);
+		/* translate geo->bg to a_band.channels */
+		for (i = 0; i < geo->a_channels; i++) {
+			a_band->channels[i].band = IEEE80211_BAND_2GHZ;
+			a_band->channels[i].center_freq = geo->a[i].freq;
+			a_band->channels[i].hw_value = geo->a[i].channel;
+			a_band->channels[i].max_power = geo->a[i].max_power;
+			if (geo->a[i].flags & LIBIPW_CH_PASSIVE_ONLY)
+				a_band->channels[i].flags |=
+					IEEE80211_CHAN_PASSIVE_SCAN;
+			if (geo->a[i].flags & LIBIPW_CH_NO_IBSS)
+				a_band->channels[i].flags |=
+					IEEE80211_CHAN_NO_IBSS;
+			if (geo->a[i].flags & LIBIPW_CH_RADAR_DETECT)
+				a_band->channels[i].flags |=
+					IEEE80211_CHAN_RADAR;
+			/* No equivalent for LIBIPW_CH_80211H_RULES,
+			   LIBIPW_CH_UNIFORM_SPREADING, or
+			   LIBIPW_CH_B_ONLY... */
+		}
+		/* point at bitrate info */
+		a_band->bitrates = ipw2200_a_rates;
+		a_band->n_bitrates = ipw2200_num_a_rates;
+
+		wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = a_band;
+	}
+
+	set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
+
+	/* With that information in place, we can now register the wiphy... */
+	if (wiphy_register(wdev->wiphy)) {
+		rc = -EIO;
+		goto out;
+	}
+
+out:
 	mutex_unlock(&priv->mutex);
-	return 0;
+	return rc;
 }
 
 /* PCI driver stuff */
@@ -11540,7 +11625,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
 	if (priv->prom_net_dev)
 		return -EPERM;
 
-	priv->prom_net_dev = alloc_ieee80211(sizeof(struct ipw_prom_priv));
+	priv->prom_net_dev = alloc_ieee80211(sizeof(struct ipw_prom_priv), 1);
 	if (priv->prom_net_dev == NULL)
 		return -ENOMEM;
 
@@ -11559,7 +11644,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
 
 	rc = register_netdev(priv->prom_net_dev);
 	if (rc) {
-		free_ieee80211(priv->prom_net_dev);
+		free_ieee80211(priv->prom_net_dev, 1);
 		priv->prom_net_dev = NULL;
 		return rc;
 	}
@@ -11573,7 +11658,7 @@ static void ipw_prom_free(struct ipw_priv *priv)
 		return;
 
 	unregister_netdev(priv->prom_net_dev);
-	free_ieee80211(priv->prom_net_dev);
+	free_ieee80211(priv->prom_net_dev, 1);
 
 	priv->prom_net_dev = NULL;
 }
@@ -11601,7 +11686,7 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
 	struct ipw_priv *priv;
 	int i;
 
-	net_dev = alloc_ieee80211(sizeof(struct ipw_priv));
+	net_dev = alloc_ieee80211(sizeof(struct ipw_priv), 0);
 	if (net_dev == NULL) {
 		err = -ENOMEM;
 		goto out;
@@ -11749,7 +11834,7 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
 	pci_disable_device(pdev);
 	pci_set_drvdata(pdev, NULL);
       out_free_ieee80211:
-	free_ieee80211(priv->net_dev);
+	free_ieee80211(priv->net_dev, 0);
       out:
 	return err;
 }
@@ -11816,7 +11901,7 @@ static void __devexit ipw_pci_remove(struct pci_dev *pdev)
 	pci_release_regions(pdev);
 	pci_disable_device(pdev);
 	pci_set_drvdata(pdev, NULL);
-	free_ieee80211(priv->net_dev);
+	free_ieee80211(priv->net_dev, 0);
 	free_firmware();
 }
 
diff --git a/drivers/net/wireless/ipw2x00/libipw.h b/drivers/net/wireless/ipw2x00/libipw.h
index cefb942..8f91d34 100644
--- a/drivers/net/wireless/ipw2x00/libipw.h
+++ b/drivers/net/wireless/ipw2x00/libipw.h
@@ -31,6 +31,7 @@
 #include <linux/ieee80211.h>
 
 #include <net/lib80211.h>
+#include <net/cfg80211.h>
 
 #define LIBIPW_VERSION "git-1.1.13"
 
@@ -783,12 +784,15 @@ struct libipw_geo {
 
 struct libipw_device {
 	struct net_device *dev;
+	struct wireless_dev wdev;
 	struct libipw_security sec;
 
 	/* Bookkeeping structures */
 	struct libipw_stats ieee_stats;
 
 	struct libipw_geo geo;
+	struct ieee80211_supported_band bg_band;
+	struct ieee80211_supported_band a_band;
 
 	/* Probe / Beacon management */
 	struct list_head network_free_list;
@@ -1014,8 +1018,8 @@ static inline int libipw_is_cck_rate(u8 rate)
 }
 
 /* ieee80211.c */
-extern void free_ieee80211(struct net_device *dev);
-extern struct net_device *alloc_ieee80211(int sizeof_priv);
+extern void free_ieee80211(struct net_device *dev, int monitor);
+extern struct net_device *alloc_ieee80211(int sizeof_priv, int monitor);
 extern int libipw_change_mtu(struct net_device *dev, int new_mtu);
 
 extern void libipw_networks_age(struct libipw_device *ieee,
diff --git a/drivers/net/wireless/ipw2x00/libipw_module.c b/drivers/net/wireless/ipw2x00/libipw_module.c
index eb2b608..a0e9f6a 100644
--- a/drivers/net/wireless/ipw2x00/libipw_module.c
+++ b/drivers/net/wireless/ipw2x00/libipw_module.c
@@ -62,6 +62,9 @@ MODULE_DESCRIPTION(DRV_DESCRIPTION);
 MODULE_AUTHOR(DRV_COPYRIGHT);
 MODULE_LICENSE("GPL");
 
+struct cfg80211_ops libipw_config_ops = { };
+void *libipw_wiphy_privid = &libipw_wiphy_privid;
+
 static int libipw_networks_allocate(struct libipw_device *ieee)
 {
 	if (ieee->networks)
@@ -140,7 +143,7 @@ int libipw_change_mtu(struct net_device *dev, int new_mtu)
 }
 EXPORT_SYMBOL(libipw_change_mtu);
 
-struct net_device *alloc_ieee80211(int sizeof_priv)
+struct net_device *alloc_ieee80211(int sizeof_priv, int monitor)
 {
 	struct libipw_device *ieee;
 	struct net_device *dev;
@@ -157,10 +160,31 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
 
 	ieee->dev = dev;
 
+	if (!monitor) {
+		ieee->wdev.wiphy = wiphy_new(&libipw_config_ops, 0);
+		if (!ieee->wdev.wiphy) {
+			LIBIPW_ERROR("Unable to allocate wiphy.\n");
+			goto failed_free_netdev;
+		}
+
+		ieee->dev->ieee80211_ptr = &ieee->wdev;
+		ieee->wdev.iftype = NL80211_IFTYPE_STATION;
+
+		/* Fill-out wiphy structure bits we know...  Not enough info
+		   here to call set_wiphy_dev or set MAC address or channel info
+		   -- have to do that in ->ndo_init... */
+		ieee->wdev.wiphy->privid = libipw_wiphy_privid;
+
+		ieee->wdev.wiphy->max_scan_ssids = 1;
+		ieee->wdev.wiphy->max_scan_ie_len = 0;
+		ieee->wdev.wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION)
+						| BIT(NL80211_IFTYPE_ADHOC);
+	}
+
 	err = libipw_networks_allocate(ieee);
 	if (err) {
 		LIBIPW_ERROR("Unable to allocate beacon storage: %d\n", err);
-		goto failed_free_netdev;
+		goto failed_free_wiphy;
 	}
 	libipw_networks_initialize(ieee);
 
@@ -193,19 +217,31 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
 
 	return dev;
 
+failed_free_wiphy:
+	if (!monitor)
+		wiphy_free(ieee->wdev.wiphy);
 failed_free_netdev:
 	free_netdev(dev);
 failed:
 	return NULL;
 }
 
-void free_ieee80211(struct net_device *dev)
+void free_ieee80211(struct net_device *dev, int monitor)
 {
 	struct libipw_device *ieee = netdev_priv(dev);
 
 	lib80211_crypt_info_free(&ieee->crypt_info);
 
 	libipw_networks_free(ieee);
+
+	/* free cfg80211 resources */
+	if (!monitor) {
+		wiphy_unregister(ieee->wdev.wiphy);
+		kfree(ieee->a_band.channels);
+		kfree(ieee->bg_band.channels);
+		wiphy_free(ieee->wdev.wiphy);
+	}
+
 	free_netdev(dev);
 }
 
-- 
1.6.2.5


^ permalink raw reply related

* [PATCH] ath5k: fix print on warning on ath5k_hw_to_driver_rix()
From: Luis R. Rodriguez @ 2009-08-25 18:25 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Luis R. Rodriguez

This was printing the wrong value on the warning. While at it
lets expand this warning to provide a little more useful
information for debugging such as the band and hardware rate
index when possible and clarify what the warning is actually
printing.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---

I hit this warning and found it would be more useful with this.
I can't reproduce this right now, but I believe what I did was
suspend at home and resume at the office. Anyway this should
help clear things up.

 drivers/net/wireless/ath/ath5k/base.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 5056410..a4e69c5 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1136,11 +1136,15 @@ ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix)
 
 	/* return base rate on errors */
 	if (WARN(hw_rix < 0 || hw_rix >= AR5K_MAX_RATES,
-			"hw_rix out of bounds: %x\n", hw_rix))
+		 "hardware rate index out of bounds: %x"
+		 "(band: %s)\n", hw_rix,
+		 sc->curband->band ? "5 GHz" : "2.4 GHz"))
 		return 0;
 
 	rix = sc->rate_idx[sc->curband->band][hw_rix];
-	if (WARN(rix < 0, "invalid hw_rix: %x\n", hw_rix))
+	if (WARN(rix < 0, "invalid driver rate index: %x "
+		 "(hw_rix: %x band: %s)\n", rix, hw_rix,
+		 sc->curband->band ? "5 GHz" : "2.4 GHz"))
 		rix = 0;
 
 	return rix;
-- 
1.6.3.3


^ permalink raw reply related

* net/wireless/sme.c:617 __cfg80211_disconnected+0x20c/0x220 [cfg80211]
From: ASIC Felix @ 2009-08-25 18:21 UTC (permalink / raw)
  To: linux-wireless

Hi,

this seems to get worse with each kernel?
8 traces per hour, one week ago it used to be 2 per hour.

Kernel: 2.6.31-rc7-33384-g4f9ed9c wireless testing
H/W:    Thinkpad T43 1875DLU
Wifi:   klogd: phy0: Atheros AR9280 MAC/BB Rev:2 AR5133 RF Rev:d0

the trace always starts with:
WARNING: at net/wireless/sme.c:617 __cfg80211_disconnected+0x20c/0x220 [cfg80211]()

but for bottom lines of the trace I get some variety.

Best regards,
Felix

ath9k: Set HW Key
ath9k: Set HW RX filter: 0x10
ath9k: Set channel: 2412 MHz
ath9k: tx chmask: 3, rx chmask: 3
ath9k: (2462 MHz) -> (2412 MHz), chanwidth: 0
ath9k: Set channel: 2462 MHz
ath9k: tx chmask: 3, rx chmask: 3
ath9k: (2412 MHz) -> (2462 MHz), chanwidth: 0
ath9k: Set HW RX filter: 0x10
wlan0: deauthenticating by local choice (reason=3)
ath9k: Configure tx [queue/halq] [0/3],  aifs: 2, cw_min: 3, cw_max: 7, txop: 47
ath9k: Configure tx [queue/halq] [1/2],  aifs: 2, cw_min: 7, cw_max: 15, txop: 94
ath9k: Configure tx [queue/halq] [2/1],  aifs: 3, cw_min: 15, cw_max: 1023, txop: 0
ath9k: Configure tx [queue/halq] [3/0],  aifs: 7, cw_min: 15, cw_max: 1023, txop: 0
ath9k: BSS Changed PREAMBLE 0
ath9k: BSS Changed CTS PROT 0
ath9k: BSS Changed ASSOC 0
ath9k: Bss Info DISASSOC
ath9k: Set HW Key
wlan0: deauthenticating by local choice (reason=3)
------------[ cut here ]------------
WARNING: at net/wireless/sme.c:617 __cfg80211_disconnected+0x20c/0x220 [cfg80211]()
Hardware name: 1875DLU
deauth failed: -67
Modules linked in: ath9k mac80211 ath cfg80211 xt_time xt_connlimit xt_realm iptable_raw xt_comment ipt_ULOG ipt_REJECT ipt_REDIRECT ipt_NETMAP ipt_MASQUERADE ipt_LOG ipt_ECN ipt_ecn ipt_ah ipt_addrtype nf_nat_tftp nf_nat_snmp_basic nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda ts_kmp nf_conntrack_amanda nf_conntrack_tftp nf_conntrack_sip nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_tcpmss xt_recent xt_pkttype xt_physdev xt_owner xt_NFQUEUE xt_NFLOG nfnetlink_log xt_multiport xt_MARK xt_mark xt_mac xt_limit xt_length xt_iprange xt_helper xt_hashlimit xt_DSCP xt_dscp xt_dccp xt_conntrack xt_CONNMARK aes_i586 xt_connmark aes_generic xt_CLASSIFY xt_tcpudp xt_state iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack iptable_mangle nfnetlink iptable_filter ip_tables x_tables i915 drm i2c_algo_bit af_packet bridge stp llc bnep sco ipv6 rfcomm l2cap bluetooth binfmt_misc loop fuse cpufreq_ondemand cpufreq_conservative cpufreq_powersave acpi_cpufreq freq_table arc4 snd_intel8x0 ecb snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq joydev nsc_ircc thinkpad_acpi snd_seq_device snd_pcm_oss evdev sg rfkill snd_pcm sr_mod irda snd_timer snd_mixer_oss snd soundcore pcspkr ac tg3 rtc_cmos libphy video output thermal button led_class processor crc_ccitt intel_agp agpgart snd_page_alloc battery yenta_socket rsrc_nonstatic pcmcia_core iTCO_wdt iTCO_vendor_support nvram i2c_i801 i2c_core ehci_hcd uhci_hcd usbcore ata_generic ide_pci_generic ide_gd_mod ide_core pata_acpi ata_piix ahci libata sd_mod scsi_mod crc_t10dif ext3 jbd [last unloaded: cfg80211]
Pid: 935, comm: ip Tainted: G        W  2.6.31-rc7-wl-mnbStrip-33384-g4f9ed9c #69
Call Trace:
 [<f9db31cc>] ? __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<f9db31cc>] ? __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<c013c55c>] warn_slowpath_common+0x6c/0xc0
 [<f9db31cc>] ? __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<c013c5f6>] warn_slowpath_fmt+0x26/0x30
 [<f9db31cc>] __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<f9daff21>] ? nl80211_send_deauth+0x21/0x30 [cfg80211]
 [<f9db1164>] __cfg80211_send_deauth+0x224/0x270 [cfg80211]
 [<f9db11eb>] cfg80211_send_deauth+0x3b/0x70 [cfg80211]
 [<f9e96039>] ieee80211_send_deauth_disassoc+0x119/0x140 [mac80211]
 [<f9e9752f>] ieee80211_mgd_deauth+0xdf/0x100 [mac80211]
 [<f9e9cbe6>] ieee80211_deauth+0x16/0x20 [mac80211]
 [<f9db0346>] __cfg80211_mlme_deauth+0xd6/0x110 [cfg80211]
 [<c010256a>] ? __switch_to+0xba/0x1a0
 [<f9db386a>] __cfg80211_disconnect+0x15a/0x1b0 [cfg80211]
 [<f9da2216>] cfg80211_netdev_notifier_call+0xd6/0x370 [cfg80211]
 [<f7eb39c8>] ? packet_notifier+0x18/0x1a0 [af_packet]
 [<c03ae33d>] notifier_call_chain+0x2d/0x70
 [<c01580aa>] raw_notifier_call_chain+0x1a/0x20
 [<c03318f9>] dev_close+0x49/0xb0
 [<c03ac09e>] ? _spin_unlock_bh+0xe/0x10
 [<c032fa4a>] ? dev_set_rx_mode+0x2a/0x40
 [<c03311d1>] dev_change_flags+0x81/0x1a0
 [<c01611c3>] ? tick_dev_program_event+0x33/0xc0
 [<c033a659>] do_setlink+0x1e9/0x360
 [<c0157061>] ? hrtimer_interrupt+0xd1/0x220
 [<c033babe>] rtnl_newlink+0x3fe/0x4c0
 [<c01191d7>] ? smp_apic_timer_interrupt+0x57/0x90
 [<c0328429>] ? __alloc_skb+0x29/0x120
 [<c0324934>] ? sock_rmalloc+0x34/0x90
 [<c033b6c0>] ? rtnl_newlink+0x0/0x4c0
 [<c033b525>] rtnetlink_rcv_msg+0x165/0x200
 [<c033b3c0>] ? rtnetlink_rcv_msg+0x0/0x200
 [<c0349746>] netlink_rcv_skb+0x76/0xa0
 [<c033b3ac>] rtnetlink_rcv+0x1c/0x30
 [<c034948c>] netlink_unicast+0x23c/0x250
 [<c0349f2b>] netlink_sendmsg+0x1db/0x2d0
 [<c0322bea>] sock_sendmsg+0xea/0x110
 [<c0153550>] ? autoremove_wake_function+0x0/0x50
 [<c0153550>] ? autoremove_wake_function+0x0/0x50
 [<c0127c43>] ? kmap_atomic_prot+0x43/0xe0
 [<c026ed95>] ? copy_from_user+0x35/0x130
 [<c032ad40>] ? verify_iovec+0x30/0xb0
 [<c0322d21>] sys_sendmsg+0x111/0x230
 [<c01a26fe>] ? filemap_fault+0x9e/0x3e0
 [<c01a0f11>] ? unlock_page+0x41/0x50
 [<c01b84f8>] ? __do_fault+0x348/0x410
 [<c01b8d7f>] ? handle_mm_fault+0xff/0x6e0
 [<c03234ba>] sys_socketcall+0xca/0x2a0
 [<c03ae147>] ? do_page_fault+0x1d7/0x3a0
 [<c0103ad4>] sysenter_do_call+0x12/0x28
---[ end trace f75e88764968eac0 ]---
wlan0: deauthenticating by local choice (reason=3)
------------[ cut here ]------------
WARNING: at net/wireless/sme.c:617 __cfg80211_disconnected+0x20c/0x220 [cfg80211]()
Hardware name: 1875DLU
deauth failed: -67
Modules linked in: ath9k mac80211 ath cfg80211 xt_time xt_connlimit xt_realm iptable_raw xt_comment ipt_ULOG ipt_REJECT ipt_REDIRECT ipt_NETMAP ipt_MASQUERADE ipt_LOG ipt_ECN ipt_ecn ipt_ah ipt_addrtype nf_nat_tftp nf_nat_snmp_basic nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda ts_kmp nf_conntrack_amanda nf_conntrack_tftp nf_conntrack_sip nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_tcpmss xt_recent xt_pkttype xt_physdev xt_owner xt_NFQUEUE xt_NFLOG nfnetlink_log xt_multiport xt_MARK xt_mark xt_mac xt_limit xt_length xt_iprange xt_helper xt_hashlimit xt_DSCP xt_dscp xt_dccp xt_conntrack xt_CONNMARK aes_i586 xt_connmark aes_generic xt_CLASSIFY xt_tcpudp xt_state iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack iptable_mangle nfnetlink iptable_filter ip_tables x_tables i915 drm i2c_algo_bit af_packet bridge stp llc bnep sco ipv6 rfcomm l2cap bluetooth binfmt_misc loop fuse cpufreq_ondemand cpufreq_conservative cpufreq_powersave acpi_cpufreq freq_table arc4 snd_intel8x0 ecb snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq joydev nsc_ircc thinkpad_acpi snd_seq_device snd_pcm_oss evdev sg rfkill snd_pcm sr_mod irda snd_timer snd_mixer_oss snd soundcore pcspkr ac tg3 rtc_cmos libphy video output thermal button led_class processor crc_ccitt intel_agp agpgart snd_page_alloc battery yenta_socket rsrc_nonstatic pcmcia_core iTCO_wdt iTCO_vendor_support nvram i2c_i801 i2c_core ehci_hcd uhci_hcd usbcore ata_generic ide_pci_generic ide_gd_mod ide_core pata_acpi ata_piix ahci libata sd_mod scsi_mod crc_t10dif ext3 jbd [last unloaded: cfg80211]
Pid: 935, comm: ip Tainted: G        W  2.6.31-rc7-wl-mnbStrip-33384-g4f9ed9c #69
Call Trace:
 [<f9db31cc>] ? __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<f9db31cc>] ? __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<c013c55c>] warn_slowpath_common+0x6c/0xc0
 [<f9db31cc>] ? __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<c013c5f6>] warn_slowpath_fmt+0x26/0x30
 [<f9db31cc>] __cfg80211_disconnected+0x20c/0x220 [cfg80211]
 [<f9daff21>] ? nl80211_send_deauth+0x21/0x30 [cfg80211]
 [<f9db1164>] __cfg80211_send_deauth+0x224/0x270 [cfg80211]
 [<f9db11eb>] cfg80211_send_deauth+0x3b/0x70 [cfg80211]
 [<f9e96039>] ieee80211_send_deauth_disassoc+0x119/0x140 [mac80211]
 [<f9e9752f>] ieee80211_mgd_deauth+0xdf/0x100 [mac80211]
 [<f9e9cbe6>] ieee80211_deauth+0x16/0x20 [mac80211]
 [<f9db0346>] __cfg80211_mlme_deauth+0xd6/0x110 [cfg80211]
 [<c010256a>] ? __switch_to+0xba/0x1a0
 [<f9db386a>] __cfg80211_disconnect+0x15a/0x1b0 [cfg80211]
 [<f9da2216>] cfg80211_netdev_notifier_call+0xd6/0x370 [cfg80211]
 [<f7eb39c8>] ? packet_notifier+0x18/0x1a0 [af_packet]
 [<c03ae33d>] notifier_call_chain+0x2d/0x70
 [<c01580aa>] raw_notifier_call_chain+0x1a/0x20
 [<c03318f9>] dev_close+0x49/0xb0
 [<c03ac09e>] ? _spin_unlock_bh+0xe/0x10
 [<c032fa4a>] ? dev_set_rx_mode+0x2a/0x40
 [<c03311d1>] dev_change_flags+0x81/0x1a0
 [<c01611c3>] ? tick_dev_program_event+0x33/0xc0
 [<c033a659>] do_setlink+0x1e9/0x360
 [<c0157061>] ? hrtimer_interrupt+0xd1/0x220
 [<c033babe>] rtnl_newlink+0x3fe/0x4c0
 [<c01191d7>] ? smp_apic_timer_interrupt+0x57/0x90
 [<c0328429>] ? __alloc_skb+0x29/0x120
 [<c0324934>] ? sock_rmalloc+0x34/0x90
 [<c033b6c0>] ? rtnl_newlink+0x0/0x4c0
 [<c033b525>] rtnetlink_rcv_msg+0x165/0x200
 [<c033b3c0>] ? rtnetlink_rcv_msg+0x0/0x200
 [<c0349746>] netlink_rcv_skb+0x76/0xa0
 [<c033b3ac>] rtnetlink_rcv+0x1c/0x30
 [<c034948c>] netlink_unicast+0x23c/0x250
 [<c0349f2b>] netlink_sendmsg+0x1db/0x2d0
 [<c0322bea>] sock_sendmsg+0xea/0x110
 [<c0153550>] ? autoremove_wake_function+0x0/0x50
 [<c0153550>] ? autoremove_wake_function+0x0/0x50
 [<c0127c43>] ? kmap_atomic_prot+0x43/0xe0
 [<c026ed95>] ? copy_from_user+0x35/0x130
 [<c032ad40>] ? verify_iovec+0x30/0xb0
 [<c0322d21>] sys_sendmsg+0x111/0x230
 [<c01a26fe>] ? filemap_fault+0x9e/0x3e0
 [<c01a0f11>] ? unlock_page+0x41/0x50
 [<c01b84f8>] ? __do_fault+0x348/0x410
 [<c01b8d7f>] ? handle_mm_fault+0xff/0x6e0
 [<c03234ba>] sys_socketcall+0xca/0x2a0
 [<c03ae147>] ? do_page_fault+0x1d7/0x3a0
 [<c0103ad4>] sysenter_do_call+0x12/0x28
---[ end trace f75e88764968eac1 ]---
wlan0: deauthenticating by local choice (reason=3)
wlan0: deauthenticating by local choice (reason=3)
ath9k: Set HW RX filter: 0x10
ath9k: Set HW RX filter: 0x0
ath9k: Set HW Key
ath9k: Detach Interface
ath9k: Driver halt
ath9k: Starting driver with initial channel: 2462 MHz
ath9k: Attach a VIF of type: 2
ath9k: BSS Changed PREAMBLE 0
ath9k: BSS Changed CTS PROT 0
ath9k: Set channel: 2462 MHz
ath9k: tx chmask: 1, rx chmask: 1
ath9k: (2462 MHz) -> (2462 MHz), chanwidth: 0
ath9k: Configure tx [queue/halq] [0/3],  aifs: 2, cw_min: 3, cw_max: 7, txop: 47
ath9k: Configure tx [queue/halq] [1/2],  aifs: 2, cw_min: 7, cw_max: 15, txop: 94
ath9k: Configure tx [queue/halq] [2/1],  aifs: 3, cw_min: 15, cw_max: 1023, txop: 0
ath9k: Configure tx [queue/halq] [3/0],  aifs: 7, cw_min: 15, cw_max: 1023, txop: 0
ath9k: Set HW RX filter: 0x0
ath9k: Set HW RX filter: 0x0
wlan0: direct probe to AP 00:0b:85:6f:20:8c (try 1)
ath9k: Set HW RX filter: 0x0
wlan0 direct probe responded
wlan0: authenticate with AP 00:0b:85:6f:20:8c (try 1)
cfg80211: Calling CRDA for country: US



^ permalink raw reply

* Re: [PATCH] ath5k: fix print on warning on ath5k_hw_to_driver_rix()
From: Bob Copeland @ 2009-08-25 18:45 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linville, linux-wireless
In-Reply-To: <1251224728-7180-1-git-send-email-lrodriguez@atheros.com>

On Tue, Aug 25, 2009 at 2:25 PM, Luis R.
Rodriguez<lrodriguez@atheros.com> wrote:
> This was printing the wrong value on the warning. While at it
> lets expand this warning to provide a little more useful
> information for debugging such as the band and hardware rate
> index when possible and clarify what the warning is actually
> printing.

>        rix = sc->rate_idx[sc->curband->band][hw_rix];
> -       if (WARN(rix < 0, "invalid hw_rix: %x\n", hw_rix))
> +       if (WARN(rix < 0, "invalid driver rate index: %x "
> +                "(hw_rix: %x band: %s)\n", rix, hw_rix,
> +                sc->curband->band ? "5 GHz" : "2.4 GHz"))

rix will always be -1 here so no real need to print it.

I'm pretty sure band is going to be "the wrong one," because all
instances of this warning I've seen have been valid rate indexes,
like 1 mbit rates when scanning 5 ghz, which could indicate some
race condition with flushing the rx queue on channel changes.  I
haven't yet seen a hw rate we didn't know about.

-- 
Bob Copeland %% www.bobcopeland.com

^ permalink raw reply

* Cross compiling currently broken?
From: Ed W @ 2009-08-25 18:46 UTC (permalink / raw)
  To: linux-wireless

It would appear that there is something broken with the current Makefile 
when crosscompiling - I need a bit of help figuring out a proper solution.

In this case it's barely cross compiling, I just want to use a kernel I 
compiled somewhere, but isn't installed (I'm also in a chroot).  
According to the docs (http://linuxwireless.org/en/users/Download) I 
should do something like:

  make KLIB=/home/mcgrof/kernels/linux-2.6.27.22 \
   KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.27.22

However, the makefile then installs the files in completely the wrong 
location, eg the following puts the files in 
/usr/src/linux/lib/modules/2.6.30.5-grsec-wrap/ !!

  make KLIB=/usr/src/linux \
   KLIB_BUILD=/usr/src/linux install-modules

So KLIB should apparently be something like /lib/modules/xyz.  However, 
this is still wrong because the line below puts the files in: 
/lib/modules/2.6.30.5-grsec-wrap/lib/modules/2.6.30.5-grsec-wrap/

  make KLIB=/lib/modules/2.6.30.5-grsec-wrap/ \
    KLIB_BUILD=/usr/src/linux  install-modules


Adding unsetting KMODPATH_ARG seems to do the trick (but seems unintended?):

  make KLIB=/lib/modules/2.6.30.5-grsec-wrap/ \
    KLIB_BUILD=/usr/src/linux KMODPATH_ARG= install-modules


But I still get repeated errors while building (where this is the 
currently running kernel, but the modules dir is unavailable in this 
chroot):

  FATAL: Could not load 
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such 
file or directory
  FATAL: Could not load 
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such 
file or directory


This appears to be caused by these lines at the top of the makefile:
  MADWIFI=$(shell $(MODPROBE) -l ath_pci)
  OLD_IWL=$(shell $(MODPROBE) -l iwl4965)

Clearly these need some parametrisation to include the running kernel 
name.  Something like this might pluck out the correct
uname:
KERNELRELEASE = $(cat $(KLIB_BUILD)/include/config/kernel.release 2> 
/dev/null)


I'm not quite clear what all the KLIB/KLIB_BUILD vars are supposed to be 
achieving, but at present they aren't working correctly when overridden 
to build a non installed kernel.  I'm surprised more people aren't 
hitting this?

Grateful if someone with a bit more experience could suggest a proper fix?

Thanks

Ed W


^ permalink raw reply

* Re: [PATCH] ath5k: fix print on warning on ath5k_hw_to_driver_rix()
From: Luis R. Rodriguez @ 2009-08-25 18:58 UTC (permalink / raw)
  To: Bob Copeland
  Cc: Luis Rodriguez, linville@tuxdriver.com,
	linux-wireless@vger.kernel.org
In-Reply-To: <b6c5339f0908251145h3a075b86hab00d2223f9acc58@mail.gmail.com>

On Tue, Aug 25, 2009 at 11:45:12AM -0700, Bob Copeland wrote:
> On Tue, Aug 25, 2009 at 2:25 PM, Luis R.
> Rodriguez<lrodriguez@atheros.com> wrote:
> > This was printing the wrong value on the warning. While at it
> > lets expand this warning to provide a little more useful
> > information for debugging such as the band and hardware rate
> > index when possible and clarify what the warning is actually
> > printing.
> 
> >        rix = sc->rate_idx[sc->curband->band][hw_rix];
> > -       if (WARN(rix < 0, "invalid hw_rix: %x\n", hw_rix))
> > +       if (WARN(rix < 0, "invalid driver rate index: %x "
> > +                "(hw_rix: %x band: %s)\n", rix, hw_rix,
> > +                sc->curband->band ? "5 GHz" : "2.4 GHz"))
> 
> rix will always be -1 here so no real need to print it.

OK how about the band info, think that's useful?

> I'm pretty sure band is going to be "the wrong one," because all
> instances of this warning I've seen have been valid rate indexes,
> like 1 mbit rates when scanning 5 ghz, 

I got this on 0x1b which is ATH5K_RATE_CODE_1M, I was suspecting
the same.

> which could indicate some
> race condition with flushing the rx queue on channel changes.

I'll see if I can reproduce somehow.

> I haven't yet seen a hw rate we didn't know about.

So you've seen this lately as well?

  Luis

^ permalink raw reply

* Re: Cross compiling currently broken?
From: Luis R. Rodriguez @ 2009-08-25 19:08 UTC (permalink / raw)
  To: Ed W; +Cc: linux-wireless
In-Reply-To: <4A94319B.9030903@wildgooses.com>

On Tue, Aug 25, 2009 at 11:46 AM, Ed W<lists@wildgooses.com> wrote:
> /lib/modules/xyz.

I use /lib/modules/xyz/build just fine.

mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$
./scripts/driver-select ath9k
Processing new driver-select request...
Backing up makefile: Makefile.bk
Backing up makefile: drivers/net/wireless/Makefile.bk
Backing up makefile: drivers/net/wireless/ath/Makefile.bk
Backing up makefile: net/wireless/Makefile.bk
Backing up makefile: drivers/ssb/Makefile.bk
Backing up makefile: drivers/net/usb/Makefile.bk
Backing up makefile: drivers/misc/eeprom/Makefile.bk

mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ make
KLIB=/lib/modules/2.6.27-02062726-generic/build/
KLIB_BUILD=/lib/modules/2.6.27-02062726-generic/build/
./scripts/gen-compat-autoconf.sh config.mk > include/linux/compat_autoconf.h
make -C /lib/modules/2.6.27-02062726-generic/build/
M=/home/mcgrof/devel/compat-wireless-2.6 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-02062726-generic'
  LD      /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/built-in.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/main.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/regd.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath.o
  LD      /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/built-in.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/hw.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom_def.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom_4k.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom_9287.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/mac.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/calib.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ani.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/phy.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/beacon.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/main.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/recv.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/xmit.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/virtual.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/rc.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/pci.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ath9k.o
  LD      /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/built-in.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/main.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/sta_info.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/wep.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/wpa.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/scan.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/ht.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/agg-tx.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/agg-rx.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/ibss.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mlme.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/iface.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/michael.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/tkip.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/aes_ccm.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/aes_cmac.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/cfg.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rx.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/spectmgmt.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/tx.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/key.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/util.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/wme.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/event.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/led.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs_sta.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs_netdev.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs_key.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh_pathtbl.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh_plink.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh_hwmp.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/pm.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_pid_algo.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_pid_debugfs.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_minstrel.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_minstrel_debugfs.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mac80211.o
  LD      /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/built-in.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/core.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/input.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/rfkill_backport.o
  LD      /home/mcgrof/devel/compat-wireless-2.6/net/wireless/built-in.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/core.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/sysfs.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/radiotap.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/util.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/reg.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/scan.o
/home/mcgrof/devel/compat-wireless-2.6/net/wireless/scan.c: In
function ‘cfg80211_bss_update’:
/home/mcgrof/devel/compat-wireless-2.6/net/wireless/scan.c:422:
warning: unused variable ‘used’
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/nl80211.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/mlme.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/ibss.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/sme.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/chan.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/wext-compat.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/wext-sme.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.28.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.29.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.30.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.31.o
  CC [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.32.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/cfg80211.o
  LD      /home/mcgrof/devel/compat-wireless-2.6/built-in.o
  Building modules, stage 2.
  MODPOST 5 modules
  CC      /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath.mod.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath.ko
  CC      /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ath9k.mod.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ath9k.ko
  CC      /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mac80211.mod.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mac80211.ko
  CC      /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/rfkill_backport.mod.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/rfkill_backport.ko
  CC      /home/mcgrof/devel/compat-wireless-2.6/net/wireless/cfg80211.mod.o
  LD [M]  /home/mcgrof/devel/compat-wireless-2.6/net/wireless/cfg80211.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-02062726-generic'

  Luis
  Luis

^ permalink raw reply

* Re: Cross compiling currently broken?
From: Ed W @ 2009-08-25 19:26 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless
In-Reply-To: <43e72e890908251208r1451b54bt36b431ba5942917a@mail.gmail.com>

Hi

> I use /lib/modules/xyz/build just fine.
>   

Can you adapt your environment to be a little closer to mine?

For example if you don't have /lib/modules/'uname -r` available do you 
get the nasty errors that I see?

> mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ make
> KLIB=/lib/modules/2.6.27-02062726-generic/build/
> KLIB_BUILD=/lib/modules/2.6.27-02062726-generic/build/
>   

Is the above all on one line?  Assuming so then can you please try this:

> mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ make
> KLIB=/lib/modules/2.6.27-02062726-generic/build/
> KLIB_BUILD=/lib/modules/2.6.27-02062726-generic/build/ install-modules
>   

I would expect your modules to end up in

/lib/modules/2.6.27-02062726-generic/build/lib/modules/2.6.27-02062726-generic/build/

(If you read the above you can presumably see what has happened)
 

Is this the case for you?

Your make output varies from mine (compat-wireless-2009-8-24), one of us 
obviously has somewhat newer build file - perhaps the make file just 
changed?

Thanks for your comments

Ed W

^ permalink raw reply

* Re: [PATCH] atheros: add ar9170.fw 1-stage firmware
From: Richard Farina @ 2009-08-25 19:26 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: dwmw2@infradead.org, linux-wireless@vger.kernel.org
In-Reply-To: <20090820202817.GB18102@mosca>

Luis R. Rodriguez wrote:
> On Thu, Aug 20, 2009 at 01:07:57PM -0700, Richard Farina wrote:
>   
>> Luis R. Rodriguez wrote:
>>     
>>> This adds support for ar9170 for using a 1-stage firmware.
>>> This means only 1 firmware file is required. AVM Fritz
>>> devices require this.
>>>
>>> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
>>> ---
>>>
>>> Here is a resend, noticed today this wasn't yet in the tree.
>>>
>>>
>>>       
>> Last I tested this firmware it didn't seem to function nearly as well as
>> the 2 stage firmware, and if present, the 1 stage overrides the 2
>> stage. 
>>     
>
> Can you be more specific than that?
>
>   
>> Is this an improved version? 
>>     
>
> No, it is the same firmware.
>
>   
>> Does this work properly in your testing?
>>     
>
> Works for me, and is also required for usage of AVM Fritz devices.
>
>   
I apologize for my confusion.  Since we spoke on irc I am now clear that 
this specific ar9170 firmware is slightly different than the open source 
one available in git and seems a bit more stable than the 2 stage I was 
previously using.  I have tested monitor mode and packet injection which 
are the only things that interest me about this device at the moment and 
both appear slightly more stable using the 1 stage firmware. Please do 
add the firmware located at 
http://www.kernel.org/pub/linux/kernel/people/mcgrof/firmware/ar9170/ar9170.fw 
to the linux firmware git repo.  I believe that it would be a benefit to 
many.

ACKED BY: Rick Farina
TESTED BY: Rick Farina

On a similar note, the open firmware has had issues reported by many 
with speed and stability so I wouldn't recommend using it yet, but this 
is mostly based on the complaints I've heard rather than my own personal 
testing so remember a grain of salt.

Thanks,
Rick Farina

>   Luis
>
>   


^ permalink raw reply

* Re: [PATCH] ath5k: fix print on warning on ath5k_hw_to_driver_rix()
From: Bob Copeland @ 2009-08-25 19:22 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org
In-Reply-To: <20090825185842.GA7357@mosca>

On Tue, Aug 25, 2009 at 2:58 PM, Luis R.
Rodriguez<lrodriguez@atheros.com> wrote:
> OK how about the band info, think that's useful?

Yeah, band is useful.  We don't have to pretty print it though
(unless you really feel like it), %d would work just as well.

Also WARN_ON_ONCE might be a good idea.

>> which could indicate some
>> race condition with flushing the rx queue on channel changes.
>
> I'll see if I can reproduce somehow.
>
>> I haven't yet seen a hw rate we didn't know about.
>
> So you've seen this lately as well?

I saw it some time ago, but then changed the order of how the
curchan/curband variables were set when we change channels and
haven't seen since.  But kerneloops says a lot of other people
are still hitting it as well :(

Hmm, ath5k_rx_stop probably wants an equivalent to txq_drainq in
there somewhere.

-- 
Bob Copeland %% www.bobcopeland.com

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox