linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* p54: AP mode: no data frame despite traffic indication set in TIM
@ 2008-11-21 14:12 Stefan Steuerwald
  2008-11-24 13:36 ` Stefan Steuerwald
  2008-11-24 13:37 ` Johannes Berg
  0 siblings, 2 replies; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-21 14:12 UTC (permalink / raw)
  To: linux-wireless

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

I got another one to lay out before you for comment:

Setup:
- XG-601 card (ISL3880) with p54pci driver in AP mode
- iPod Touch 2G (firmware 2.1.1) as the only client

The client does an http request and waits for an answer. In this case,
the web server answers, but the answer seemingly is never sent over
the air.

Please see the attached pcap:
- frame 7: http request
- frame 13: iPod goes to sleep
- frame 23: AP beacon indicates traffic for iPod (AID 1 in TIM)
- frame 25: iPod wakes up
- in between: MISSING DATA ???
- frame 27: AP beacon with no traffic indicated ???
- frame 29: iPod goes to sleep again
- subsequent frames: repetitions of this, until the TCP connection is closed

My understanding is that the AP would not indicate any traffic without
actually having some ready to send? Wrong assumption?

Both the iPod and the monitoring device seem to agree the http reply
is not there. This would be a good reason for the application-level
timeouts I'm seeing.

Best wishes,
  Stefan.


See also: previous conversation about app-level timeouts and powersave:
http://article.gmane.org/gmane.linux.kernel.wireless.general/24278

[-- Attachment #2: ipod-no-data-despite-traffic-in-tim.pcap --]
[-- Type: application/cap, Size: 13587 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-21 14:12 p54: AP mode: no data frame despite traffic indication set in TIM Stefan Steuerwald
@ 2008-11-24 13:36 ` Stefan Steuerwald
  2008-11-24 13:41   ` Johannes Berg
  2008-11-24 13:37 ` Johannes Berg
  1 sibling, 1 reply; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-24 13:36 UTC (permalink / raw)
  To: linux-wireless; +Cc: Johannes Berg

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

- Compiled verbose and powersave debugging into the kernel
- Using hostapd 0.6.6 with listen_interval fix
- Moved my monitoring device to the machine acting as AP so timestamps
are synced between the various logs

I see "dropped TX filtered frame" messages in the syslog when at the
same time I see wireless packet sequences as described below. Please
see the attached logs.

Capture:

- frame 1158: my client does a http request
- frame 1168: iPod goes to sleep
- frame 1170: many beacons (with TIM bit set after some time)
- frame 1199: iPod wakes up (presumably answering the "traffic for you" beacons)
- ??? MISSING DATA ???
- frame 1201: beacons with no TIM bit set (so data got sent or dropped?)
- frame 1204: iPod goes to sleep again

In the syslog we find at the corresponding time:

Nov 24 13:49:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send
PS frame since STA not sleeping anymore
Nov 24 13:49:11 alix kernel: phy0: dropped TX filtered frame,
queue_len=0 PS=0 @135594
Nov 24 13:49:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters
power save mode

which may explain why I don't see any data packet on the air. Also
attached is hostapd log.

This repeats several times until the final "http OK" which only
succeeds because I have grossly extended the timeout of my app.
However, the delay of several seconds between http request and server
response is intended and normal.

I have numerous occurrences of this sequence, easy to reproduce.

Another thing is the fact that we see 24(!) consecutive beacons with
TIM bit set until the iPod finally wakes up. It seems to be lying to
the AP, as it advertises a listen_interval of only 10. May this cause
the above?

In case better debug output is needed or you need me to try out
something, please shout.

Best regards,
  Stefan.


2008/11/21 Stefan Steuerwald <salsasepp@googlemail.com>:
> I got another one to lay out before you for comment:
>
> Setup:
> - XG-601 card (ISL3880) with p54pci driver in AP mode
> - iPod Touch 2G (firmware 2.1.1) as the only client
>
> The client does an http request and waits for an answer. In this case,
> the web server answers, but the answer seemingly is never sent over
> the air.
>
> Please see the attached pcap:
> - frame 7: http request
> - frame 13: iPod goes to sleep
> - frame 23: AP beacon indicates traffic for iPod (AID 1 in TIM)
> - frame 25: iPod wakes up
> - in between: MISSING DATA ???
> - frame 27: AP beacon with no traffic indicated ???
> - frame 29: iPod goes to sleep again
> - subsequent frames: repetitions of this, until the TCP connection is closed
>
> My understanding is that the AP would not indicate any traffic without
> actually having some ready to send? Wrong assumption?
>
> Both the iPod and the monitoring device seem to agree the http reply
> is not there. This would be a good reason for the application-level
> timeouts I'm seeing.
>
> Best wishes,
>  Stefan.
>
>
> See also: previous conversation about app-level timeouts and powersave:
> http://article.gmane.org/gmane.linux.kernel.wireless.general/24278
>

[-- Attachment #2: ipod-patched-verbose.pcap.gz --]
[-- Type: application/x-gzip, Size: 42299 bytes --]

[-- Attachment #3: ipod-patched-verbose-syslog.gz --]
[-- Type: application/x-gzip, Size: 1477 bytes --]

[-- Attachment #4: ipod-patched-verbose-hostapd.log.gz --]
[-- Type: application/x-gzip, Size: 3478 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-21 14:12 p54: AP mode: no data frame despite traffic indication set in TIM Stefan Steuerwald
  2008-11-24 13:36 ` Stefan Steuerwald
@ 2008-11-24 13:37 ` Johannes Berg
  2008-11-24 15:19   ` Christian Lamparter
  1 sibling, 1 reply; 20+ messages in thread
From: Johannes Berg @ 2008-11-24 13:37 UTC (permalink / raw)
  To: Stefan Steuerwald; +Cc: linux-wireless, Chr

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

On Fri, 2008-11-21 at 15:12 +0100, Stefan Steuerwald wrote:

> - frame 7: http request
> - frame 13: iPod goes to sleep
> - frame 23: AP beacon indicates traffic for iPod (AID 1 in TIM)

in 24 too, the ipod probably didn't see the beacon in frame 23 even
though 23 was a dtim beacon (which is a bit odd, but maybe the ipod
doesn't care about mcast at this point)

> - frame 25: iPod wakes up

26: ack from the AP

> - in between: MISSING DATA ???
> - frame 27: AP beacon with no traffic indicated ???
> - frame 29: iPod goes to sleep again
> - subsequent frames: repetitions of this, until the TCP connection is closed
> 
> My understanding is that the AP would not indicate any traffic without
> actually having some ready to send? Wrong assumption?

Indeed. Christian, is it possible that the p54 device is actually
filtering these frames? I'm pretty sure mac80211 behaves correctly, and
it unsetting the TIM bit means that it must no longer have traffic
buffered.

johannes

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-24 13:36 ` Stefan Steuerwald
@ 2008-11-24 13:41   ` Johannes Berg
  0 siblings, 0 replies; 20+ messages in thread
From: Johannes Berg @ 2008-11-24 13:41 UTC (permalink / raw)
  To: Stefan Steuerwald; +Cc: linux-wireless, Chr

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

On Mon, 2008-11-24 at 14:36 +0100, Stefan Steuerwald wrote:

> I see "dropped TX filtered frame" messages in the syslog when at the
> same time I see wireless packet sequences as described below. Please
> see the attached logs.

Ah, very good, thank you.

> Nov 24 13:49:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send
> PS frame since STA not sleeping anymore
> Nov 24 13:49:11 alix kernel: phy0: dropped TX filtered frame,
> queue_len=0 PS=0 @135594

That confirms my suspicion that something is going on with p54.
Christian, can you review the comment in net/mac80211/main.c around line
400, the one about races, wrt. p54?

> which may explain why I don't see any data packet on the air. Also
> attached is hostapd log.

Indeed.

> Another thing is the fact that we see 24(!) consecutive beacons with
> TIM bit set until the iPod finally wakes up. It seems to be lying to
> the AP, as it advertises a listen_interval of only 10. May this cause
> the above?

That is another issue, yes, but probably not causing it, we'd be seeing
"expired buffered frame" messages if it was, I think.

johannes

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-24 13:37 ` Johannes Berg
@ 2008-11-24 15:19   ` Christian Lamparter
  2008-11-24 16:51     ` Stefan Steuerwald
  0 siblings, 1 reply; 20+ messages in thread
From: Christian Lamparter @ 2008-11-24 15:19 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Stefan Steuerwald, linux-wireless

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

On Monday 24 November 2008 14:37:54 Johannes Berg wrote:
> On Fri, 2008-11-21 at 15:12 +0100, Stefan Steuerwald wrote:
> 
> > - frame 7: http request
> > - frame 13: iPod goes to sleep
> > - frame 23: AP beacon indicates traffic for iPod (AID 1 in TIM)
> 
> in 24 too, the ipod probably didn't see the beacon in frame 23 even
> though 23 was a dtim beacon (which is a bit odd, but maybe the ipod
> doesn't care about mcast at this point)
> 
> > - frame 25: iPod wakes up
> 
> 26: ack from the AP
> 
> > - in between: MISSING DATA ???
> > - frame 27: AP beacon with no traffic indicated ???
> > - frame 29: iPod goes to sleep again
> > - subsequent frames: repetitions of this, until the TCP connection is closed
> > 
> > My understanding is that the AP would not indicate any traffic without
> > actually having some ready to send? Wrong assumption?
> 
> Indeed. Christian, is it possible that the p54 device is actually
> filtering these frames? I'm pretty sure mac80211 behaves correctly, and
> it unsetting the TIM bit means that it must no longer have traffic
> buffered.
As far as I know it works like this:
If a frame with a the PS-Bit in the FC set is received, the firmware
will mark the source mac / aid as "sleeping". And every frame from
this moment on for this device will be buffered.

To remove the "mark" again, the driver has to call p54_sta_unlock.
And the firmware will send out all buffered frames.
Or if we only need for one frame (e.g: probe resp) we have a tx_flag (_NO_CANCEL)

If for some reason the "mark" doesn't get removed the firmware will eventually timeout
the stuck frame and sets a the P54_TX_PSM_CANCELLED flag in tx_status.
And we pass this on to the mac with IEEE80211_TX_STAT_TX_FILTERED.

one thing: p54 reports the tx_status through the rx-ring-buffer.
so I hope there's no rx/tx race here since everything is in the same "boat" here.

based on that:
I made two different patches to address the problem.

one fiddles with mac80211 only (set-and-clear.diff).
It assumes that if a station comes out of PS, we have to set
the CLEAR_PS_FILT on the same time we clear the WLAN_STA_PS.

the other one is only for p54 (p54-sta-flags.diff)... Doesn't do very much,
it just checks if the CLEAR_PS_FILT is set and then sets the
NO_CANCEL flag on that frame, so the firmware won't buffer it.

Of course you can test both patches on the same time, if it doesn't help.

And finally of course, I could be totally wrong and this is all nothing but useless gibberish.

Regards,
	Chr

BTW: I couldn't test the patches, so it may OOps

[-- Attachment #2: set-and-clear.diff --]
[-- Type: text/x-diff, Size: 930 bytes --]

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 5a1a60f..077fdb7 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -657,7 +657,8 @@ static void ap_sta_ps_start(struct sta_info *sta)
 	DECLARE_MAC_BUF(mac);
 
 	atomic_inc(&sdata->bss->num_sta_ps);
-	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
+	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL |
+				WLAN_STA_CLEAR_PS_FILT);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
 	printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
 	       sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
@@ -674,7 +675,8 @@ static int ap_sta_ps_end(struct sta_info *sta)
 
 	atomic_dec(&sdata->bss->num_sta_ps);
 
-	clear_sta_flags(sta, WLAN_STA_PS | WLAN_STA_PSPOLL);
+	set_and_clear_sta_flags(sta, WLAN_STA_CLEAR_PS_FILT,
+				WLAN_STA_PS | WLAN_STA_PSPOLL);
 
 	if (!skb_queue_empty(&sta->ps_tx_buf))
 		sta_info_clear_tim_bit(sta);

[-- Attachment #3: p54-sta-flags.diff --]
[-- Type: text/x-diff, Size: 1973 bytes --]

diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
--- a/drivers/net/wireless/p54/p54common.c	2008-11-24 13:07:09.053832187 +0100
+++ b/drivers/net/wireless/p54/p54common.c	2008-11-24 16:03:26.862045588 +0100
@@ -1067,9 +1067,15 @@ static int p54_tx_fill(struct ieee80211_
 			*queue = 3;
 			return 0;
 		}
-		if (info->control.sta)
+		if (info->control.sta) {
+			if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
+				ret = p54_sta_unlock(dev, info->control.sta->addr);
+				if (ret)
+					return ret;
+				*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
+			}
 			*aid = info->control.sta->aid;
-		else
+		} else
 			*flags = P54_HDR_FLAG_DATA_OUT_NOCANCEL;
 	}
 	return ret;
@@ -1083,7 +1089,7 @@ static int p54_tx(struct ieee80211_hw *d
 	struct p54_hdr *hdr;
 	struct p54_tx_data *txhdr;
 	size_t padding, len, tim_len = 0;
-	int i, j, ridx;
+	int i, j, ridx, ret;
 	u16 hdr_flags = 0, aid = 0;
 	u8 rate, queue;
 	u8 cts_rate = 0x20;
@@ -1093,7 +1099,10 @@ static int p54_tx(struct ieee80211_hw *d
 
 	queue = skb_get_queue_mapping(skb);
 
-	if (p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid)) {
+	ret = p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid);
+	if (ret < 0)
+		return NETDEV_TX_BUSY;
+	if (ret) {
 		current_queue = &priv->tx_stats[queue];
 		if (unlikely(current_queue->len > current_queue->limit))
 			return NETDEV_TX_BUSY;
@@ -1106,17 +1115,6 @@ static int p54_tx(struct ieee80211_hw *d
 	padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3;
 	len = skb->len;
 
-	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
-		if (info->control.sta)
-			if (p54_sta_unlock(dev, info->control.sta->addr)) {
-				if (current_queue) {
-					current_queue->len--;
-					current_queue->count--;
-				}
-				return NETDEV_TX_BUSY;
-			}
-	}
-
 	txhdr = (struct p54_tx_data *) skb_push(skb, sizeof(*txhdr) + padding);
 	hdr = (struct p54_hdr *) skb_push(skb, sizeof(*hdr));
 

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-24 15:19   ` Christian Lamparter
@ 2008-11-24 16:51     ` Stefan Steuerwald
  0 siblings, 0 replies; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-24 16:51 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Johannes Berg, linux-wireless

Thanks again Christian and Johannes,

from a first quick check
- set-and-clear.diff doesn't seem to change anything
- both patches together freeze my system

I don't have a serial console on this embedded thing, so I don't know
its death poem yet. Let me set up my debug environment properly and
report back to you.

Stefan.


2008/11/24 Christian Lamparter <chunkeey@web.de>:
> On Monday 24 November 2008 14:37:54 Johannes Berg wrote:
>> On Fri, 2008-11-21 at 15:12 +0100, Stefan Steuerwald wrote:
>>
>> > - frame 7: http request
>> > - frame 13: iPod goes to sleep
>> > - frame 23: AP beacon indicates traffic for iPod (AID 1 in TIM)
>>
>> in 24 too, the ipod probably didn't see the beacon in frame 23 even
>> though 23 was a dtim beacon (which is a bit odd, but maybe the ipod
>> doesn't care about mcast at this point)
>>
>> > - frame 25: iPod wakes up
>>
>> 26: ack from the AP
>>
>> > - in between: MISSING DATA ???
>> > - frame 27: AP beacon with no traffic indicated ???
>> > - frame 29: iPod goes to sleep again
>> > - subsequent frames: repetitions of this, until the TCP connection is closed
>> >
>> > My understanding is that the AP would not indicate any traffic without
>> > actually having some ready to send? Wrong assumption?
>>
>> Indeed. Christian, is it possible that the p54 device is actually
>> filtering these frames? I'm pretty sure mac80211 behaves correctly, and
>> it unsetting the TIM bit means that it must no longer have traffic
>> buffered.
> As far as I know it works like this:
> If a frame with a the PS-Bit in the FC set is received, the firmware
> will mark the source mac / aid as "sleeping". And every frame from
> this moment on for this device will be buffered.
>
> To remove the "mark" again, the driver has to call p54_sta_unlock.
> And the firmware will send out all buffered frames.
> Or if we only need for one frame (e.g: probe resp) we have a tx_flag (_NO_CANCEL)
>
> If for some reason the "mark" doesn't get removed the firmware will eventually timeout
> the stuck frame and sets a the P54_TX_PSM_CANCELLED flag in tx_status.
> And we pass this on to the mac with IEEE80211_TX_STAT_TX_FILTERED.
>
> one thing: p54 reports the tx_status through the rx-ring-buffer.
> so I hope there's no rx/tx race here since everything is in the same "boat" here.
>
> based on that:
> I made two different patches to address the problem.
>
> one fiddles with mac80211 only (set-and-clear.diff).
> It assumes that if a station comes out of PS, we have to set
> the CLEAR_PS_FILT on the same time we clear the WLAN_STA_PS.
>
> the other one is only for p54 (p54-sta-flags.diff)... Doesn't do very much,
> it just checks if the CLEAR_PS_FILT is set and then sets the
> NO_CANCEL flag on that frame, so the firmware won't buffer it.
>
> Of course you can test both patches on the same time, if it doesn't help.
>
> And finally of course, I could be totally wrong and this is all nothing but useless gibberish.
>
> Regards,
>        Chr
>
> BTW: I couldn't test the patches, so it may OOps
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
@ 2008-11-24 20:24 Christian Lamparter
  2008-11-26 13:38 ` Stefan Steuerwald
  0 siblings, 1 reply; 20+ messages in thread
From: Christian Lamparter @ 2008-11-24 20:24 UTC (permalink / raw)
  To: Stefan Steuerwald; +Cc: Johannes Berg, linux-wireless

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

On Monday 24 November 2008 17:51:45 Stefan Steuerwald wrote:
> Thanks again Christian and Johannes,
> 
> from a first quick check
> - set-and-clear.diff doesn't seem to change anything
> - both patches together freeze my system
> 
> I don't have a serial console on this embedded thing, so I don't know
> its death poem yet. Let me set up my debug environment properly and
> report back to you.

This might not be necessary.

Try this updated patch. And let us know if we no do the right thing.

Regards,
	Chr

[-- Attachment #2: p54-sta-flags-v2.diff --]
[-- Type: text/x-diff, Size: 2316 bytes --]

diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
--- a/drivers/net/wireless/p54/p54common.c	2008-11-24 13:07:09.053832187 +0100
+++ b/drivers/net/wireless/p54/p54common.c	2008-11-24 21:05:42.590287518 +0100
@@ -688,7 +688,8 @@ static void p54_rx_frame_sent(struct iee
 			}
 		}
 
-		priv->tx_stats[entry_data->hw_queue].len--;
+		if (priv->tx_stats[entry_data->hw_queue].len > 0)
+			priv->tx_stats[entry_data->hw_queue].len--;
 		if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) &&
 		     (!payload->status))
 			info->flags |= IEEE80211_TX_STAT_ACK;
@@ -1067,9 +1068,15 @@ static int p54_tx_fill(struct ieee80211_
 			*queue = 3;
 			return 0;
 		}
-		if (info->control.sta)
+		if (info->control.sta) {
+			if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
+				ret = p54_sta_unlock(dev, info->control.sta->addr);
+				if (ret)
+					return ret;
+				*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
+			}
 			*aid = info->control.sta->aid;
-		else
+		} else
 			*flags = P54_HDR_FLAG_DATA_OUT_NOCANCEL;
 	}
 	return ret;
@@ -1083,7 +1090,7 @@ static int p54_tx(struct ieee80211_hw *d
 	struct p54_hdr *hdr;
 	struct p54_tx_data *txhdr;
 	size_t padding, len, tim_len = 0;
-	int i, j, ridx;
+	int i, j, ridx, ret;
 	u16 hdr_flags = 0, aid = 0;
 	u8 rate, queue;
 	u8 cts_rate = 0x20;
@@ -1093,7 +1100,10 @@ static int p54_tx(struct ieee80211_hw *d
 
 	queue = skb_get_queue_mapping(skb);
 
-	if (p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid)) {
+	ret = p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid);
+	if (ret < 0)
+		return NETDEV_TX_BUSY;
+	if (ret) {
 		current_queue = &priv->tx_stats[queue];
 		if (unlikely(current_queue->len > current_queue->limit))
 			return NETDEV_TX_BUSY;
@@ -1106,17 +1116,6 @@ static int p54_tx(struct ieee80211_hw *d
 	padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3;
 	len = skb->len;
 
-	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
-		if (info->control.sta)
-			if (p54_sta_unlock(dev, info->control.sta->addr)) {
-				if (current_queue) {
-					current_queue->len--;
-					current_queue->count--;
-				}
-				return NETDEV_TX_BUSY;
-			}
-	}
-
 	txhdr = (struct p54_tx_data *) skb_push(skb, sizeof(*txhdr) + padding);
 	hdr = (struct p54_hdr *) skb_push(skb, sizeof(*hdr));
 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-24 20:24 p54: AP mode: no data frame despite traffic indication set in TIM Christian Lamparter
@ 2008-11-26 13:38 ` Stefan Steuerwald
  2008-11-26 21:13   ` Christian Lamparter
  0 siblings, 1 reply; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-26 13:38 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Johannes Berg, linux-wireless

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

Almost there, almost there!!! :-)

Using all of the attached three patches my problem seems gone:
- I no longer see any "dropped TX filtered" messages in syslog
- My app no longer times out

p54_sta_flags_v2.diff alone does not change anything for me.
Johannes' patch alone MAY reduce the frequency of my app-level
timeouts, but I have only gut feeling to support that.
All three together do it.

Patches attached in original form for reference.

However, after some time, the kernel oopses. Console output below.
I watched this several times, and it always happens after seeing these
last two lines in syslog:348 :
  Nov 26 14:16:32 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer
(entries before 0)
  Nov 26 14:16:32 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer
(entries before 1)

Does this help? Anything you need me to try, I have this hardware only
until tomorrow. It gets back to me after Dec 7.

Thanks! Great work so far!
  Stefan.

---

Console:

console [netcon0] enabled
netconsole: network logging started
BUG: unable to handle kernel NULL pointer dereference at 00000038
IP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common]
*pde = 00000000
Oops: 0000 [#1]
last sysfs file: /sys/class/net/lo/operstate
Modules linked in: netconsole ipv6 loop evdev ehci_hcd ohci_hcd
rtc_cmos rtc_core pcspkr rtc_lib p54pci usbcore via_rhine p54common
geode_aes mii [last unloaded: netconsole]

Pid: 0, comm: swapper Not tainted (2.6.28-rc6-wl #16)
EIP: 0060:[<d08260fa>] EFLAGS: 00010002 CPU: 0
EIP is at p54_assign_address+0x67/0x14b [p54common]
EAX: cf98b178 EBX: cf86ee40 ECX: 00000000 EDX: 00000000
ESI: 000000f8 EDI: 00000000 EBP: 0002027c ESP: c03f9c4c
 DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
Process swapper (pid: 0, ti=c03f8000 task=c03c4380 task.ti=c03f8000)
Stack:
 00000002 ce4d5880 ce4c48b4 cf86e1a0 00000000 00000038 00020200 00000286
 cf86ee40 00000004 ce4d58b2 ce4d588c d0826fd7 00000090 014c48d4 ce4c48b4
 cf86e1a0 0086ee40 00000004 02000282 ce4c48d4 cf86ef10 cf86ee40 ce4d5880
Call Trace:
 [<d0826fd7>] p54_tx+0x416/0x482 [p54common]
 [<c02fb7c2>] __ieee80211_tx+0x35/0xf8
 [<c02fc235>] ieee80211_master_start_xmit+0x2ab/0x396
 [<c01048d3>] common_interrupt+0x23/0x30
 [<c0297368>] dev_hard_start_xmit+0x16e/0x1c9
 [<c02a3518>] __qdisc_run+0xa2/0x15c
 [<c0297796>] dev_queue_xmit+0x2f5/0x3c5
 [<c02f8608>] ieee80211_invoke_rx_handlers+0x488/0x1486
 [<c02d9d14>] bictcp_cong_avoid+0x10/0x160
 [<c02bd904>] tcp_ack+0x16f0/0x1850
 [<c01170f0>] enqueue_task_fair+0x12a/0x16b
 [<c02c0c37>] tcp_current_mss+0x6b/0xe4
 [<c02f9b50>] __ieee80211_rx_handle_packet+0x54a/0x56d
 [<c02fa1fe>] __ieee80211_rx+0x491/0x4e3
 [<c02ec95d>] ieee80211_tasklet_handler+0x60/0xd6
 [<c011cfae>] tasklet_action+0x3e/0x64
 [<c011d305>] __do_softirq+0x4a/0xbc
 [<c011d399>] do_softirq+0x22/0x26
 [<c011d44f>] irq_exit+0x25/0x55
 [<c0105996>] do_IRQ+0x5a/0x6c
 [<c01048d3>] common_interrupt+0x23/0x30
 [<c0108743>] default_idle+0x25/0x38
 [<c0102926>] cpu_idle+0x41/0x5b
Code: 0f 84 01 01 00 00 9c 8f 44 24 1c fa 8b 53 10 31 ff 89 6c 24 18
89 14 24 31 d2 eb 3f 8b 4c 24 10 83 c1 38 89 4c 24 14 8b 4c 24 10 <8b>
41 38 29 e8 85 d2 75 0d 39 f0 72 09 8b 51 04 29 f0 89 6c 24
EIP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common] SS:ESP 0068:c03f9c4c
Kernel panic - not syncing: Fatal exception in interrupt




2008/11/24 Christian Lamparter <chunkeey@web.de>:
> On Monday 24 November 2008 17:51:45 Stefan Steuerwald wrote:
>> Thanks again Christian and Johannes,
>>
>> from a first quick check
>> - set-and-clear.diff doesn't seem to change anything
>> - both patches together freeze my system
>>
>> I don't have a serial console on this embedded thing, so I don't know
>> its death poem yet. Let me set up my debug environment properly and
>> report back to you.
>
> This might not be necessary.
>
> Try this updated patch. And let us know if we no do the right thing.
>
> Regards,
>        Chr
>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: set-and-clear.diff --]
[-- Type: text/x-diff; name=set-and-clear.diff, Size: 930 bytes --]

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 5a1a60f..077fdb7 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -657,7 +657,8 @@ static void ap_sta_ps_start(struct sta_info *sta)
 	DECLARE_MAC_BUF(mac);
 
 	atomic_inc(&sdata->bss->num_sta_ps);
-	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
+	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL |
+				WLAN_STA_CLEAR_PS_FILT);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
 	printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
 	       sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
@@ -674,7 +675,8 @@ static int ap_sta_ps_end(struct sta_info *sta)
 
 	atomic_dec(&sdata->bss->num_sta_ps);
 
-	clear_sta_flags(sta, WLAN_STA_PS | WLAN_STA_PSPOLL);
+	set_and_clear_sta_flags(sta, WLAN_STA_CLEAR_PS_FILT,
+				WLAN_STA_PS | WLAN_STA_PSPOLL);
 
 	if (!skb_queue_empty(&sta->ps_tx_buf))
 		sta_info_clear_tim_bit(sta);

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: p54-sta-flags-v2.diff --]
[-- Type: text/x-diff; name=p54-sta-flags-v2.diff, Size: 2316 bytes --]

diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
--- a/drivers/net/wireless/p54/p54common.c	2008-11-24 13:07:09.053832187 +0100
+++ b/drivers/net/wireless/p54/p54common.c	2008-11-24 21:05:42.590287518 +0100
@@ -688,7 +688,8 @@ static void p54_rx_frame_sent(struct iee
 			}
 		}
 
-		priv->tx_stats[entry_data->hw_queue].len--;
+		if (priv->tx_stats[entry_data->hw_queue].len > 0)
+			priv->tx_stats[entry_data->hw_queue].len--;
 		if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) &&
 		     (!payload->status))
 			info->flags |= IEEE80211_TX_STAT_ACK;
@@ -1067,9 +1068,15 @@ static int p54_tx_fill(struct ieee80211_
 			*queue = 3;
 			return 0;
 		}
-		if (info->control.sta)
+		if (info->control.sta) {
+			if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
+				ret = p54_sta_unlock(dev, info->control.sta->addr);
+				if (ret)
+					return ret;
+				*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
+			}
 			*aid = info->control.sta->aid;
-		else
+		} else
 			*flags = P54_HDR_FLAG_DATA_OUT_NOCANCEL;
 	}
 	return ret;
@@ -1083,7 +1090,7 @@ static int p54_tx(struct ieee80211_hw *d
 	struct p54_hdr *hdr;
 	struct p54_tx_data *txhdr;
 	size_t padding, len, tim_len = 0;
-	int i, j, ridx;
+	int i, j, ridx, ret;
 	u16 hdr_flags = 0, aid = 0;
 	u8 rate, queue;
 	u8 cts_rate = 0x20;
@@ -1093,7 +1100,10 @@ static int p54_tx(struct ieee80211_hw *d
 
 	queue = skb_get_queue_mapping(skb);
 
-	if (p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid)) {
+	ret = p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid);
+	if (ret < 0)
+		return NETDEV_TX_BUSY;
+	if (ret) {
 		current_queue = &priv->tx_stats[queue];
 		if (unlikely(current_queue->len > current_queue->limit))
 			return NETDEV_TX_BUSY;
@@ -1106,17 +1116,6 @@ static int p54_tx(struct ieee80211_hw *d
 	padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3;
 	len = skb->len;
 
-	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
-		if (info->control.sta)
-			if (p54_sta_unlock(dev, info->control.sta->addr)) {
-				if (current_queue) {
-					current_queue->len--;
-					current_queue->count--;
-				}
-				return NETDEV_TX_BUSY;
-			}
-	}
-
 	txhdr = (struct p54_tx_data *) skb_push(skb, sizeof(*txhdr) + padding);
 	hdr = (struct p54_hdr *) skb_push(skb, sizeof(*hdr));
 

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: johannes-sta-nowake-on-ps.patch --]
[-- Type: text/x-diff; name=johannes-sta-nowake-on-ps.patch, Size: 1020 bytes --]

--- everything.orig/net/mac80211/rx.c   2008-11-23 14:58:21.000000000 +0100
+++ everything/net/mac80211/rx.c        2008-11-23 14:59:58.000000000 +0100
@@ -750,9 +750,11 @@ ieee80211_rx_h_sta_process(struct ieee80
               /* Change STA power saving mode only in the end of a frame
                * exchange sequence */
               if (test_sta_flags(sta, WLAN_STA_PS) &&
-                   !ieee80211_has_pm(hdr->frame_control))
-                       rx->sent_ps_buffered += ap_sta_ps_end(sta);
-               else if (!test_sta_flags(sta, WLAN_STA_PS) &&
+                   !ieee80211_has_pm(hdr->frame_control)) {
+                       /* ignore PS bit on non-data frames */
+                       if (ieee80211_is_data(hdr->frame_control))
+                               rx->sent_ps_buffered += ap_sta_ps_end(sta);
+               } else if (!test_sta_flags(sta, WLAN_STA_PS) &&
                        ieee80211_has_pm(hdr->frame_control))
                       ap_sta_ps_start(sta);
       }



[-- Attachment #5: oops.syslog --]
[-- Type: application/octet-stream, Size: 52905 bytes --]

Nov 26 14:12:35 alix kernel: netconsole: local IP 192.168.1.100
Nov 26 14:12:35 alix kernel: console [netcon0] enabled
Nov 26 14:12:35 alix kernel: netconsole: network logging started
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 IEEE 802.11: authentication OK (open system)
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 MLME: MLME-AUTHENTICATE.indication(00:22:41:91:8e:96, OPEN_SYSTEM)
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 MLME: MLME-DELETEKEYS.request(00:22:41:91:8e:96)
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 IEEE 802.11: authenticated
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 IEEE 802.11: association OK (aid 1)
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 IEEE 802.11: associated (aid 1, accounting session 492D4A7C-00000000)
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 MLME: MLME-ASSOCIATE.indication(00:22:41:91:8e:96)
Nov 26 14:13:04 alix hostapd: wlan0: STA 00:22:41:91:8e:96 MLME: MLME-DELETEKEYS.request(00:22:41:91:8e:96)
Nov 26 14:13:04 alix kernel: phy0: Allocated STA 00:22:41:91:8e:96
Nov 26 14:13:04 alix kernel: phy0: Inserted STA 00:22:41:91:8e:96
Nov 26 14:13:04 alix dhcpd: DHCPREQUEST for 192.168.177.102 from 00:22:41:91:8e:96 via wlan0
Nov 26 14:13:04 alix dhcpd: DHCPACK on 192.168.177.102 to 00:22:41:91:8e:96 via wlan0
Nov 26 14:13:04 alix dhcpd: DHCPREQUEST for 192.168.177.102 from 00:22:41:91:8e:96 via wlan0
Nov 26 14:13:04 alix dhcpd: DHCPACK on 192.168.177.102 to 00:22:41:91:8e:96 via wlan0
Nov 26 14:13:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:06 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:06 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:06 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:06 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:07 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:08 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:09 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:09 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:09 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:10 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:13 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:16 alix dhclient: DHCPREQUEST on eth0 to 192.168.1.1 port 67
Nov 26 14:13:16 alix dhclient: DHCPACK from 192.168.1.1
Nov 26 14:13:16 alix dhclient: bound to 192.168.1.100 -- renewal in 257 seconds.
Nov 26 14:13:16 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:20 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:20 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:25 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:25 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:27 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:27 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:32 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:32 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:32 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:32 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:32 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:32 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:33 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:33 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:33 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:33 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:33 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:34 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:37 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:38 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:38 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:39 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:39 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:39 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:39 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:40 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:40 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:40 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:40 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:40 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:45 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:45 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:45 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:45 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:45 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:45 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:49 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:49 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:49 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:49 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:49 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:49 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:54 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:54 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:54 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 2)
Nov 26 14:13:55 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:55 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:55 alix last message repeated 2 times
Nov 26 14:13:55 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:56 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:56 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:57 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 2)
Nov 26 14:13:58 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:58 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:58 alix last message repeated 2 times
Nov 26 14:13:58 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:13:58 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:13:58 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:13:58 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:13:59 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:59 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:13:59 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:03 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:03 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:05 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:05 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:06 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:10 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:10 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:10 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:10 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:10 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:15 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:15 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:16 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:16 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:16 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:16 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:17 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:17 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:17 alix ntpd[1319]: Listening on interface #8 eth0, 192.168.1.100#123 Enabled
Nov 26 14:14:22 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:22 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:23 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:23 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:25 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:26 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:26 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:28 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:28 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:28 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:28 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:31 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:31 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:31 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:31 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:31 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:32 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:35 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:35 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:38 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:38 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:38 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:38 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:40 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:40 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:42 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:42 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:44 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:44 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:44 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:44 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:45 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:45 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:51 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:51 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:14:53 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:14:53 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:53 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:14:54 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:14:57 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:14:57 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:00 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:00 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:00 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:00 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:02 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:02 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:04 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:04 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:04 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:07 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:07 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:08 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:08 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:08 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:08 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:12 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:12 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:17 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:17 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:17 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:18 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:19 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:19 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:19 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:19 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:19 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:20 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:22 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:22 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:22 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:23 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:27 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:27 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:29 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:29 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:29 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:29 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:33 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:33 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:35 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:35 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:35 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:35 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:35 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:36 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:39 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:39 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:41 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:46 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:46 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:47 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:49 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:49 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:50 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:50 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:50 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:51 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:54 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:15:54 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:15:57 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:57 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:57 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:15:57 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:58 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:59 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:15:59 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:15:59 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:02 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:16:02 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:16:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:05 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:08 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:09 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:09 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:09 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:11 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:16:11 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:16:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:11 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:12 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:15 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:16:15 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:16:18 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:18 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:18 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:18 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:19 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:16:19 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:16:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:21 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:26 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:16:26 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:16:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 exits power save mode
Nov 26 14:16:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:27 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 send PS frame since STA not sleeping anymore
Nov 26 14:16:28 alix kernel: wlan0: STA 00:22:41:91:8e:96 aid 1 enters power save mode
Nov 26 14:16:32 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 0)
Nov 26 14:16:32 alix kernel: STA 00:22:41:91:8e:96 aid 1: PS buffer (entries before 1)
Nov 26 14:22:11 alix syslogd 1.5.0#5: restart.
Nov 26 14:22:11 alix kernel: klogd 1.5.0#5, log source = /proc/kmsg started.
Nov 26 14:22:11 alix kernel: BIOS EBDA/lowmem at: 00000000/000a0000
Nov 26 14:22:11 alix kernel: Linux version 2.6.28-rc6-wl (stefan@stefan-laptop) (gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu11) ) #16 Wed Nov 26 14:06:59 CET 2008
Nov 26 14:22:11 alix kernel: KERNEL supported cpus:
Nov 26 14:22:11 alix kernel:   Intel GenuineIntel
Nov 26 14:22:11 alix kernel:   AMD AuthenticAMD
Nov 26 14:22:11 alix kernel:   NSC Geode by NSC
Nov 26 14:22:11 alix kernel:   Cyrix CyrixInstead
Nov 26 14:22:11 alix kernel:   Centaur CentaurHauls
Nov 26 14:22:11 alix kernel:   Transmeta GenuineTMx86
Nov 26 14:22:11 alix kernel:   Transmeta TransmetaCPU
Nov 26 14:22:11 alix kernel:   UMC UMC UMC UMC
Nov 26 14:22:11 alix kernel: BIOS-provided physical RAM map:
Nov 26 14:22:11 alix kernel:  BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
Nov 26 14:22:11 alix kernel:  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
Nov 26 14:22:11 alix kernel:  BIOS-e820: 0000000000100000 - 0000000010000000 (usable)
Nov 26 14:22:11 alix kernel:  BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
Nov 26 14:22:11 alix kernel: DMI not present or invalid.
Nov 26 14:22:11 alix kernel: last_pfn = 0x10000 max_arch_pfn = 0x100000
Nov 26 14:22:11 alix kernel: kernel direct mapping tables up to 10000000 @ 7000-c000
Nov 26 14:22:11 alix kernel: ACPI Error (tbxfroot-0218): A valid RSDP was not found [20080926]
Nov 26 14:22:12 alix kernel: 256MB LOWMEM available.
Nov 26 14:22:12 alix kernel:   mapped low ram: 0 - 10000000
Nov 26 14:22:12 alix kernel:   low ram: 00000000 - 10000000
Nov 26 14:22:12 alix kernel:   bootmap 00001000 - 00003000
Nov 26 14:22:12 alix kernel: (6 early reservations) ==> bootmem [0000000000 - 0010000000]
Nov 26 14:22:12 alix kernel:   #0 [0000000000 - 0000001000]   BIOS data page ==> [0000000000 - 0000001000]
Nov 26 14:22:12 alix kernel:   #1 [0000100000 - 0000481da0]    TEXT DATA BSS ==> [0000100000 - 0000481da0]
Nov 26 14:22:12 alix kernel:   #2 [0000482000 - 0000485000]    INIT_PG_TABLE ==> [0000482000 - 0000485000]
Nov 26 14:22:12 alix kernel:   #3 [000009f000 - 0000100000]    BIOS reserved ==> [000009f000 - 0000100000]
Nov 26 14:22:12 alix kernel:   #4 [0000007000 - 0000008000]          PGTABLE ==> [0000007000 - 0000008000]
Nov 26 14:22:12 alix /usr/sbin/cron[1272]: (CRON) INFO (pidfile fd = 3)
Nov 26 14:22:12 alix kernel:   #5 [0000001000 - 0000003000]          BOOTMAP ==> [0000001000 - 0000003000]
Nov 26 14:22:12 alix /usr/sbin/cron[1273]: (CRON) STARTUP (fork ok)
Nov 26 14:22:12 alix kernel: Zone PFN ranges:
Nov 26 14:22:12 alix kernel:   DMA      0x00000000 -> 0x00001000
Nov 26 14:22:12 alix /usr/sbin/cron[1273]: (CRON) INFO (Running @reboot jobs)
Nov 26 14:22:12 alix kernel:   Normal   0x00001000 -> 0x00010000
Nov 26 14:22:12 alix kernel: Movable zone start PFN for each node
Nov 26 14:22:12 alix kernel: early_node_map[2] active PFN ranges
Nov 26 14:22:12 alix kernel:     0: 0x00000000 -> 0x000000a0
Nov 26 14:22:12 alix kernel:     0: 0x00000100 -> 0x00010000
Nov 26 14:22:12 alix kernel: On node 0 totalpages: 65440
Nov 26 14:22:12 alix kernel: free_area_init_node: node 0, pgdat c03ed39c, node_mem_map c1000000
Nov 26 14:22:12 alix kernel:   DMA zone: 32 pages used for memmap
Nov 26 14:22:12 alix kernel:   DMA zone: 0 pages reserved
Nov 26 14:22:12 alix kernel:   DMA zone: 3968 pages, LIFO batch:0
Nov 26 14:22:12 alix kernel:   Normal zone: 480 pages used for memmap
Nov 26 14:22:12 alix kernel:   Normal zone: 60960 pages, LIFO batch:15
Nov 26 14:22:12 alix kernel:   Movable zone: 0 pages used for memmap
Nov 26 14:22:12 alix kernel: No local APIC present or hardware disabled
Nov 26 14:22:12 alix kernel: PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
Nov 26 14:22:12 alix kernel: PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
Nov 26 14:22:12 alix kernel: Allocating PCI resources starting at 20000000 (gap: 10000000:eff00000)
Nov 26 14:22:12 alix kernel: Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 64928
Nov 26 14:22:12 alix kernel: Kernel command line: root=/dev/sda1 ro 
Nov 26 14:22:12 alix kernel: Initializing CPU#0
Nov 26 14:22:12 alix kernel: PID hash table entries: 1024 (order: 10, 4096 bytes)
Nov 26 14:22:12 alix kernel: Fast TSC calibration using PIT
Nov 26 14:22:12 alix kernel: Detected 498.071 MHz processor.
Nov 26 14:22:12 alix kernel: Console: colour dummy device 80x25
Nov 26 14:22:12 alix kernel: console [tty0] enabled
Nov 26 14:22:12 alix dhcpd: receive_packet failed on wlan0: Network is down
Nov 26 14:22:12 alix kernel: Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Nov 26 14:22:12 alix kernel: Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Nov 26 14:22:12 alix kernel: Memory: 255696k/262144k available (2082k kernel code, 5888k reserved, 955k data, 280k init, 0k highmem)
Nov 26 14:22:12 alix kernel: virtual kernel memory layout:
Nov 26 14:22:12 alix kernel:     fixmap  : 0xfffab000 - 0xfffff000   ( 336 kB)
Nov 26 14:22:12 alix kernel:     vmalloc : 0xd0800000 - 0xfffa9000   ( 759 MB)
Nov 26 14:22:12 alix kernel:     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
Nov 26 14:22:12 alix kernel:       .init : 0xc03fa000 - 0xc0440000   ( 280 kB)
Nov 26 14:22:12 alix kernel:       .data : 0xc03089d5 - 0xc03f7614   ( 955 kB)
Nov 26 14:22:12 alix kernel:       .text : 0xc0100000 - 0xc03089d5   (2082 kB)
Nov 26 14:22:12 alix kernel: Checking if this processor honours the WP bit even in supervisor mode...Ok.
Nov 26 14:22:12 alix kernel: Calibrating delay loop (skipped), value calculated using timer frequency.. 996.14 BogoMIPS (lpj=1992284)
Nov 26 14:22:12 alix kernel: Security Framework initialized
Nov 26 14:22:12 alix kernel: Mount-cache hash table entries: 512
Nov 26 14:22:12 alix kernel: Initializing cgroup subsys ns
Nov 26 14:22:13 alix kernel: Initializing cgroup subsys cpuacct
Nov 26 14:22:13 alix kernel: CPU: L1 I Cache: 64K (32 bytes/line), D cache 64K (32 bytes/line)
Nov 26 14:22:13 alix kernel: CPU: L2 Cache: 128K (32 bytes/line)
Nov 26 14:22:13 alix kernel: CPU: Geode(TM) Integrated Processor by AMD PCS stepping 02
Nov 26 14:22:13 alix kernel: Checking 'hlt' instruction... OK.
Nov 26 14:22:13 alix kernel: Freeing SMP alternatives: 0k freed
Nov 26 14:22:13 alix kernel: ACPI: Core revision 20080926
Nov 26 14:22:13 alix kernel: ACPI Exception (tbxface-0627): AE_NO_ACPI_TABLES, While loading namespace from ACPI tables [20080926]
Nov 26 14:22:13 alix kernel: ACPI: Unable to load the System Description Tables
Nov 26 14:22:13 alix kernel: net_namespace: 768 bytes
Nov 26 14:22:13 alix kernel: NET: Registered protocol family 16
Nov 26 14:22:13 alix kernel: PCI: PCI BIOS revision 2.10 entry at 0xfcc2b, last bus=0
Nov 26 14:22:13 alix kernel: PCI: Using configuration type 1 for base access
Nov 26 14:22:13 alix kernel: ACPI: Interpreter disabled.
Nov 26 14:22:13 alix kernel: SCSI subsystem initialized
Nov 26 14:22:13 alix ntpd[1310]: ntpd 4.2.4p4@1.1520-o Wed Jul 16 12:11:41 UTC 2008 (1)
Nov 26 14:22:13 alix kernel: libata version 3.00 loaded.
Nov 26 14:22:13 alix ntpd[1311]: precision = 1.000 usec
Nov 26 14:22:13 alix kernel: PCI: Probing PCI hardware
Nov 26 14:22:13 alix ntpd[1311]: Listening on interface #0 wildcard, 0.0.0.0#123 Disabled
Nov 26 14:22:13 alix kernel: PCI: Probing PCI hardware (bus 00)
Nov 26 14:22:13 alix ntpd[1311]: Listening on interface #1 wildcard, ::#123 Disabled
Nov 26 14:22:13 alix kernel: pci 0000:00:01.0: reg 10 io port: [0xac1c-0xac1f]
Nov 26 14:22:13 alix ntpd[1311]: Listening on interface #2 lo, ::1#123 Enabled
Nov 26 14:22:13 alix dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Nov 26 14:22:13 alix kernel: pci 0000:00:01.2: reg 10 32bit mmio: [0xefff4000-0xefff7fff]
Nov 26 14:22:13 alix ntpd[1311]: bind() fd 19, family 10, port 123, scope 4, addr fe80::260:b3ff:fe5d:388, in6_is_addr_multicast=0 flags=0x11 fails: Cannot assign requested address
Nov 26 14:22:13 alix dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Nov 26 14:22:13 alix kernel: pci 0000:00:09.0: reg 10 io port: [0x1000-0x10ff]
Nov 26 14:22:13 alix ntpd[1311]: unable to create socket on wlan0 (3) for fe80::260:b3ff:fe5d:388#123
Nov 26 14:22:13 alix dhcpd: All rights reserved.
Nov 26 14:22:13 alix kernel: pci 0000:00:09.0: reg 14 32bit mmio: [0xe0000000-0xe00000ff]
Nov 26 14:22:13 alix ntpd[1311]: failed to initialize interface for address fe80::260:b3ff:fe5d:388
Nov 26 14:22:13 alix dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Nov 26 14:22:13 alix kernel: pci 0000:00:09.0: supports D1 D2
Nov 26 14:22:13 alix ntpd[1311]: Listening on interface #4 eth0, fe80::20d:b9ff:fe13:7220#123 Enabled
Nov 26 14:22:13 alix dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Nov 26 14:22:13 alix kernel: pci 0000:00:09.0: PME# supported from D0 D1 D2 D3hot D3cold
Nov 26 14:22:13 alix ntpd[1311]: Listening on interface #5 lo, 127.0.0.1#123 Enabled
Nov 26 14:22:13 alix dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Nov 26 14:22:13 alix kernel: pci 0000:00:09.0: PME# disabled
Nov 26 14:22:13 alix ntpd[1311]: Listening on interface #6 wlan0, 192.168.177.1#123 Enabled
Nov 26 14:22:13 alix dhcpd: All rights reserved.
Nov 26 14:22:13 alix kernel: pci 0000:00:0e.0: reg 10 32bit mmio: [0xe0040000-0xe0041fff]
Nov 26 14:22:13 alix ntpd[1311]: kernel time sync status 0040
Nov 26 14:22:13 alix dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Nov 26 14:22:13 alix kernel: pci 0000:00:0e.0: supports D1 D2
Nov 26 14:22:13 alix ntpd[1311]: frequency initialized 0.000 PPM from /var/lib/ntp/ntp.drift
Nov 26 14:22:13 alix kernel: pci 0000:00:0e.0: PME# supported from D0 D1 D2 D3hot D3cold
Nov 26 14:22:13 alix kernel: pci 0000:00:0e.0: PME# disabled
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.0: reg 10 io port: [0x6000-0x6007]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.0: reg 14 io port: [0x6100-0x61ff]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.0: reg 18 io port: [0x6200-0x623f]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.0: reg 20 io port: [0x9d00-0x9d7f]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.0: reg 24 io port: [0x9c00-0x9c3f]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.2: reg 20 io port: [0xff00-0xff0f]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.3: reg 10 io port: [0xfe00-0xfe7f]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.4: reg 10 32bit mmio: [0xefffe000-0xefffefff]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.4: PME# supported from D0 D3hot D3cold
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.4: PME# disabled
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.5: reg 10 32bit mmio: [0xefffd000-0xefffdfff]
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.5: PME# supported from D0 D3hot D3cold
Nov 26 14:22:13 alix kernel: pci 0000:00:0f.5: PME# disabled
Nov 26 14:22:13 alix kernel: cfg80211: Using static regulatory domain info
Nov 26 14:22:13 alix kernel: cfg80211: Regulatory domain: US
Nov 26 14:22:13 alix kernel: ^I(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Nov 26 14:22:13 alix kernel: ^I(2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
Nov 26 14:22:13 alix kernel: ^I(5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
Nov 26 14:22:13 alix kernel: ^I(5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
Nov 26 14:22:13 alix kernel: ^I(5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
Nov 26 14:22:13 alix kernel: ^I(5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
Nov 26 14:22:13 alix kernel: ^I(5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
Nov 26 14:22:13 alix kernel: cfg80211: Calling CRDA for country: US
Nov 26 14:22:13 alix kernel: pnp: PnP ACPI: disabled
Nov 26 14:22:13 alix kernel: PnPBIOS: Scanning system for PnP BIOS support...
Nov 26 14:22:13 alix kernel: PnPBIOS: PnP BIOS support was not detected.
Nov 26 14:22:14 alix kernel: bus: 00 index 0 io port: [0x00-0xffff]
Nov 26 14:22:14 alix kernel: bus: 00 index 1 mmio: [0x000000-0xffffffff]
Nov 26 14:22:14 alix kernel: NET: Registered protocol family 2
Nov 26 14:22:14 alix kernel: IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
Nov 26 14:22:14 alix kernel: TCP established hash table entries: 8192 (order: 4, 65536 bytes)
Nov 26 14:22:14 alix kernel: TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
Nov 26 14:22:14 alix kernel: TCP: Hash tables configured (established 8192 bind 8192)
Nov 26 14:22:14 alix kernel: TCP reno registered
Nov 26 14:22:14 alix kernel: NET: Registered protocol family 1
Nov 26 14:22:14 alix kernel: platform rtc_cmos: registered platform RTC device (no PNP device found)
Nov 26 14:22:14 alix kernel: audit: initializing netlink socket (disabled)
Nov 26 14:22:14 alix kernel: type=2000 audit(1227705711.043:1): initialized
Nov 26 14:22:14 alix kernel: HugeTLB registered 4 MB page size, pre-allocated 0 pages
Nov 26 14:22:14 alix kernel: VFS: Disk quotas dquot_6.5.1
Nov 26 14:22:14 alix kernel: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Nov 26 14:22:14 alix kernel: msgmni has been set to 499
Nov 26 14:22:14 alix kernel: alg: No test for stdrng (krng)
Nov 26 14:22:14 alix kernel: io scheduler noop registered
Nov 26 14:22:14 alix kernel: io scheduler anticipatory registered
Nov 26 14:22:14 alix kernel: io scheduler deadline registered
Nov 26 14:22:14 alix kernel: io scheduler cfq registered (default)
Nov 26 14:22:14 alix kernel: isapnp: Scanning for PnP cards...
Nov 26 14:22:14 alix kernel: isapnp: No Plug & Play device found
Nov 26 14:22:14 alix kernel: AMD Geode RNG detected
Nov 26 14:22:14 alix kernel: cs5535_gpio: base=0x6100 mask=0xb003c66 major=253
Nov 26 14:22:14 alix kernel: Serial: 8250/16550 driver4 ports, IRQ sharing enabled
Nov 26 14:22:14 alix kernel: serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Nov 26 14:22:14 alix kernel: brd: module loaded
Nov 26 14:22:14 alix ntpd[1311]: Listening on interface #7 wlan0, fe80::260:b3ff:fe5d:388#123 Enabled
Nov 26 14:22:14 alix kernel: Uniform Multi-Platform E-IDE driver
Nov 26 14:22:14 alix kernel: ide-gd driver 1.18
Nov 26 14:22:14 alix kernel: Driver 'sd' needs updating - please use bus_type methods
Nov 26 14:22:14 alix kernel: SCSI Media Changer driver v0.25 
Nov 26 14:22:14 alix kernel: Driver 'ch' needs updating - please use bus_type methods
Nov 26 14:22:14 alix kernel: pata_amd 0000:00:0f.2: version 0.3.10
Nov 26 14:22:14 alix kernel: scsi0 : pata_amd
Nov 26 14:22:14 alix kernel: scsi1 : pata_amd
Nov 26 14:22:14 alix kernel: ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xff00 irq 14
Nov 26 14:22:14 alix kernel: ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xff08 irq 15
Nov 26 14:22:14 alix kernel: ata1.00: CFA: SanDisk SDCFX4-8192, HDX 4.20, max UDMA/66
Nov 26 14:22:14 alix kernel: ata1.00: 16007040 sectors, multi 0: LBA 
Nov 26 14:22:14 alix kernel: ata1.00: limited to UDMA/33 due to 40-wire cable
Nov 26 14:22:14 alix kernel: ata1.00: configured for UDMA/33
Nov 26 14:22:14 alix kernel: ata2: port disabled. ignoring.
Nov 26 14:22:14 alix kernel: scsi 0:0:0:0: Direct-Access     ATA      SanDisk SDCFX4-8 HDX  PQ: 0 ANSI: 5
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] 16007040 512-byte hardware sectors: (8.19 GB/7.63 GiB)
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Write Protect is off
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] 16007040 512-byte hardware sectors: (8.19 GB/7.63 GiB)
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Write Protect is off
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Nov 26 14:22:14 alix kernel:  sda: sda1
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: [sda] Attached SCSI removable disk
Nov 26 14:22:14 alix kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Nov 26 14:22:14 alix kernel: PNP: No PS/2 controller found. Probing ports directly.
Nov 26 14:22:14 alix kernel: i8042.c: No controller found.
Nov 26 14:22:14 alix kernel: mice: PS/2 mouse device common for all mice
Nov 26 14:22:14 alix kernel: i2c /dev entries driver
Nov 26 14:22:14 alix kernel: cpuidle: using governor ladder
Nov 26 14:22:14 alix kernel: cpuidle: using governor menu
Nov 26 14:22:14 alix kernel: TCP bic registered
Nov 26 14:22:14 alix kernel: NET: Registered protocol family 17
Nov 26 14:22:14 alix kernel: IO APIC resources could be not be allocated.
Nov 26 14:22:14 alix kernel: Using IPI Shortcut mode
Nov 26 14:22:14 alix kernel: registered taskstats version 1
Nov 26 14:22:14 alix kernel: EXT3-fs: INFO: recovery required on readonly filesystem.
Nov 26 14:22:14 alix kernel: EXT3-fs: write access will be enabled during recovery.
Nov 26 14:22:14 alix kernel: kjournald starting.  Commit interval 5 seconds
Nov 26 14:22:14 alix kernel: EXT3-fs: recovery complete.
Nov 26 14:22:14 alix kernel: EXT3-fs: mounted filesystem with journal data mode.
Nov 26 14:22:14 alix kernel: VFS: Mounted root (ext3 filesystem) readonly.
Nov 26 14:22:14 alix kernel: Freeing unused kernel memory: 280k freed
Nov 26 14:22:14 alix kernel: via-rhine.c:v1.10-LK1.4.3 2007-03-06 Written by Donald Becker
Nov 26 14:22:14 alix kernel: geode-aes: GEODE AES engine enabled.
Nov 26 14:22:14 alix kernel: via-rhine 0000:00:09.0: setting latency timer to 64
Nov 26 14:22:14 alix kernel: eth0: VIA Rhine III (Management Adapter) at 0x11000, 00:0d:b9:13:72:20, IRQ 10.
Nov 26 14:22:14 alix kernel: eth0: MII PHY found at address 1, status 0x7869 advertising 05e1 Link cde1.
Nov 26 14:22:14 alix kernel: p54pci 0000:00:0e.0: setting latency timer to 64
Nov 26 14:22:14 alix kernel: p54pci 0000:00:0e.0: firmware: requesting isl3886pci
Nov 26 14:22:14 alix kernel: input: PC Speaker as /class/input/input0
Nov 26 14:22:14 alix kernel: p54: LM86 firmware
Nov 26 14:22:14 alix kernel: p54: FW rev 2.13.1.0 - Softmac protocol 5.5
Nov 26 14:22:14 alix kernel: rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0
Nov 26 14:22:14 alix kernel: rtc0: alarms up to one day, 114 bytes nvram
Nov 26 14:22:14 alix kernel: usbcore: registered new interface driver usbfs
Nov 26 14:22:14 alix kernel: usbcore: registered new interface driver hub
Nov 26 14:22:14 alix kernel: usbcore: registered new device driver usb
Nov 26 14:22:14 alix kernel: ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
Nov 26 14:22:14 alix kernel: ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
Nov 26 14:22:14 alix kernel: Warning! ehci_hcd should always be loaded before uhci_hcd and ohci_hcd, not after
Nov 26 14:22:14 alix kernel: phy0: hwaddr 00:60:b3:5d:03:88, MAC:isl3886 RF:Frisbee
Nov 26 14:22:14 alix kernel: phy0: Selected rate control algorithm 'minstrel'
Nov 26 14:22:14 alix kernel: ohci_hcd 0000:00:0f.4: setting latency timer to 64
Nov 26 14:22:14 alix kernel: ohci_hcd 0000:00:0f.4: OHCI Host Controller
Nov 26 14:22:14 alix kernel: ohci_hcd 0000:00:0f.4: new USB bus registered, assigned bus number 1
Nov 26 14:22:14 alix kernel: ohci_hcd 0000:00:0f.4: irq 15, io mem 0xefffe000
Nov 26 14:22:14 alix kernel: usb usb1: configuration #1 chosen from 1 choice
Nov 26 14:22:14 alix kernel: hub 1-0:1.0: USB hub found
Nov 26 14:22:14 alix kernel: hub 1-0:1.0: 4 ports detected
Nov 26 14:22:14 alix kernel: ehci_hcd 0000:00:0f.5: setting latency timer to 64
Nov 26 14:22:14 alix kernel: ehci_hcd 0000:00:0f.5: EHCI Host Controller
Nov 26 14:22:14 alix kernel: ehci_hcd 0000:00:0f.5: new USB bus registered, assigned bus number 2
Nov 26 14:22:14 alix kernel: ehci_hcd 0000:00:0f.5: irq 15, io mem 0xefffd000
Nov 26 14:22:14 alix kernel: ehci_hcd 0000:00:0f.5: USB 2.0 started, EHCI 1.00
Nov 26 14:22:14 alix kernel: usb usb2: configuration #1 chosen from 1 choice
Nov 26 14:22:14 alix kernel: hub 2-0:1.0: USB hub found
Nov 26 14:22:14 alix kernel: hub 2-0:1.0: 4 ports detected
Nov 26 14:22:14 alix kernel: EXT3 FS on sda1, internal journal
Nov 26 14:22:15 alix kernel: loop: module loaded
Nov 26 14:22:15 alix kernel: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
Nov 26 14:22:15 alix kernel: NET: Registered protocol family 10
Nov 26 14:22:15 alix kernel: lo: Disabled Privacy Extensions
Nov 26 14:22:15 alix kernel: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Nov 26 14:22:15 alix kernel: warning: `ntpd' uses 32-bit capabilities (legacy support in use)
Nov 26 14:22:15 alix dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Nov 26 14:22:18 alix dhclient: DHCPACK from 192.168.1.1
Nov 26 14:22:18 alix dhclient: bound to 192.168.1.100 -- renewal in 253 seconds.
Nov 26 14:22:20 alix kernel: eth0: no IPv6 routers present
Nov 26 14:22:22 alix kernel: wlan0: no IPv6 routers present

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-26 13:38 ` Stefan Steuerwald
@ 2008-11-26 21:13   ` Christian Lamparter
  2008-11-27  5:34     ` Stefan Steuerwald
  2008-11-27  8:57     ` Stefan Steuerwald
  0 siblings, 2 replies; 20+ messages in thread
From: Christian Lamparter @ 2008-11-26 21:13 UTC (permalink / raw)
  To: Stefan Steuerwald; +Cc: Johannes Berg, linux-wireless, John W Linville

On Wednesday 26 November 2008 14:38:59 Stefan Steuerwald wrote:
> console [netcon0] enabled
> netconsole: network logging started
> BUG: unable to handle kernel NULL pointer dereference at 00000038
> IP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common]
> *pde = 00000000
> Oops: 0000 [#1]
> last sysfs file: /sys/class/net/lo/operstate
> Modules linked in: netconsole ipv6 loop evdev ehci_hcd ohci_hcd
> rtc_cmos rtc_core pcspkr rtc_lib p54pci usbcore via_rhine p54common
> geode_aes mii [last unloaded: netconsole]
> 
> Pid: 0, comm: swapper Not tainted (2.6.28-rc6-wl #16)
> EIP: 0060:[<d08260fa>] EFLAGS: 00010002 CPU: 0
> EIP is at p54_assign_address+0x67/0x14b [p54common]
> EAX: cf98b178 EBX: cf86ee40 ECX: 00000000 EDX: 00000000
> ESI: 000000f8 EDI: 00000000 EBP: 0002027c ESP: c03f9c4c
>  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
> Process swapper (pid: 0, ti=c03f8000 task=c03c4380 task.ti=c03f8000)
> Stack:
>  00000002 ce4d5880 ce4c48b4 cf86e1a0 00000000 00000038 00020200 00000286
>  cf86ee40 00000004 ce4d58b2 ce4d588c d0826fd7 00000090 014c48d4 ce4c48b4
>  cf86e1a0 0086ee40 00000004 02000282 ce4c48d4 cf86ef10 cf86ee40 ce4d5880
> Call Trace:
>  [<d0826fd7>] p54_tx+0x416/0x482 [p54common]
>  [<c02fb7c2>] __ieee80211_tx+0x35/0xf8
>  [<c02fc235>] ieee80211_master_start_xmit+0x2ab/0x396
>  [<c01048d3>] common_interrupt+0x23/0x30
>  [<c0297368>] dev_hard_start_xmit+0x16e/0x1c9
>  [<c02a3518>] __qdisc_run+0xa2/0x15c
>  [<c0297796>] dev_queue_xmit+0x2f5/0x3c5
>  [<c02f8608>] ieee80211_invoke_rx_handlers+0x488/0x1486
>  [<c02d9d14>] bictcp_cong_avoid+0x10/0x160
>  [<c02bd904>] tcp_ack+0x16f0/0x1850
>  [<c01170f0>] enqueue_task_fair+0x12a/0x16b
>  [<c02c0c37>] tcp_current_mss+0x6b/0xe4
>  [<c02f9b50>] __ieee80211_rx_handle_packet+0x54a/0x56d
>  [<c02fa1fe>] __ieee80211_rx+0x491/0x4e3
>  [<c02ec95d>] ieee80211_tasklet_handler+0x60/0xd6
>  [<c011cfae>] tasklet_action+0x3e/0x64
>  [<c011d305>] __do_softirq+0x4a/0xbc
>  [<c011d399>] do_softirq+0x22/0x26
>  [<c011d44f>] irq_exit+0x25/0x55
>  [<c0105996>] do_IRQ+0x5a/0x6c
>  [<c01048d3>] common_interrupt+0x23/0x30
>  [<c0108743>] default_idle+0x25/0x38
>  [<c0102926>] cpu_idle+0x41/0x5b
> Code: 0f 84 01 01 00 00 9c 8f 44 24 1c fa 8b 53 10 31 ff 89 6c 24 18
> 89 14 24 31 d2 eb 3f 8b 4c 24 10 83 c1 38 89 4c 24 14 8b 4c 24 10 <8b>
> 41 38 29 e8 85 d2 75 0d 39 f0 72 09 8b 51 04 29 f0 89 6c 24
> EIP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common] SS:ESP 0068:c03f9c4c
> Kernel panic - not syncing: Fatal exception in interrupt
> 
wt*, this bug is "impossible":

The bug happens when p54_assign_address looks for a free space for a new frame:
here's the code:
[...]
if (!skb)
	return -EINVAL;   <--- we don't accept "null" skbs

spin_lock_irqsave(&priv->tx_queue.lock, flags); <--- we are under a spin_lock with irq disabled
left = skb_queue_len(&priv->tx_queue);
while (left--) {
		u32 hole_size;
		info = IEEE80211_SKB_CB(entry);  <--- Here it BUGs,
[...]

your binary module said that skb->cb is at 0x38,
so our "entry" is really NULL right when it BUGS.
And this only happens means that the queue was
modified "outside" of our driver.

Since we always take the spin_lock_irqsave (of course,
only of "our" tx_queue). if we need to do anything with the data in the queue, 

Of course, since the package as queued while the station was sleeping
somewhere mac80211, so maybe it still holds a reference to, but then
other drivers would have already spotted this misbehaviour long time ago...

So? back to square one... I guess.

Regards,
	Chr

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-26 21:13   ` Christian Lamparter
@ 2008-11-27  5:34     ` Stefan Steuerwald
  2008-11-27  8:57     ` Stefan Steuerwald
  1 sibling, 0 replies; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-27  5:34 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Johannes Berg, linux-wireless, John W Linville

A-ha!
O-kay ;-)

I assume then that the last patch set that removes the problem for me
is perfectly valid, right?
Just that something changes the contents of my RAM. Let me memtest,
maybe recompile my kernel for 486. Other ideas?

Thank you for this!
I very much appreciate the time you people are putting into this thing.

Stefan.


2008/11/26 Christian Lamparter <chunkeey@web.de>:
> On Wednesday 26 November 2008 14:38:59 Stefan Steuerwald wrote:
>> console [netcon0] enabled
>> netconsole: network logging started
>> BUG: unable to handle kernel NULL pointer dereference at 00000038
>> IP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common]
>> *pde = 00000000
>> Oops: 0000 [#1]
>> last sysfs file: /sys/class/net/lo/operstate
>> Modules linked in: netconsole ipv6 loop evdev ehci_hcd ohci_hcd
>> rtc_cmos rtc_core pcspkr rtc_lib p54pci usbcore via_rhine p54common
>> geode_aes mii [last unloaded: netconsole]
>>
>> Pid: 0, comm: swapper Not tainted (2.6.28-rc6-wl #16)
>> EIP: 0060:[<d08260fa>] EFLAGS: 00010002 CPU: 0
>> EIP is at p54_assign_address+0x67/0x14b [p54common]
>> EAX: cf98b178 EBX: cf86ee40 ECX: 00000000 EDX: 00000000
>> ESI: 000000f8 EDI: 00000000 EBP: 0002027c ESP: c03f9c4c
>>  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>> Process swapper (pid: 0, ti=c03f8000 task=c03c4380 task.ti=c03f8000)
>> Stack:
>>  00000002 ce4d5880 ce4c48b4 cf86e1a0 00000000 00000038 00020200 00000286
>>  cf86ee40 00000004 ce4d58b2 ce4d588c d0826fd7 00000090 014c48d4 ce4c48b4
>>  cf86e1a0 0086ee40 00000004 02000282 ce4c48d4 cf86ef10 cf86ee40 ce4d5880
>> Call Trace:
>>  [<d0826fd7>] p54_tx+0x416/0x482 [p54common]
>>  [<c02fb7c2>] __ieee80211_tx+0x35/0xf8
>>  [<c02fc235>] ieee80211_master_start_xmit+0x2ab/0x396
>>  [<c01048d3>] common_interrupt+0x23/0x30
>>  [<c0297368>] dev_hard_start_xmit+0x16e/0x1c9
>>  [<c02a3518>] __qdisc_run+0xa2/0x15c
>>  [<c0297796>] dev_queue_xmit+0x2f5/0x3c5
>>  [<c02f8608>] ieee80211_invoke_rx_handlers+0x488/0x1486
>>  [<c02d9d14>] bictcp_cong_avoid+0x10/0x160
>>  [<c02bd904>] tcp_ack+0x16f0/0x1850
>>  [<c01170f0>] enqueue_task_fair+0x12a/0x16b
>>  [<c02c0c37>] tcp_current_mss+0x6b/0xe4
>>  [<c02f9b50>] __ieee80211_rx_handle_packet+0x54a/0x56d
>>  [<c02fa1fe>] __ieee80211_rx+0x491/0x4e3
>>  [<c02ec95d>] ieee80211_tasklet_handler+0x60/0xd6
>>  [<c011cfae>] tasklet_action+0x3e/0x64
>>  [<c011d305>] __do_softirq+0x4a/0xbc
>>  [<c011d399>] do_softirq+0x22/0x26
>>  [<c011d44f>] irq_exit+0x25/0x55
>>  [<c0105996>] do_IRQ+0x5a/0x6c
>>  [<c01048d3>] common_interrupt+0x23/0x30
>>  [<c0108743>] default_idle+0x25/0x38
>>  [<c0102926>] cpu_idle+0x41/0x5b
>> Code: 0f 84 01 01 00 00 9c 8f 44 24 1c fa 8b 53 10 31 ff 89 6c 24 18
>> 89 14 24 31 d2 eb 3f 8b 4c 24 10 83 c1 38 89 4c 24 14 8b 4c 24 10 <8b>
>> 41 38 29 e8 85 d2 75 0d 39 f0 72 09 8b 51 04 29 f0 89 6c 24
>> EIP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common] SS:ESP 0068:c03f9c4c
>> Kernel panic - not syncing: Fatal exception in interrupt
>>
> wt*, this bug is "impossible":
>
> The bug happens when p54_assign_address looks for a free space for a new frame:
> here's the code:
> [...]
> if (!skb)
>        return -EINVAL;   <--- we don't accept "null" skbs
>
> spin_lock_irqsave(&priv->tx_queue.lock, flags); <--- we are under a spin_lock with irq disabled
> left = skb_queue_len(&priv->tx_queue);
> while (left--) {
>                u32 hole_size;
>                info = IEEE80211_SKB_CB(entry);  <--- Here it BUGs,
> [...]
>
> your binary module said that skb->cb is at 0x38,
> so our "entry" is really NULL right when it BUGS.
> And this only happens means that the queue was
> modified "outside" of our driver.
>
> Since we always take the spin_lock_irqsave (of course,
> only of "our" tx_queue). if we need to do anything with the data in the queue,
>
> Of course, since the package as queued while the station was sleeping
> somewhere mac80211, so maybe it still holds a reference to, but then
> other drivers would have already spotted this misbehaviour long time ago...
>
> So? back to square one... I guess.
>
> Regards,
>        Chr
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-26 21:13   ` Christian Lamparter
  2008-11-27  5:34     ` Stefan Steuerwald
@ 2008-11-27  8:57     ` Stefan Steuerwald
  2008-11-27 11:06       ` Christian Lamparter
  1 sibling, 1 reply; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-27  8:57 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Johannes Berg, linux-wireless, John W Linville

Seems solved! Maybe a little premature, but I need to blurt this out...

Don't know why, but I think I was not thorough enough in my kernel config:

- I have a so-called alix board featuring a Geode LX 800
- I had tried to set processor type to Geode GX/LX, but that did not
boot (hangs somewhere)
- I didn't bother to find out why, but compiled for 486 instead (worked)
- In the meantime, I copied/merged a kernel .config from another
branch with processor type = 586/686/etc, which went unnoticed by me,
but seemed to work all the time (except maybe for that last kernel
BUG)
- Now I compiled for Geode GX/LX again, and set
CONFIG_GEODE_MFGPT_TIMER=n (as per this info here:
https://kerneltrap.org/mailarchive/linux-kernel/2008/1/20/585236)
which makes my kernel boot and SEEMS TO MAKE THAT CRASH GO AWAY!!!

At least I haven't observed the crash in the last 60 minutes, whereas
before it took only 1-2 minutes every time to turn it up.
Will test this all day.

The three patches mentioned before are applied, and my app-level
timeout is still gone, and the "dropped filtered TX" messages are gone
as well.

Christian, should I actually test your p54-sta-flags-v3 patch?

Regards,
  Stefan.


2008/11/26 Christian Lamparter <chunkeey@web.de>:
> On Wednesday 26 November 2008 14:38:59 Stefan Steuerwald wrote:
>> console [netcon0] enabled
>> netconsole: network logging started
>> BUG: unable to handle kernel NULL pointer dereference at 00000038
>> IP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common]
>> *pde = 00000000
>> Oops: 0000 [#1]
>> last sysfs file: /sys/class/net/lo/operstate
>> Modules linked in: netconsole ipv6 loop evdev ehci_hcd ohci_hcd
>> rtc_cmos rtc_core pcspkr rtc_lib p54pci usbcore via_rhine p54common
>> geode_aes mii [last unloaded: netconsole]
>>
>> Pid: 0, comm: swapper Not tainted (2.6.28-rc6-wl #16)
>> EIP: 0060:[<d08260fa>] EFLAGS: 00010002 CPU: 0
>> EIP is at p54_assign_address+0x67/0x14b [p54common]
>> EAX: cf98b178 EBX: cf86ee40 ECX: 00000000 EDX: 00000000
>> ESI: 000000f8 EDI: 00000000 EBP: 0002027c ESP: c03f9c4c
>>  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>> Process swapper (pid: 0, ti=c03f8000 task=c03c4380 task.ti=c03f8000)
>> Stack:
>>  00000002 ce4d5880 ce4c48b4 cf86e1a0 00000000 00000038 00020200 00000286
>>  cf86ee40 00000004 ce4d58b2 ce4d588c d0826fd7 00000090 014c48d4 ce4c48b4
>>  cf86e1a0 0086ee40 00000004 02000282 ce4c48d4 cf86ef10 cf86ee40 ce4d5880
>> Call Trace:
>>  [<d0826fd7>] p54_tx+0x416/0x482 [p54common]
>>  [<c02fb7c2>] __ieee80211_tx+0x35/0xf8
>>  [<c02fc235>] ieee80211_master_start_xmit+0x2ab/0x396
>>  [<c01048d3>] common_interrupt+0x23/0x30
>>  [<c0297368>] dev_hard_start_xmit+0x16e/0x1c9
>>  [<c02a3518>] __qdisc_run+0xa2/0x15c
>>  [<c0297796>] dev_queue_xmit+0x2f5/0x3c5
>>  [<c02f8608>] ieee80211_invoke_rx_handlers+0x488/0x1486
>>  [<c02d9d14>] bictcp_cong_avoid+0x10/0x160
>>  [<c02bd904>] tcp_ack+0x16f0/0x1850
>>  [<c01170f0>] enqueue_task_fair+0x12a/0x16b
>>  [<c02c0c37>] tcp_current_mss+0x6b/0xe4
>>  [<c02f9b50>] __ieee80211_rx_handle_packet+0x54a/0x56d
>>  [<c02fa1fe>] __ieee80211_rx+0x491/0x4e3
>>  [<c02ec95d>] ieee80211_tasklet_handler+0x60/0xd6
>>  [<c011cfae>] tasklet_action+0x3e/0x64
>>  [<c011d305>] __do_softirq+0x4a/0xbc
>>  [<c011d399>] do_softirq+0x22/0x26
>>  [<c011d44f>] irq_exit+0x25/0x55
>>  [<c0105996>] do_IRQ+0x5a/0x6c
>>  [<c01048d3>] common_interrupt+0x23/0x30
>>  [<c0108743>] default_idle+0x25/0x38
>>  [<c0102926>] cpu_idle+0x41/0x5b
>> Code: 0f 84 01 01 00 00 9c 8f 44 24 1c fa 8b 53 10 31 ff 89 6c 24 18
>> 89 14 24 31 d2 eb 3f 8b 4c 24 10 83 c1 38 89 4c 24 14 8b 4c 24 10 <8b>
>> 41 38 29 e8 85 d2 75 0d 39 f0 72 09 8b 51 04 29 f0 89 6c 24
>> EIP: [<d08260fa>] p54_assign_address+0x67/0x14b [p54common] SS:ESP 0068:c03f9c4c
>> Kernel panic - not syncing: Fatal exception in interrupt
>>
> wt*, this bug is "impossible":
>
> The bug happens when p54_assign_address looks for a free space for a new frame:
> here's the code:
> [...]
> if (!skb)
>        return -EINVAL;   <--- we don't accept "null" skbs
>
> spin_lock_irqsave(&priv->tx_queue.lock, flags); <--- we are under a spin_lock with irq disabled
> left = skb_queue_len(&priv->tx_queue);
> while (left--) {
>                u32 hole_size;
>                info = IEEE80211_SKB_CB(entry);  <--- Here it BUGs,
> [...]
>
> your binary module said that skb->cb is at 0x38,
> so our "entry" is really NULL right when it BUGS.
> And this only happens means that the queue was
> modified "outside" of our driver.
>
> Since we always take the spin_lock_irqsave (of course,
> only of "our" tx_queue). if we need to do anything with the data in the queue,
>
> Of course, since the package as queued while the station was sleeping
> somewhere mac80211, so maybe it still holds a reference to, but then
> other drivers would have already spotted this misbehaviour long time ago...
>
> So? back to square one... I guess.
>
> Regards,
>        Chr
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-27  8:57     ` Stefan Steuerwald
@ 2008-11-27 11:06       ` Christian Lamparter
  2008-11-27 14:05         ` Stefan Steuerwald
  0 siblings, 1 reply; 20+ messages in thread
From: Christian Lamparter @ 2008-11-27 11:06 UTC (permalink / raw)
  To: Stefan Steuerwald; +Cc: Johannes Berg, linux-wireless

On Thursday 27 November 2008 09:57:11 Stefan Steuerwald wrote:
> At least I haven't observed the crash in the last 60 minutes, whereas
> before it took only 1-2 minutes every time to turn it up.
> Will test this all day.

Finally!
 
> The three patches mentioned before are applied, and my app-level
> timeout is still gone, and the "dropped filtered TX" messages are gone
> as well.
> 
> Christian, should I actually test your p54-sta-flags-v3 patch?
> 
Yes, of course... v1 and v2 had a stupid "full queue" bug in p54_tx/p54_tx_fill.
So let me know if your ipod still works with v3.

Regards,
	Chr

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-27 11:06       ` Christian Lamparter
@ 2008-11-27 14:05         ` Stefan Steuerwald
  2008-11-27 14:13           ` Johannes Berg
  0 siblings, 1 reply; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-27 14:05 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Johannes Berg, linux-wireless

The v3 patch (together with the other two) works flawlessly for 1.5
hours now, under app-level traffic.
I will remove 80211 debugging from the kernel and try again for a
longer period, but looking good.

I'm unfamiliar with kernel dev procedure. I assume you guys are trying
to get confirmation for that and/or submit patches? If you need me for
any of that, I'll be there anytime. Also, a hint on whether to send
pizzas or iPods would be appreciated ;-) .

Thank you all for this marathon of a helpdesk session!!!
  Stefan.

(and - ahem - I'm one of those customers coming back for more...)


2008/11/27 Christian Lamparter <chunkeey@web.de>:
> On Thursday 27 November 2008 09:57:11 Stefan Steuerwald wrote:
>> At least I haven't observed the crash in the last 60 minutes, whereas
>> before it took only 1-2 minutes every time to turn it up.
>> Will test this all day.
>
> Finally!
>
>> The three patches mentioned before are applied, and my app-level
>> timeout is still gone, and the "dropped filtered TX" messages are gone
>> as well.
>>
>> Christian, should I actually test your p54-sta-flags-v3 patch?
>>
> Yes, of course... v1 and v2 had a stupid "full queue" bug in p54_tx/p54_tx_fill.
> So let me know if your ipod still works with v3.
>
> Regards,
>        Chr
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-27 14:05         ` Stefan Steuerwald
@ 2008-11-27 14:13           ` Johannes Berg
  2008-11-27 14:42             ` Christian Lamparter
  0 siblings, 1 reply; 20+ messages in thread
From: Johannes Berg @ 2008-11-27 14:13 UTC (permalink / raw)
  To: Stefan Steuerwald; +Cc: Christian Lamparter, linux-wireless

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

On Thu, 2008-11-27 at 15:05 +0100, Stefan Steuerwald wrote:
> The v3 patch (together with the other two) works flawlessly for 1.5
> hours now, under app-level traffic.
> I will remove 80211 debugging from the kernel and try again for a
> longer period, but looking good.

:)

> I'm unfamiliar with kernel dev procedure. I assume you guys are trying
> to get confirmation for that and/or submit patches? 

I've already submitted my patch to John, I suppose Christian will submit
his and add you as Tested-by.

> If you need me for
> any of that, I'll be there anytime. Also, a hint on whether to send
> pizzas or iPods would be appreciated ;-) .
> 
> Thank you all for this marathon of a helpdesk session!!!
>   Stefan.
> 
> (and - ahem - I'm one of those customers coming back for more...)

heh :)

johannes

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-27 14:13           ` Johannes Berg
@ 2008-11-27 14:42             ` Christian Lamparter
  2008-11-27 15:16               ` Stefan Steuerwald
  2008-11-27 15:59               ` Johannes Berg
  0 siblings, 2 replies; 20+ messages in thread
From: Christian Lamparter @ 2008-11-27 14:42 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Stefan Steuerwald, linux-wireless

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

On Thursday 27 November 2008 15:13:54 Johannes Berg wrote:
> On Thu, 2008-11-27 at 15:05 +0100, Stefan Steuerwald wrote:
> > I'm unfamiliar with kernel dev procedure. I assume you guys are trying
> > to get confirmation for that and/or submit patches? 
> 
> I've already submitted my patch to John, I suppose Christian will submit
> his and add you as Tested-by.
p54-sta-flags-v3.diff will be submitted on friday/saturday (probably together
with the WEP/TKIP & CCMP offload patch, which could be very useful for
embedded systems accesspoints too)...

But I don't know what to do with set-and-clear.diff 
(I guess it's still one of the three patches, or?, I've attached it again,
in case johannes missed it? ).
Is it really necessary or does your application work without it?

> > If you need me for
> > any of that, I'll be there anytime. Also, a hint on whether to send
> > pizzas or iPods would be appreciated ;-) .
Johannes,

Isn't there a donation page on the wiki yet? I thought there is such
a thing already?!

Regards,
	Chr



[-- Attachment #2: set-and-clear.diff --]
[-- Type: text/x-diff, Size: 930 bytes --]

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 5a1a60f..077fdb7 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -657,7 +657,8 @@ static void ap_sta_ps_start(struct sta_info *sta)
 	DECLARE_MAC_BUF(mac);
 
 	atomic_inc(&sdata->bss->num_sta_ps);
-	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
+	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL |
+				WLAN_STA_CLEAR_PS_FILT);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
 	printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
 	       sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
@@ -674,7 +675,8 @@ static int ap_sta_ps_end(struct sta_info *sta)
 
 	atomic_dec(&sdata->bss->num_sta_ps);
 
-	clear_sta_flags(sta, WLAN_STA_PS | WLAN_STA_PSPOLL);
+	set_and_clear_sta_flags(sta, WLAN_STA_CLEAR_PS_FILT,
+				WLAN_STA_PS | WLAN_STA_PSPOLL);
 
 	if (!skb_queue_empty(&sta->ps_tx_buf))
 		sta_info_clear_tim_bit(sta);

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-27 14:42             ` Christian Lamparter
@ 2008-11-27 15:16               ` Stefan Steuerwald
  2008-11-27 15:59               ` Johannes Berg
  1 sibling, 0 replies; 20+ messages in thread
From: Stefan Steuerwald @ 2008-11-27 15:16 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Johannes Berg, linux-wireless

> But I don't know what to do with set-and-clear.diff
> (I guess it's still one of the three patches, or?, I've attached it again,
> in case johannes missed it? ).
> Is it really necessary or does your application work without it?

I have done a very quick test of that (exactly what I had before MINUS
the set-and-clear.diff).
I don't see any problems.
I recommend not to include this patch at this time.

I am without the hardware until Dec 8, but will continue testing after that.
CCMP is on my list (have only done unencrypted stuff yet).

Best regards,
  Stefan.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: p54: AP mode: no data frame despite traffic indication set in TIM
  2008-11-27 14:42             ` Christian Lamparter
  2008-11-27 15:16               ` Stefan Steuerwald
@ 2008-11-27 15:59               ` Johannes Berg
  2008-11-28 20:09                 ` [RFC] mac80211 & p54: add sta_notify_ps callback Christian Lamparter
  1 sibling, 1 reply; 20+ messages in thread
From: Johannes Berg @ 2008-11-27 15:59 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Stefan Steuerwald, linux-wireless

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

On Thu, 2008-11-27 at 15:42 +0100, Christian Lamparter wrote:

> Isn't there a donation page on the wiki yet? I thought there is such
> a thing already?!

We have something for b43 in particular, and madwifi manages funds too,
but since we don't have anything "entity" wireless in general, no. I
don't even know what we'd use funds for.

johannes

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [RFC] mac80211 & p54: add sta_notify_ps callback
  2008-11-27 15:59               ` Johannes Berg
@ 2008-11-28 20:09                 ` Christian Lamparter
  2008-11-28 20:43                   ` Christian Lamparter
  0 siblings, 1 reply; 20+ messages in thread
From: Christian Lamparter @ 2008-11-28 20:09 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Stefan Steuerwald, linux-wireless

Ahh... I knew it! 

Alright, I looks like I have to change the mac80211 stack for this.
What I need is a callback form ap_sta_ps_end & (ap_sta_ps_start).

It's because (p54_)set_tim - and therefore p54_sta_unlock as well - won't
be executed if the station changes its power state very quickly/or if no package comes in
So we have no change to notify the firmware about the stations new power state
and then the firmware won't let us send anything to the station.  

here is my proposal for mac80211:
---
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 6a1d4ea..341ddb1 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -779,6 +779,20 @@ enum sta_notify_cmd {
 };
 
 /**
+ * enum sta_notify_ps_cmd - sta powersave notify command
+ *
+ * Used with the sta_notify_ps() callback in &struct ieee80211_ops to
+ * notify the driver if a station made a power state transition.
+ *
+ * @STA_WILL_SLEEP: the station will sleep
+ * @STA_WOKE_UP: the sleeping station woke up
+ */
+enum sta_notify_ps_cmd {
+	STA_WILL_SLEEP,
+	STA_WOKE_UP,
+};
+
+/**
  * enum ieee80211_tkip_key_type - get tkip key
  *
  * Used by drivers which need to get a tkip key for skb. Some drivers need a
@@ -1248,6 +1262,9 @@ enum ieee80211_ampdu_mlme_action {
  * @sta_notify: Notifies low level driver about addition or removal
  *	of associated station or AP.
  *
+ * @sta_notify_ps: Notifies low level driver about the power state transition
+ *	of a associated station.
+ *
  * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max),
  *	bursting) for a hardware TX queue.
  *
@@ -1314,6 +1331,8 @@ struct ieee80211_ops {
 	int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value);
 	void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 			enum sta_notify_cmd, struct ieee80211_sta *sta);
+	void (*sta_notify_ps)(struct ieee80211_hw *hw,
+			enum sta_notify_ps_cmd, struct ieee80211_sta *sta);
 	int (*conf_tx)(struct ieee80211_hw *hw, u16 queue,
 		       const struct ieee80211_tx_queue_params *params);
 	int (*get_tx_stats)(struct ieee80211_hw *hw,
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 5a1a60f..3bf056e 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -654,10 +654,14 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
 static void ap_sta_ps_start(struct sta_info *sta)
 {
 	struct ieee80211_sub_if_data *sdata = sta->sdata;
+	struct ieee80211_local *local = sdata->local;
 	DECLARE_MAC_BUF(mac);
 
 	atomic_inc(&sdata->bss->num_sta_ps);
 	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
+	if (local->ops->sta_notify_ps)
+		local->ops->sta_notify_ps(local_to_hw(local), STA_WILL_SLEEP,
+					  &sta->sta);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
 	printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
 	       sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
@@ -675,6 +679,9 @@ static int ap_sta_ps_end(struct sta_info *sta)
 	atomic_dec(&sdata->bss->num_sta_ps);
 
 	clear_sta_flags(sta, WLAN_STA_PS | WLAN_STA_PSPOLL);
+	if (local->ops->sta_notify_ps)
+		local->ops->sta_notify_ps(local_to_hw(local), STA_WOKE_UP,
+					  &sta->sta);
 
 	if (!skb_queue_empty(&sta->ps_tx_buf))
 		sta_info_clear_tim_bit(sta);
---
and here is p54 new code:
---
diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
--- a/drivers/net/wireless/p54/p54common.c	2008-11-28 20:18:53.000000000 +0100
+++ b/drivers/net/wireless/p54/p54common.c	2008-11-28 20:40:02.000000000 +0100
@@ -653,6 +653,10 @@ static void p54_rx_frame_sent(struct iee
 		__skb_unlink(entry, &priv->tx_queue);
 		spin_unlock_irqrestore(&priv->tx_queue.lock, flags);
 
+		entry_hdr = (struct p54_hdr *) entry->data;
+		entry_data = (struct p54_tx_data *) entry_hdr->data;
+		priv->tx_stats[entry_data->hw_queue].len--;
+
 		if (unlikely(entry == priv->cached_beacon)) {
 			kfree_skb(entry);
 			priv->cached_beacon = NULL;
@@ -669,8 +673,6 @@ static void p54_rx_frame_sent(struct iee
 		BUILD_BUG_ON(offsetof(struct ieee80211_tx_info,
 				      status.ampdu_ack_len) != 23);
 
-		entry_hdr = (struct p54_hdr *) entry->data;
-		entry_data = (struct p54_tx_data *) entry_hdr->data;
 		if (entry_hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_ALIGN))
 			pad = entry_data->align[0];
 
@@ -688,7 +690,6 @@ static void p54_rx_frame_sent(struct iee
 			}
 		}
 
-		priv->tx_stats[entry_data->hw_queue].len--;
 		if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) &&
 		     (!payload->status))
 			info->flags |= IEEE80211_TX_STAT_ACK;
@@ -1005,6 +1006,38 @@ static int p54_sta_unlock(struct ieee802
 	return 0;
 }
 
+static void p54_sta_notify_ps(struct ieee80211_hw *dev,
+			      enum sta_notify_ps_cmd notify_cmd,
+			      struct ieee80211_sta *sta)
+{
+	switch (notify_cmd) {
+	case STA_WOKE_UP:
+		p54_sta_unlock(dev, sta->addr);
+		break;
+	default:
+		break;
+	}
+}
+
+static void p54_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
+			      enum sta_notify_cmd notify_cmd,
+			      struct ieee80211_sta *sta)
+{
+	switch (notify_cmd) {
+	case STA_NOTIFY_ADD:
+	case STA_NOTIFY_REMOVE:
+		/*
+		 * Notify the firmware that we don't want or we don't
+		 * need to buffer frames for this station anymore.
+		 */
+
+		p54_sta_unlock(dev, sta->addr);
+		break;
+	default:
+		break;
+	}
+}
+
 static int p54_tx_cancel(struct ieee80211_hw *dev, struct sk_buff *entry)
 {
 	struct p54_common *priv = dev->priv;
@@ -1070,7 +1103,7 @@ static int p54_tx_fill(struct ieee80211_
 		if (info->control.sta)
 			*aid = info->control.sta->aid;
 		else
-			*flags = P54_HDR_FLAG_DATA_OUT_NOCANCEL;
+			*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
 	}
 	return ret;
 }
@@ -1083,7 +1116,7 @@ static int p54_tx(struct ieee80211_hw *d
 	struct p54_hdr *hdr;
 	struct p54_tx_data *txhdr;
 	size_t padding, len, tim_len = 0;
-	int i, j, ridx;
+	int i, j, ridx, ret;
 	u16 hdr_flags = 0, aid = 0;
 	u8 rate, queue;
 	u8 cts_rate = 0x20;
@@ -1093,30 +1126,18 @@ static int p54_tx(struct ieee80211_hw *d
 
 	queue = skb_get_queue_mapping(skb);
 
-	if (p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid)) {
-		current_queue = &priv->tx_stats[queue];
-		if (unlikely(current_queue->len > current_queue->limit))
-			return NETDEV_TX_BUSY;
-		current_queue->len++;
-		current_queue->count++;
-		if (current_queue->len == current_queue->limit)
-			ieee80211_stop_queue(dev, skb_get_queue_mapping(skb));
-	}
+	ret = p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid);
+	current_queue = &priv->tx_stats[queue];
+	if (unlikely((current_queue->len > current_queue->limit) && ret))
+		return NETDEV_TX_BUSY;
+	current_queue->len++;
+	current_queue->count++;
+	if ((current_queue->len == current_queue->limit) && ret)
+		ieee80211_stop_queue(dev, skb_get_queue_mapping(skb));
 
 	padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3;
 	len = skb->len;
 
-	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
-		if (info->control.sta)
-			if (p54_sta_unlock(dev, info->control.sta->addr)) {
-				if (current_queue) {
-					current_queue->len--;
-					current_queue->count--;
-				}
-				return NETDEV_TX_BUSY;
-			}
-	}
-
 	txhdr = (struct p54_tx_data *) skb_push(skb, sizeof(*txhdr) + padding);
 	hdr = (struct p54_hdr *) skb_push(skb, sizeof(*hdr));
 
@@ -1835,6 +1856,8 @@ static const struct ieee80211_ops p54_op
 	.add_interface		= p54_add_interface,
 	.remove_interface	= p54_remove_interface,
 	.set_tim		= p54_set_tim,
+	.sta_notify_ps		= p54_sta_notify_ps,
+	.sta_notify		= p54_sta_notify,
 	.config			= p54_config,
 	.config_interface	= p54_config_interface,
 	.bss_info_changed	= p54_bss_info_changed,
diff -Nurp a/drivers/net/wireless/p54/p54common.h b/drivers/net/wireless/p54/p54common.h
--- a/drivers/net/wireless/p54/p54common.h	2008-11-28 20:18:53.000000000 +0100
+++ b/drivers/net/wireless/p54/p54common.h	2008-11-28 20:27:59.000000000 +0100
@@ -302,7 +302,7 @@ enum p54_frame_sent_status {
 	P54_TX_OK = 0,
 	P54_TX_FAILED,
 	P54_TX_PSM,
-	P54_TX_PSM_CANCELLED
+	P54_TX_PSM_CANCELLED = 4
 };
 
 struct p54_frame_sent {

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [RFC] mac80211 & p54: add sta_notify_ps callback
  2008-11-28 20:09                 ` [RFC] mac80211 & p54: add sta_notify_ps callback Christian Lamparter
@ 2008-11-28 20:43                   ` Christian Lamparter
  2008-11-28 21:18                     ` Johannes Berg
  0 siblings, 1 reply; 20+ messages in thread
From: Christian Lamparter @ 2008-11-28 20:43 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Stefan Steuerwald, linux-wireless

On Friday 28 November 2008 21:09:35 Christian Lamparter wrote:
> Ahh... I knew it! 
> 
> Alright, I looks like I have to change the mac80211 stack for this.
> What I need is a callback form ap_sta_ps_end & (ap_sta_ps_start).
> 
> It's because (p54_)set_tim - and therefore p54_sta_unlock as well - won't
> be executed if the station changes its power state very quickly/or if no package comes in
> So we have no change to notify the firmware about the stations new power state
> and then the firmware won't let us send anything to the station.  
> 
> here is my proposal for mac80211:
> ---
Updates:
	- integrate sta_notify_ps into sta_notify.
	- added trivial switch cases for mac80211_hwsim.c (or else gcc complains)
And BTW: can someone please check the spelling?
---
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index f43da1c..e2c50ed 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -524,6 +524,10 @@ static void mac80211_hwsim_sta_notify(struct ieee80211_hw *hw,
 	case STA_NOTIFY_REMOVE:
 		hwsim_clear_sta_magic(sta);
 		break;
+	case STA_NOTIFY_AWAKE:
+	case STA_NOTIFY_SLEEP:
+		/* TODO: make good use of these callbacks */
+		break;
 	}
 }
 
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 6a1d4ea..7bd8edc 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -768,14 +768,18 @@ struct ieee80211_sta {
 /**
  * enum sta_notify_cmd - sta notify command
  *
- * Used with the sta_notify() callback in &struct ieee80211_ops, this
- * indicates addition and removal of a station to station table.
+ * Used with the sta_notify() callback in &struct ieee80211_ops.
+ * this command indicates addition and removal of a station to
+ * station table, or if a station made a power state transition.
  *
  * @STA_NOTIFY_ADD: a station was added to the station table
  * @STA_NOTIFY_REMOVE: a station being removed from the station table
+ * @STA_NOTIFY_SLEEP: a station is now sleeping
+ * @STA_NOTIFY_AWAKE: a sleeping station woke up
  */
 enum sta_notify_cmd {
-	STA_NOTIFY_ADD, STA_NOTIFY_REMOVE
+	STA_NOTIFY_ADD, STA_NOTIFY_REMOVE,
+	STA_NOTIFY_SLEEP, STA_NOTIFY_AWAKE,
 };
 
 /**
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 5a1a60f..2d311a1 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -654,10 +654,14 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
 static void ap_sta_ps_start(struct sta_info *sta)
 {
 	struct ieee80211_sub_if_data *sdata = sta->sdata;
+	struct ieee80211_local *local = sdata->local;
 	DECLARE_MAC_BUF(mac);
 
 	atomic_inc(&sdata->bss->num_sta_ps);
 	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
+	if (local->ops->sta_notify)
+		local->ops->sta_notify(local_to_hw(local), &sdata->vif,
+				       STA_NOTIFY_SLEEP, &sta->sta);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
 	printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
 	       sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
@@ -675,6 +679,9 @@ static int ap_sta_ps_end(struct sta_info *sta)
 	atomic_dec(&sdata->bss->num_sta_ps);
 
 	clear_sta_flags(sta, WLAN_STA_PS | WLAN_STA_PSPOLL);
+	if (local->ops->sta_notify)
+		local->ops->sta_notify(local_to_hw(local), &sdata->vif,
+				       STA_NOTIFY_AWAKE, &sta->sta);
 
 	if (!skb_queue_empty(&sta->ps_tx_buf))
 		sta_info_clear_tim_bit(sta);
---

p54 updates:
	- update to new api
---
diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
--- a/drivers/net/wireless/p54/p54common.c	2008-11-28 20:18:53.000000000 +0100
+++ b/drivers/net/wireless/p54/p54common.c	2008-11-28 21:37:45.000000000 +0100
@@ -653,6 +653,10 @@ static void p54_rx_frame_sent(struct iee
 		__skb_unlink(entry, &priv->tx_queue);
 		spin_unlock_irqrestore(&priv->tx_queue.lock, flags);
 
+		entry_hdr = (struct p54_hdr *) entry->data;
+		entry_data = (struct p54_tx_data *) entry_hdr->data;
+		priv->tx_stats[entry_data->hw_queue].len--;
+
 		if (unlikely(entry == priv->cached_beacon)) {
 			kfree_skb(entry);
 			priv->cached_beacon = NULL;
@@ -669,8 +673,6 @@ static void p54_rx_frame_sent(struct iee
 		BUILD_BUG_ON(offsetof(struct ieee80211_tx_info,
 				      status.ampdu_ack_len) != 23);
 
-		entry_hdr = (struct p54_hdr *) entry->data;
-		entry_data = (struct p54_tx_data *) entry_hdr->data;
 		if (entry_hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_ALIGN))
 			pad = entry_data->align[0];
 
@@ -688,7 +690,6 @@ static void p54_rx_frame_sent(struct iee
 			}
 		}
 
-		priv->tx_stats[entry_data->hw_queue].len--;
 		if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) &&
 		     (!payload->status))
 			info->flags |= IEEE80211_TX_STAT_ACK;
@@ -1005,6 +1006,26 @@ static int p54_sta_unlock(struct ieee802
 	return 0;
 }
 
+static void p54_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
+			      enum sta_notify_cmd notify_cmd,
+			      struct ieee80211_sta *sta)
+{
+	switch (notify_cmd) {
+	case STA_NOTIFY_ADD:
+	case STA_NOTIFY_REMOVE:
+	case STA_NOTIFY_AWAKE:
+		/*
+		 * Notify the firmware that we don't want or we don't
+		 * need to buffer frames for this station anymore.
+		 */
+
+		p54_sta_unlock(dev, sta->addr);
+		break;
+	default:
+		break;
+	}
+}
+
 static int p54_tx_cancel(struct ieee80211_hw *dev, struct sk_buff *entry)
 {
 	struct p54_common *priv = dev->priv;
@@ -1070,7 +1091,7 @@ static int p54_tx_fill(struct ieee80211_
 		if (info->control.sta)
 			*aid = info->control.sta->aid;
 		else
-			*flags = P54_HDR_FLAG_DATA_OUT_NOCANCEL;
+			*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
 	}
 	return ret;
 }
@@ -1083,7 +1104,7 @@ static int p54_tx(struct ieee80211_hw *d
 	struct p54_hdr *hdr;
 	struct p54_tx_data *txhdr;
 	size_t padding, len, tim_len = 0;
-	int i, j, ridx;
+	int i, j, ridx, ret;
 	u16 hdr_flags = 0, aid = 0;
 	u8 rate, queue;
 	u8 cts_rate = 0x20;
@@ -1093,30 +1114,18 @@ static int p54_tx(struct ieee80211_hw *d
 
 	queue = skb_get_queue_mapping(skb);
 
-	if (p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid)) {
-		current_queue = &priv->tx_stats[queue];
-		if (unlikely(current_queue->len > current_queue->limit))
-			return NETDEV_TX_BUSY;
-		current_queue->len++;
-		current_queue->count++;
-		if (current_queue->len == current_queue->limit)
-			ieee80211_stop_queue(dev, skb_get_queue_mapping(skb));
-	}
+	ret = p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid);
+	current_queue = &priv->tx_stats[queue];
+	if (unlikely((current_queue->len > current_queue->limit) && ret))
+		return NETDEV_TX_BUSY;
+	current_queue->len++;
+	current_queue->count++;
+	if ((current_queue->len == current_queue->limit) && ret)
+		ieee80211_stop_queue(dev, skb_get_queue_mapping(skb));
 
 	padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3;
 	len = skb->len;
 
-	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
-		if (info->control.sta)
-			if (p54_sta_unlock(dev, info->control.sta->addr)) {
-				if (current_queue) {
-					current_queue->len--;
-					current_queue->count--;
-				}
-				return NETDEV_TX_BUSY;
-			}
-	}
-
 	txhdr = (struct p54_tx_data *) skb_push(skb, sizeof(*txhdr) + padding);
 	hdr = (struct p54_hdr *) skb_push(skb, sizeof(*hdr));
 
@@ -1835,6 +1844,7 @@ static const struct ieee80211_ops p54_op
 	.add_interface		= p54_add_interface,
 	.remove_interface	= p54_remove_interface,
 	.set_tim		= p54_set_tim,
+	.sta_notify		= p54_sta_notify,
 	.config			= p54_config,
 	.config_interface	= p54_config_interface,
 	.bss_info_changed	= p54_bss_info_changed,
diff -Nurp a/drivers/net/wireless/p54/p54common.h b/drivers/net/wireless/p54/p54common.h
--- a/drivers/net/wireless/p54/p54common.h	2008-11-28 20:18:53.000000000 +0100
+++ b/drivers/net/wireless/p54/p54common.h	2008-11-28 20:27:59.000000000 +0100
@@ -302,7 +302,7 @@ enum p54_frame_sent_status {
 	P54_TX_OK = 0,
 	P54_TX_FAILED,
 	P54_TX_PSM,
-	P54_TX_PSM_CANCELLED
+	P54_TX_PSM_CANCELLED = 4
 };
 
 struct p54_frame_sent {

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [RFC] mac80211 & p54: add sta_notify_ps callback
  2008-11-28 20:43                   ` Christian Lamparter
@ 2008-11-28 21:18                     ` Johannes Berg
  0 siblings, 0 replies; 20+ messages in thread
From: Johannes Berg @ 2008-11-28 21:18 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: Stefan Steuerwald, linux-wireless

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

On Fri, 2008-11-28 at 21:43 +0100, Christian Lamparter wrote:
> On Friday 28 November 2008 21:09:35 Christian Lamparter wrote:
> > Ahh... I knew it! 
> > 
> > Alright, I looks like I have to change the mac80211 stack for this.
> > What I need is a callback form ap_sta_ps_end & (ap_sta_ps_start).
> > 
> > It's because (p54_)set_tim - and therefore p54_sta_unlock as well - won't
> > be executed if the station changes its power state very quickly/or if no package comes in
> > So we have no change to notify the firmware about the stations new power state
> > and then the firmware won't let us send anything to the station.  
> > 
> > here is my proposal for mac80211:
> > ---
> Updates:
> 	- integrate sta_notify_ps into sta_notify.
> 	- added trivial switch cases for mac80211_hwsim.c (or else gcc complains)

Looks fine to me.

> And BTW: can someone please check the spelling?

And that too.

> ---
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index f43da1c..e2c50ed 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -524,6 +524,10 @@ static void mac80211_hwsim_sta_notify(struct ieee80211_hw *hw,
>  	case STA_NOTIFY_REMOVE:
>  		hwsim_clear_sta_magic(sta);
>  		break;
> +	case STA_NOTIFY_AWAKE:
> +	case STA_NOTIFY_SLEEP:
> +		/* TODO: make good use of these callbacks */
> +		break;
>  	}
>  }
>  
> diff --git a/include/net/mac80211.h b/include/net/mac80211.h
> index 6a1d4ea..7bd8edc 100644
> --- a/include/net/mac80211.h
> +++ b/include/net/mac80211.h
> @@ -768,14 +768,18 @@ struct ieee80211_sta {
>  /**
>   * enum sta_notify_cmd - sta notify command
>   *
> - * Used with the sta_notify() callback in &struct ieee80211_ops, this
> - * indicates addition and removal of a station to station table.
> + * Used with the sta_notify() callback in &struct ieee80211_ops.
> + * this command indicates addition and removal of a station to
> + * station table, or if a station made a power state transition.
>   *
>   * @STA_NOTIFY_ADD: a station was added to the station table
>   * @STA_NOTIFY_REMOVE: a station being removed from the station table
> + * @STA_NOTIFY_SLEEP: a station is now sleeping
> + * @STA_NOTIFY_AWAKE: a sleeping station woke up
>   */
>  enum sta_notify_cmd {
> -	STA_NOTIFY_ADD, STA_NOTIFY_REMOVE
> +	STA_NOTIFY_ADD, STA_NOTIFY_REMOVE,
> +	STA_NOTIFY_SLEEP, STA_NOTIFY_AWAKE,
>  };
>  
>  /**
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index 5a1a60f..2d311a1 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -654,10 +654,14 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
>  static void ap_sta_ps_start(struct sta_info *sta)
>  {
>  	struct ieee80211_sub_if_data *sdata = sta->sdata;
> +	struct ieee80211_local *local = sdata->local;
>  	DECLARE_MAC_BUF(mac);
>  
>  	atomic_inc(&sdata->bss->num_sta_ps);
>  	set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
> +	if (local->ops->sta_notify)
> +		local->ops->sta_notify(local_to_hw(local), &sdata->vif,
> +				       STA_NOTIFY_SLEEP, &sta->sta);
>  #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
>  	printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
>  	       sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
> @@ -675,6 +679,9 @@ static int ap_sta_ps_end(struct sta_info *sta)
>  	atomic_dec(&sdata->bss->num_sta_ps);
>  
>  	clear_sta_flags(sta, WLAN_STA_PS | WLAN_STA_PSPOLL);
> +	if (local->ops->sta_notify)
> +		local->ops->sta_notify(local_to_hw(local), &sdata->vif,
> +				       STA_NOTIFY_AWAKE, &sta->sta);
>  
>  	if (!skb_queue_empty(&sta->ps_tx_buf))
>  		sta_info_clear_tim_bit(sta);
> ---
> 
> p54 updates:
> 	- update to new api
> ---
> diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
> --- a/drivers/net/wireless/p54/p54common.c	2008-11-28 20:18:53.000000000 +0100
> +++ b/drivers/net/wireless/p54/p54common.c	2008-11-28 21:37:45.000000000 +0100
> @@ -653,6 +653,10 @@ static void p54_rx_frame_sent(struct iee
>  		__skb_unlink(entry, &priv->tx_queue);
>  		spin_unlock_irqrestore(&priv->tx_queue.lock, flags);
>  
> +		entry_hdr = (struct p54_hdr *) entry->data;
> +		entry_data = (struct p54_tx_data *) entry_hdr->data;
> +		priv->tx_stats[entry_data->hw_queue].len--;
> +
>  		if (unlikely(entry == priv->cached_beacon)) {
>  			kfree_skb(entry);
>  			priv->cached_beacon = NULL;
> @@ -669,8 +673,6 @@ static void p54_rx_frame_sent(struct iee
>  		BUILD_BUG_ON(offsetof(struct ieee80211_tx_info,
>  				      status.ampdu_ack_len) != 23);
>  
> -		entry_hdr = (struct p54_hdr *) entry->data;
> -		entry_data = (struct p54_tx_data *) entry_hdr->data;
>  		if (entry_hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_ALIGN))
>  			pad = entry_data->align[0];
>  
> @@ -688,7 +690,6 @@ static void p54_rx_frame_sent(struct iee
>  			}
>  		}
>  
> -		priv->tx_stats[entry_data->hw_queue].len--;
>  		if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) &&
>  		     (!payload->status))
>  			info->flags |= IEEE80211_TX_STAT_ACK;
> @@ -1005,6 +1006,26 @@ static int p54_sta_unlock(struct ieee802
>  	return 0;
>  }
>  
> +static void p54_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
> +			      enum sta_notify_cmd notify_cmd,
> +			      struct ieee80211_sta *sta)
> +{
> +	switch (notify_cmd) {
> +	case STA_NOTIFY_ADD:
> +	case STA_NOTIFY_REMOVE:
> +	case STA_NOTIFY_AWAKE:
> +		/*
> +		 * Notify the firmware that we don't want or we don't
> +		 * need to buffer frames for this station anymore.
> +		 */
> +
> +		p54_sta_unlock(dev, sta->addr);
> +		break;
> +	default:
> +		break;
> +	}
> +}
> +
>  static int p54_tx_cancel(struct ieee80211_hw *dev, struct sk_buff *entry)
>  {
>  	struct p54_common *priv = dev->priv;
> @@ -1070,7 +1091,7 @@ static int p54_tx_fill(struct ieee80211_
>  		if (info->control.sta)
>  			*aid = info->control.sta->aid;
>  		else
> -			*flags = P54_HDR_FLAG_DATA_OUT_NOCANCEL;
> +			*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
>  	}
>  	return ret;
>  }
> @@ -1083,7 +1104,7 @@ static int p54_tx(struct ieee80211_hw *d
>  	struct p54_hdr *hdr;
>  	struct p54_tx_data *txhdr;
>  	size_t padding, len, tim_len = 0;
> -	int i, j, ridx;
> +	int i, j, ridx, ret;
>  	u16 hdr_flags = 0, aid = 0;
>  	u8 rate, queue;
>  	u8 cts_rate = 0x20;
> @@ -1093,30 +1114,18 @@ static int p54_tx(struct ieee80211_hw *d
>  
>  	queue = skb_get_queue_mapping(skb);
>  
> -	if (p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid)) {
> -		current_queue = &priv->tx_stats[queue];
> -		if (unlikely(current_queue->len > current_queue->limit))
> -			return NETDEV_TX_BUSY;
> -		current_queue->len++;
> -		current_queue->count++;
> -		if (current_queue->len == current_queue->limit)
> -			ieee80211_stop_queue(dev, skb_get_queue_mapping(skb));
> -	}
> +	ret = p54_tx_fill(dev, skb, info, &queue, &tim_len, &hdr_flags, &aid);
> +	current_queue = &priv->tx_stats[queue];
> +	if (unlikely((current_queue->len > current_queue->limit) && ret))
> +		return NETDEV_TX_BUSY;
> +	current_queue->len++;
> +	current_queue->count++;
> +	if ((current_queue->len == current_queue->limit) && ret)
> +		ieee80211_stop_queue(dev, skb_get_queue_mapping(skb));
>  
>  	padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3;
>  	len = skb->len;
>  
> -	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) {
> -		if (info->control.sta)
> -			if (p54_sta_unlock(dev, info->control.sta->addr)) {
> -				if (current_queue) {
> -					current_queue->len--;
> -					current_queue->count--;
> -				}
> -				return NETDEV_TX_BUSY;
> -			}
> -	}
> -
>  	txhdr = (struct p54_tx_data *) skb_push(skb, sizeof(*txhdr) + padding);
>  	hdr = (struct p54_hdr *) skb_push(skb, sizeof(*hdr));
>  
> @@ -1835,6 +1844,7 @@ static const struct ieee80211_ops p54_op
>  	.add_interface		= p54_add_interface,
>  	.remove_interface	= p54_remove_interface,
>  	.set_tim		= p54_set_tim,
> +	.sta_notify		= p54_sta_notify,
>  	.config			= p54_config,
>  	.config_interface	= p54_config_interface,
>  	.bss_info_changed	= p54_bss_info_changed,
> diff -Nurp a/drivers/net/wireless/p54/p54common.h b/drivers/net/wireless/p54/p54common.h
> --- a/drivers/net/wireless/p54/p54common.h	2008-11-28 20:18:53.000000000 +0100
> +++ b/drivers/net/wireless/p54/p54common.h	2008-11-28 20:27:59.000000000 +0100
> @@ -302,7 +302,7 @@ enum p54_frame_sent_status {
>  	P54_TX_OK = 0,
>  	P54_TX_FAILED,
>  	P54_TX_PSM,
> -	P54_TX_PSM_CANCELLED
> +	P54_TX_PSM_CANCELLED = 4
>  };
>  
>  struct p54_frame_sent {
> 

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2008-11-28 21:18 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-24 20:24 p54: AP mode: no data frame despite traffic indication set in TIM Christian Lamparter
2008-11-26 13:38 ` Stefan Steuerwald
2008-11-26 21:13   ` Christian Lamparter
2008-11-27  5:34     ` Stefan Steuerwald
2008-11-27  8:57     ` Stefan Steuerwald
2008-11-27 11:06       ` Christian Lamparter
2008-11-27 14:05         ` Stefan Steuerwald
2008-11-27 14:13           ` Johannes Berg
2008-11-27 14:42             ` Christian Lamparter
2008-11-27 15:16               ` Stefan Steuerwald
2008-11-27 15:59               ` Johannes Berg
2008-11-28 20:09                 ` [RFC] mac80211 & p54: add sta_notify_ps callback Christian Lamparter
2008-11-28 20:43                   ` Christian Lamparter
2008-11-28 21:18                     ` Johannes Berg
  -- strict thread matches above, loose matches on Subject: below --
2008-11-21 14:12 p54: AP mode: no data frame despite traffic indication set in TIM Stefan Steuerwald
2008-11-24 13:36 ` Stefan Steuerwald
2008-11-24 13:41   ` Johannes Berg
2008-11-24 13:37 ` Johannes Berg
2008-11-24 15:19   ` Christian Lamparter
2008-11-24 16:51     ` Stefan Steuerwald

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).