* Re: slow performance on disk/network i/o full speed after drop_caches
From: Zhu Yanhai @ 2011-08-26 3:30 UTC (permalink / raw)
To: Wu Fengguang
Cc: Stefan Priebe, Pekka Enberg, LKML, linux-mm@kvack.org,
Andrew Morton, Mel Gorman, Jens Axboe, Linux Netdev List
In-Reply-To: <20110826032601.GA26282@localhost>
Fengguang,
Maybe it's because zone_reclaim_mode? We often have received some reports that
scp or something like that is slow with no reason, and mostly it's due
to someone
enabled zone_reclaim_mode by mistake.
Stefan, is your zone_reclaim_mode enabled? try 'cat
/proc/sys/vm/zone_reclaim_mode',
and echo 0 to it to disable.
Thanks,
Zhu Yanhai
2011/8/26 Wu Fengguang <fengguang.wu@intel.com>:
> On Fri, Aug 26, 2011 at 11:13:07AM +0800, Stefan Priebe wrote:
>>
>> >> There is at least a numastat proc file.
>> >
>> > Thanks. This shows that node0 is accessed 10x more than node1.
>>
>> What can i do to prevent this or isn't this normal when a machine mostly idles so processes are mostly processed by cpu0.
>
> Yes, that's normal. However it should explain why it's slow even when
> there are lots of free pages _globally_.
>
>> >
>> >> complete ps output:
>> >> http://pastebin.com/raw.php?i=b948svzN
>> >
>> > In that log, scp happens to be in R state and also no other tasks in D
>> > state. Would you retry in the hope of catching some stucked state?
>> Sadly not as the sysrq trigger has rebootet the machine and it will now run fine for 1 or 2 days.
>
> Oops, sorry! It might be possible to reproduce the issue by manually
> eating all of the memory with sparse file data:
>
> truncate -s 1T 1T
> cp 1T /dev/null
>
>> >
>> >>> echo t> /proc/sysrq-trigger
>> >> sadly i wa sonly able to grab the output in this crazy format:
>> >> http://pastebin.com/raw.php?i=MBXvvyH1
>> >
>> > It's pretty readable dmesg, except that the data is incomplete and
>> > there are nothing valuable in the uploaded portion..
>> That was everything i could grab through netconsole. Is there a better way?
>
> netconsole is enough. The partial output should be due to the reboot...
>
> Thanks,
> Fengguang
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* linux-next: manual merge of the staging tree with the net tree
From: Stephen Rothwell @ 2011-08-26 3:47 UTC (permalink / raw)
To: Greg KH
Cc: linux-next, linux-kernel, Jiri Pirko, David Miller, netdev,
Larry Finger
[-- Attachment #1: Type: text/plain, Size: 477 bytes --]
Hi Greg,
Today's linux-next merge of the staging tree got a conflict in
drivers/staging/rtl8192e/r8192E_core.c between commit afc4b13df143 ("net:
remove use of ndo_set_multicast_list in drivers") from the net tree and
commit 09505184ec3d ("staging: rtl8192e: Remove files that are not used")
from the staging tree.
The latter removed the file, so I did that.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply
* Re: strange routing issue--packets stop getting forwarded for a live connection
From: Corey Hickey @ 2011-08-26 3:50 UTC (permalink / raw)
To: Julian Anastasov; +Cc: Linux Netdev List
In-Reply-To: <alpine.LFD.2.00.1108211142180.1581@ja.ssi.bg>
On 2011-08-21 02:02, Julian Anastasov wrote:
>>>> 3. MTU size; 1500 on eth0 and 1406 on tun0. Bigger packets have been
>>>> transferred fine.
>>>
>>> Lower MTU, it can be PMTUD problem. At 04:50:24.112658
>>> I see 7801:9169 is 1420 bytes and no ICMP FRAG NEEDED is generated.
>>> May be these two regressions explain it:
>>>
>>> http://marc.info/?l=linux-netdev&m=131342172722536&w=2
>>>
>>> There are 2 fixes you can try or more recent kernel
>>> tree, for example 3.1-rc2 has the fixes.
>>
>> Many thanks for your reply--it looks like you're on to something. You
>> didn't specify which interface to lower the MTU on, so I tried them each
>> in turn, and found that lowering the MTU on the client machine to 1406
>> (matching tun0 on the router) did indeed solve the problem. That makes
>> sense in retrospect.
>
> I just wanted to note the difference in MTUs
> as a possible cause that triggers the problem. And after
> your confirmation I think the new/patched kernel should work
> without playing with MTUs.
I finally got a chance to test this, and the patched kernel works fine.
Thank you!
-Corey
^ permalink raw reply
* Re: [PATCH net-next-2.6] e1000: save skb counts in TX to avoid cache misses
From: Jeff Kirsher @ 2011-08-26 3:52 UTC (permalink / raw)
To: Dean Nelson; +Cc: netdev@vger.kernel.org, Andy Gospodarek
In-Reply-To: <20110826003923.4083.24862.email-sent-by-dnelson@localhost6.localdomain6>
[-- Attachment #1: Type: text/plain, Size: 1186 bytes --]
On Thu, 2011-08-25 at 17:39 -0700, Dean Nelson wrote:
> Virtual Machines with emulated e1000 network adapter running on
> Parallels'
> server were seeing kernel panics due to the e1000 driver dereferencing
> an
> unexpected NULL pointer retrieved from buffer_info->skb.
>
> The problem has been addressed for the e1000e driver, but not for the
> e1000.
> Since the two drivers share similar code in the affected area, a port
> of the
> following e1000e driver commit solves the issue for the e1000 driver:
>
> commit 9ed318d546a29d7a591dbe648fd1a2efe3be1180
> Author: Tom Herbert <therbert@google.com>
> Date: Wed May 5 14:02:27 2010 +0000
>
> e1000e: save skb counts in TX to avoid cache misses
>
> In e1000_tx_map, precompute number of segements and bytecounts
> which
> are derived from fields in skb; these are stored in buffer_info.
> When
> cleaning tx in e1000_clean_tx_irq use the values in the associated
> buffer_info for statistics counting, this eliminates cache misses
> on skb fields.
>
>
> Signed-off-by: Dean Nelson <dnelson@redhat.com>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Looks fine.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply
* Re: linux-next: manual merge of the staging tree with the net tree
From: Greg KH @ 2011-08-26 4:33 UTC (permalink / raw)
To: Stephen Rothwell
Cc: linux-next, linux-kernel, Jiri Pirko, David Miller, netdev,
Larry Finger
In-Reply-To: <20110826134705.0d5b6767777f0af2f8667731@canb.auug.org.au>
On Fri, Aug 26, 2011 at 01:47:05PM +1000, Stephen Rothwell wrote:
> Hi Greg,
>
> Today's linux-next merge of the staging tree got a conflict in
> drivers/staging/rtl8192e/r8192E_core.c between commit afc4b13df143 ("net:
> remove use of ndo_set_multicast_list in drivers") from the net tree and
> commit 09505184ec3d ("staging: rtl8192e: Remove files that are not used")
> from the staging tree.
>
> The latter removed the file, so I did that.
Thanks, that should be the correct thing :)
greg k-h
^ permalink raw reply
* Re: linux-next: manual merge of the staging tree with the net tree
From: Larry Finger @ 2011-08-26 5:35 UTC (permalink / raw)
To: Greg KH
Cc: Stephen Rothwell, linux-next, linux-kernel, Jiri Pirko,
David Miller, netdev
In-Reply-To: <20110826043357.GA17686@kroah.com>
On 08/25/2011 11:33 PM, Greg KH wrote:
> On Fri, Aug 26, 2011 at 01:47:05PM +1000, Stephen Rothwell wrote:
>> Hi Greg,
>>
>> Today's linux-next merge of the staging tree got a conflict in
>> drivers/staging/rtl8192e/r8192E_core.c between commit afc4b13df143 ("net:
>> remove use of ndo_set_multicast_list in drivers") from the net tree and
>> commit 09505184ec3d ("staging: rtl8192e: Remove files that are not used")
>> from the staging tree.
>>
>> The latter removed the file, so I did that.
>
> Thanks, that should be the correct thing :)
I'm a little confused. The files deleted in 09505184ec3d are not used at all in
the new rtl8192e. The only way it makes sense is you did not have the new
version when the the error with r8192E_core.c occurred.
The error that was reported to me was
"drivers/staging/rtl8192e/rtl_core.c:2917:2: error: unknown field
'ndo_set_multicast_list' specified in initializer". The file rtl_core.c is
needed with the new version. Yes, the names are quite confusing, which is part
of the reason it took so long to delete the unused ones.
I have tested Stephan's patch and will send it to Greg with my SOB.
Larry
^ permalink raw reply
* [PATCH net-next ] Fix time-lag of IFF_RUNNING flag consistency between vlan and real devices
From: Mitsuo Hayasaka @ 2011-08-26 6:02 UTC (permalink / raw)
To: Patrick McHardy, David S. Miller, Eric Dumazet,
MichałMirosław
Cc: netdev, linux-kernel, yrl.pp-manager.tt, Mitsuo Hayasaka,
Patrick McHardy, David S. Miller, Eric Dumazet,
"MichałMirosław", Tom Herbert, Jesse Gross
There is a time-lag of IFF_RUNNING flag consistency between vlan and real
devices when the real devices are in problem such as link or cable broken.
This leads to a degradation of Availability such as a delay of failover in
HA systems using vlan since the detection of the problem at real device is
delayed.
Why this happens:
Network devices' flags can be checked using ioctl with SIOCGIFFLAGS. When
vlan technique is used, it checks the flags of vlan device, not real
device.
Patch:
This patch adds vlan-device check into dev_get_flags(). So, it can check
flags of the real device even if the vlan is used.
Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
Cc: Patrick McHardy <kaber@trash.net>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
Cc: Tom Herbert <therbert@google.com>
Cc: Jesse Gross <jesse@nicira.com>
---
include/linux/if_vlan.h | 2 +-
net/core/dev.c | 7 +++++++
2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 44da482..4df4e6f 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -91,7 +91,7 @@ struct vlan_group {
struct rcu_head rcu;
};
-static inline int is_vlan_dev(struct net_device *dev)
+static inline int is_vlan_dev(const struct net_device *dev)
{
return dev->priv_flags & IFF_802_1Q_VLAN;
}
diff --git a/net/core/dev.c b/net/core/dev.c
index a4306f7..527e21b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4603,6 +4603,13 @@ unsigned dev_get_flags(const struct net_device *dev)
(dev->gflags & (IFF_PROMISC |
IFF_ALLMULTI));
+ /*
+ * If we're trying to get flags on a vlan device
+ * use the underlying physical device instead.
+ */
+ if (is_vlan_dev(dev))
+ dev = vlan_dev_real_dev(dev);
+
if (netif_running(dev)) {
if (netif_oper_up(dev))
flags |= IFF_RUNNING;
^ permalink raw reply related
* Re: [PATCH net-next ] Fix time-lag of IFF_RUNNING flag consistency between vlan and real devices
From: Stephen Hemminger @ 2011-08-26 6:08 UTC (permalink / raw)
To: Mitsuo Hayasaka
Cc: Patrick McHardy, David S. Miller, Eric Dumazet,
MichałMirosław, Tom Herbert, Jesse Gross, herbert,
netdev, linux-kernel, yrl.pp-manager.tt
In-Reply-To: <20110826060257.5304.62723.stgit@ltc219.sdl.hitachi.co.jp>
On Fri, 26 Aug 2011 15:02:57 +0900
Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com> wrote:
> There is a time-lag of IFF_RUNNING flag consistency between vlan and real
> devices when the real devices are in problem such as link or cable broken.
> This leads to a degradation of Availability such as a delay of failover in
> HA systems using vlan since the detection of the problem at real device is
> delayed.
>
> Why this happens:
> Network devices' flags can be checked using ioctl with SIOCGIFFLAGS. When
> vlan technique is used, it checks the flags of vlan device, not real
> device.
>
> Patch:
> This patch adds vlan-device check into dev_get_flags(). So, it can check
> flags of the real device even if the vlan is used.
>
> Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
> Cc: Patrick McHardy <kaber@trash.net>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <eric.dumazet@gmail.com>
> Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
> Cc: Tom Herbert <therbert@google.com>
> Cc: Jesse Gross <jesse@nicira.com>
I don't think this is the right way to solve the problem.
The flags are supposed to propagate back from real device to vlan
via network notifications.
Just doing this for ioctl is not enough, API's other than user space depend on this.
Also the user may have manually set different flags on vlan than on
the real device.
^ permalink raw reply
* Re: slow performance on disk/network i/o full speed after drop_caches
From: Stefan Priebe - Profihost AG @ 2011-08-26 6:18 UTC (permalink / raw)
To: Zhu Yanhai
Cc: Wu Fengguang, Pekka Enberg, LKML, linux-mm@kvack.org,
Andrew Morton, Mel Gorman, Jens Axboe, Linux Netdev List
In-Reply-To: <CAC8teKXqZktBK7+GbLgHn-2k+zjjf8uieRM_q_V7JK7ePAk9Lg@mail.gmail.com>
Yanhai,
> Stefan, is your zone_reclaim_mode enabled? try 'cat
> /proc/sys/vm/zone_reclaim_mode',
> and echo 0 to it to disable.
you're abssolutely corect zone_reclaim_mode is on - but why?
There must be some linux software which switches it on.
~# grep 'zone_reclaim_mode' /etc/sysctl.* -r -i
~#
also
~# grep 'zone_reclaim_mode' /etc/sysctl.* -r -i
~#
tells us nothing.
I've then read this:
"zone_reclaim_mode is set during bootup to 1 if it is determined that
pages from remote zones will cause a measurable performance reduction.
The page allocator will then reclaim easily reusable pages (those page
cache pages that are currently not used) before allocating off node pages."
Why does the kernel do that here in our case on these machines.
Stefan
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* [PATCH] p54spi: add "spi:" prefix for stlc45xx modalias
From: Axel Lin @ 2011-08-26 6:34 UTC (permalink / raw)
To: linux-kernel
Cc: Christian Lamparter, John W. Linville, linux-wireless, netdev
Since commit e0626e38 (spi: prefix modalias with "spi:"),
the spi modalias is prefixed with "spi:".
This patch adds "spi:" prefix for modalias of stlc45xx.
Also move it to be group with other modalias.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
drivers/net/wireless/p54/p54spi.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/p54/p54spi.c b/drivers/net/wireless/p54/p54spi.c
index 6d9204fe..f18df82 100644
--- a/drivers/net/wireless/p54/p54spi.c
+++ b/drivers/net/wireless/p54/p54spi.c
@@ -41,7 +41,6 @@
#endif /* CONFIG_P54_SPI_DEFAULT_EEPROM */
MODULE_FIRMWARE("3826.arm");
-MODULE_ALIAS("stlc45xx");
/*
* gpios should be handled in board files and provided via platform data,
@@ -738,3 +737,4 @@ MODULE_LICENSE("GPL");
MODULE_AUTHOR("Christian Lamparter <chunkeey@web.de>");
MODULE_ALIAS("spi:cx3110x");
MODULE_ALIAS("spi:p54spi");
+MODULE_ALIAS("spi:stlc45xx");
--
1.7.4.1
^ permalink raw reply related
* Re: [PATCH net-next ] Fix time-lag of IFF_RUNNING flag consistency between vlan and real devices
From: Herbert Xu @ 2011-08-26 6:45 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Mitsuo Hayasaka, Patrick McHardy, David S. Miller, Eric Dumazet,
MichałMirosław, Tom Herbert, Jesse Gross, netdev,
linux-kernel, yrl.pp-manager.tt
In-Reply-To: <20110825230859.11b2b132@nehalam.ftrdhcpuser.net>
On Thu, Aug 25, 2011 at 11:08:59PM -0700, Stephen Hemminger wrote:
>
> Just doing this for ioctl is not enough, API's other than user space depend on this.
> Also the user may have manually set different flags on vlan than on
> the real device.
Right, anything that tests netif_carrier_ok directly on the VLAN
device will still be delayed.
Now I remember discussing this issue in Japan. However, I can't
recall the exact scenario in which the delay occured.
Is the issue with the link status going down on the real device,
or the real device coming up?
IIRC we already have mechanisms in place to ensure that down events
are not delayed by linkwatch. Of course it is possible that this
isn't working for some reason, or some other part of the system is
causing the delay.
So please clarify the scenario for us Hayasaka-san. Also please
let us know how you measured the delay.
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply
* [PATCH 0/2] ath: Reduce logging message code size
From: Joe Perches @ 2011-08-26 8:56 UTC (permalink / raw)
To: linux-wireless; +Cc: netdev, linux-kernel
Reduces size ~5KB in an allyesconfig.
Joe Perches (2):
ath: Make ath_dbg void not int
ath: Make ath_printk void not int and remove unused struct ath_common *
drivers/net/wireless/ath/ath.h | 48 +++++++++++++++++++-------------------
drivers/net/wireless/ath/main.c | 8 +-----
2 files changed, 26 insertions(+), 30 deletions(-)
--
1.7.6.405.gc1be0
^ permalink raw reply
* [PATCH 2/2] ath: Make ath_printk void not int and remove unused struct ath_common *
From: Joe Perches @ 2011-08-26 8:56 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: John W. Linville, linux-wireless, netdev, linux-kernel
In-Reply-To: <cover.1314347556.git.joe@perches.com>
Changing the return type and removing the unused argument from
ath_printk reduces code size.
Add an __always_unused struct ath_common * to the macros
that call ath_printk to avoid unused variable warnings.
$ size drivers/net/wireless/ath/built-in.o*
text data bss dec hex filename
1159859 16235 212000 1388094 152e3e drivers/net/wireless/ath/built-in.o.new
1164175 16235 212032 1392442 153f3a drivers/net/wireless/ath/built-in.o.old
Signed-off-by: Joe Perches <joe@perches.com>
---
drivers/net/wireless/ath/ath.h | 27 ++++++++++++++++-----------
drivers/net/wireless/ath/main.c | 8 ++------
2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
index a3f8505..9891fb6 100644
--- a/drivers/net/wireless/ath/ath.h
+++ b/drivers/net/wireless/ath/ath.h
@@ -178,24 +178,29 @@ bool ath_hw_keyreset(struct ath_common *common, u16 entry);
void ath_hw_cycle_counters_update(struct ath_common *common);
int32_t ath_hw_get_listen_time(struct ath_common *common);
-extern __attribute__((format (printf, 3, 4)))
-int ath_printk(const char *level, struct ath_common *common,
- const char *fmt, ...);
+extern __attribute__((format (printf, 2, 3)))
+void ath_printk(const char *level, const char *fmt, ...);
+
+#define _ath_printk(level, common, fmt, ...) \
+do { \
+ __always_unused struct ath_common *unused = common; \
+ ath_printk(level, fmt, ##__VA_ARGS__); \
+} while (0)
#define ath_emerg(common, fmt, ...) \
- ath_printk(KERN_EMERG, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_EMERG, common, fmt, ##__VA_ARGS__)
#define ath_alert(common, fmt, ...) \
- ath_printk(KERN_ALERT, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_ALERT, common, fmt, ##__VA_ARGS__)
#define ath_crit(common, fmt, ...) \
- ath_printk(KERN_CRIT, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_CRIT, common, fmt, ##__VA_ARGS__)
#define ath_err(common, fmt, ...) \
- ath_printk(KERN_ERR, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_ERR, common, fmt, ##__VA_ARGS__)
#define ath_warn(common, fmt, ...) \
- ath_printk(KERN_WARNING, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_WARNING, common, fmt, ##__VA_ARGS__)
#define ath_notice(common, fmt, ...) \
- ath_printk(KERN_NOTICE, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_NOTICE, common, fmt, ##__VA_ARGS__)
#define ath_info(common, fmt, ...) \
- ath_printk(KERN_INFO, common, fmt, ##__VA_ARGS__)
+ _ath_printk(KERN_INFO, common, fmt, ##__VA_ARGS__)
/**
* enum ath_debug_level - atheros wireless debug level
@@ -250,7 +255,7 @@ enum ATH_DEBUG {
#define ath_dbg(common, dbg_mask, fmt, ...) \
do { \
if ((common)->debug_mask & dbg_mask) \
- ath_printk(KERN_DEBUG, common, fmt, ##__VA_ARGS__); \
+ _ath_printk(KERN_DEBUG, common, fmt, ##__VA_ARGS__); \
} while (0)
#define ATH_DBG_WARN(foo, arg...) WARN(foo, arg)
diff --git a/drivers/net/wireless/ath/main.c b/drivers/net/wireless/ath/main.c
index c325202..d9218fe 100644
--- a/drivers/net/wireless/ath/main.c
+++ b/drivers/net/wireless/ath/main.c
@@ -57,22 +57,18 @@ struct sk_buff *ath_rxbuf_alloc(struct ath_common *common,
}
EXPORT_SYMBOL(ath_rxbuf_alloc);
-int ath_printk(const char *level, struct ath_common *common,
- const char *fmt, ...)
+void ath_printk(const char *level, const char *fmt, ...)
{
struct va_format vaf;
va_list args;
- int rtn;
va_start(args, fmt);
vaf.fmt = fmt;
vaf.va = &args;
- rtn = printk("%sath: %pV", level, &vaf);
+ printk("%sath: %pV", level, &vaf);
va_end(args);
-
- return rtn;
}
EXPORT_SYMBOL(ath_printk);
--
1.7.6.405.gc1be0
^ permalink raw reply related
* [PATCH 1/2] ath: Make ath_dbg void not int
From: Joe Perches @ 2011-08-26 8:56 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: John W. Linville, linux-wireless, netdev, linux-kernel
In-Reply-To: <cover.1314347556.git.joe@perches.com>
The return value is never used so make it void.
Reduces object size a tiny bit.
$ size drivers/net/wireless/ath/built-in.o*
text data bss dec hex filename
1164175 16235 212032 1392442 153f3a drivers/net/wireless/ath/built-in.o.new
1164819 16235 212032 1393086 1541be drivers/net/wireless/ath/built-in.o.old
Signed-off-by: Joe Perches <joe@perches.com>
---
drivers/net/wireless/ath/ath.h | 29 ++++++++++++-----------------
1 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
index 17c4b56..a3f8505 100644
--- a/drivers/net/wireless/ath/ath.h
+++ b/drivers/net/wireless/ath/ath.h
@@ -178,8 +178,9 @@ bool ath_hw_keyreset(struct ath_common *common, u16 entry);
void ath_hw_cycle_counters_update(struct ath_common *common);
int32_t ath_hw_get_listen_time(struct ath_common *common);
-extern __attribute__ ((format (printf, 3, 4))) int
-ath_printk(const char *level, struct ath_common *common, const char *fmt, ...);
+extern __attribute__((format (printf, 3, 4)))
+int ath_printk(const char *level, struct ath_common *common,
+ const char *fmt, ...);
#define ath_emerg(common, fmt, ...) \
ath_printk(KERN_EMERG, common, fmt, ##__VA_ARGS__)
@@ -246,27 +247,21 @@ enum ATH_DEBUG {
#ifdef CONFIG_ATH_DEBUG
-#define ath_dbg(common, dbg_mask, fmt, ...) \
-({ \
- int rtn; \
- if ((common)->debug_mask & dbg_mask) \
- rtn = ath_printk(KERN_DEBUG, common, fmt, \
- ##__VA_ARGS__); \
- else \
- rtn = 0; \
- \
- rtn; \
-})
+#define ath_dbg(common, dbg_mask, fmt, ...) \
+do { \
+ if ((common)->debug_mask & dbg_mask) \
+ ath_printk(KERN_DEBUG, common, fmt, ##__VA_ARGS__); \
+} while (0)
+
#define ATH_DBG_WARN(foo, arg...) WARN(foo, arg)
#define ATH_DBG_WARN_ON_ONCE(foo) WARN_ON_ONCE(foo)
#else
-static inline __attribute__ ((format (printf, 3, 4))) int
-ath_dbg(struct ath_common *common, enum ATH_DEBUG dbg_mask,
- const char *fmt, ...)
+static inline __attribute__((format (printf, 3, 4)))
+void ath_dbg(struct ath_common *common, enum ATH_DEBUG dbg_mask,
+ const char *fmt, ...)
{
- return 0;
}
#define ATH_DBG_WARN(foo, arg...) do {} while (0)
#define ATH_DBG_WARN_ON_ONCE(foo) ({ \
--
1.7.6.405.gc1be0
^ permalink raw reply related
* 3.1.0-rc2: irq/112-eth0-Tx: page allocation failure: (w/frame pointers enabled)
From: Justin Piszcz @ 2011-08-26 12:14 UTC (permalink / raw)
To: linux-kernel; +Cc: netdev, Alan Piszcz
Hello,
Why does this occur on a machine with 48GB of memory (used mainly as a router)
and backup server, is it a kernel bug?
top - 08:12:19 up 8 days, 21 min, 73 users, load average: 0.05, 0.10, 0.15
Tasks: 604 total, 1 running, 603 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.4%us, 1.0%sy, 0.1%ni, 97.0%id, 0.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 49556624k total, 49038776k used, 517848k free, 619836k buffers
Swap: 2097148k total, 489076k used, 1608072k free, 36790936k cached
Kernel messages:
[687946.708409] irq/112-eth0-Tx: page allocation failure: order:1, mode:0x20
[687946.711519] Pid: 18665, comm: irq/112-eth0-Tx Not tainted 3.1.0-rc2 #1
[687946.714289] Call Trace:
[687946.716759] <IRQ> [<ffffffff8108673e>] warn_alloc_failed+0xee/0x140
[687946.719998] [<ffffffff8108970c>] __alloc_pages_nodemask+0x54c/0x770
[687946.722422] [<ffffffff810b8d8d>] kmem_getpages+0x5d/0x160
[687946.724869] [<ffffffff810b9f4e>] fallback_alloc+0x1be/0x1d0
[687946.727044] [<ffffffff810b9c2e>] ? cache_grow+0x26e/0x290
[687946.729379] [<ffffffff810b9cdc>] ____cache_alloc_node+0x8c/0x140
[687946.731666] [<ffffffff810ba413>] kmem_cache_alloc+0xa3/0xf0
[687946.733784] [<ffffffff814b3bec>] sk_prot_alloc.isra.40+0x3c/0x180
[687946.735996] [<ffffffff814b3dc9>] sk_clone+0x19/0x2d0
[687946.738418] [<ffffffff81508453>] inet_csk_clone+0x13/0xb0
[687946.740798] [<ffffffff81520144>] tcp_create_openreq_child+0x24/0x490
[687946.743286] [<ffffffff8151d307>] tcp_v4_syn_recv_sock+0x47/0x270
[687946.746065] [<ffffffff8151ff46>] tcp_check_req+0x2d6/0x4b0
[687946.748966] [<ffffffff8151d1ba>] tcp_v4_do_rcv+0x1aa/0x2b0
[687946.751572] [<ffffffff8151f704>] tcp_v4_rcv+0x5d4/0x8d0
[687946.754272] [<ffffffff814fe5e5>] ip_local_deliver_finish+0xc5/0x200
[687946.756948] [<ffffffff814fe8d8>] ip_local_deliver+0x88/0x90
[687946.759554] [<ffffffff814fe331>] ip_rcv_finish+0x121/0x310
[687946.762137] [<ffffffff814feace>] ip_rcv+0x1ee/0x2b0
[687946.764603] [<ffffffff8158fa66>] ? packet_rcv_spkt+0x136/0x180
[687946.767380] [<ffffffff814c2572>] __netif_receive_skb+0x4b2/0x5a0
[687946.769913] [<ffffffff814c2848>] netif_receive_skb+0x78/0x80
[687946.772275] [<ffffffff814c2cd8>] ? dev_gro_receive+0x1b8/0x2c0
[687946.775044] [<ffffffff814c33c8>] napi_skb_finish+0x48/0x60
[687946.777626] [<ffffffff814c348d>] napi_gro_receive+0xad/0xc0
[687946.780175] [<ffffffff8141b8f7>] igb_poll+0x707/0xd60
[687946.782682] [<ffffffff812ed7e4>] ? timerqueue_add+0x74/0xc0
[687946.785204] [<ffffffff8102ece0>] ? enqueue_task_rt+0x150/0x280
[687946.787789] [<ffffffff814c2a99>] net_rx_action+0x109/0x190
[687946.790282] [<ffffffff8102dead>] ? enqueue_task+0x3d/0x80
[687946.792884] [<ffffffff8103d1c8>] __do_softirq+0x98/0x120
[687946.795446] [<ffffffff81071680>] ? irq_thread_fn+0x50/0x50
[687946.798037] [<ffffffff815d1f6c>] call_softirq+0x1c/0x30
[687946.800530] <EOI> [<ffffffff81003abd>] do_softirq+0x4d/0x80
[687946.803066] [<ffffffff8103cf3c>] local_bh_enable+0x8c/0xa0
[687946.805471] [<ffffffff810716be>] irq_forced_thread_fn+0x3e/0x50
[687946.807945] [<ffffffff810715a7>] irq_thread+0x157/0x1e0
[687946.810228] [<ffffffff81071450>] ? irq_finalize_oneshot+0x120/0x120
[687946.812385] [<ffffffff81052277>] kthread+0x87/0x90
[687946.814488] [<ffffffff815d1e74>] kernel_thread_helper+0x4/0x10
[687946.816581] [<ffffffff810521f0>] ? kthread_worker_fn+0x130/0x130
[687946.819500] [<ffffffff815d1e70>] ? gs_change+0xb/0xb
[687946.821890] Mem-Info:
[687946.824226] Node 0 DMA per-cpu:
[687946.826667] CPU 0: hi: 0, btch: 1 usd: 0
[687946.829035] CPU 1: hi: 0, btch: 1 usd: 0
[687946.831210] CPU 2: hi: 0, btch: 1 usd: 0
[687946.833331] CPU 3: hi: 0, btch: 1 usd: 0
[687946.835359] CPU 4: hi: 0, btch: 1 usd: 0
[687946.837274] CPU 5: hi: 0, btch: 1 usd: 0
[687946.839086] CPU 6: hi: 0, btch: 1 usd: 0
[687946.839088] CPU 7: hi: 0, btch: 1 usd: 0
[687946.839089] CPU 8: hi: 0, btch: 1 usd: 0
[687946.839090] CPU 9: hi: 0, btch: 1 usd: 0
[687946.839093] CPU 10: hi: 0, btch: 1 usd: 0
[687946.839095] CPU 11: hi: 0, btch: 1 usd: 0
[687946.839128] CPU 12: hi: 0, btch: 1 usd: 0
[687946.839129] CPU 13: hi: 0, btch: 1 usd: 0
[687946.839131] CPU 14: hi: 0, btch: 1 usd: 0
[687946.839132] CPU 15: hi: 0, btch: 1 usd: 0
[687946.839134] CPU 16: hi: 0, btch: 1 usd: 0
[687946.839135] CPU 17: hi: 0, btch: 1 usd: 0
[687946.839136] CPU 18: hi: 0, btch: 1 usd: 0
[687946.839138] CPU 19: hi: 0, btch: 1 usd: 0
[687946.839139] CPU 20: hi: 0, btch: 1 usd: 0
[687946.839141] CPU 21: hi: 0, btch: 1 usd: 0
[687946.839142] CPU 22: hi: 0, btch: 1 usd: 0
[687946.839143] CPU 23: hi: 0, btch: 1 usd: 0
[687946.839144] Node 0 DMA32 per-cpu:
[687946.839146] CPU 0: hi: 186, btch: 31 usd: 104
[687946.839147] CPU 1: hi: 186, btch: 31 usd: 183
[687946.839149] CPU 2: hi: 186, btch: 31 usd: 35
[687946.839150] CPU 3: hi: 186, btch: 31 usd: 189
[687946.839152] CPU 4: hi: 186, btch: 31 usd: 26
[687946.839153] CPU 5: hi: 186, btch: 31 usd: 171
[687946.839154] CPU 6: hi: 186, btch: 31 usd: 7
[687946.839156] CPU 7: hi: 186, btch: 31 usd: 151
[687946.839157] CPU 8: hi: 186, btch: 31 usd: 24
[687946.839158] CPU 9: hi: 186, btch: 31 usd: 159
[687946.839160] CPU 10: hi: 186, btch: 31 usd: 0
[687946.839161] CPU 11: hi: 186, btch: 31 usd: 0
[687946.839162] CPU 12: hi: 186, btch: 31 usd: 161
[687946.839164] CPU 13: hi: 186, btch: 31 usd: 166
[687946.839165] CPU 14: hi: 186, btch: 31 usd: 162
[687946.839166] CPU 15: hi: 186, btch: 31 usd: 166
[687946.839168] CPU 16: hi: 186, btch: 31 usd: 60
[687946.839169] CPU 17: hi: 186, btch: 31 usd: 160
[687946.839170] CPU 18: hi: 186, btch: 31 usd: 1
[687946.839172] CPU 19: hi: 186, btch: 31 usd: 0
[687946.839173] CPU 20: hi: 186, btch: 31 usd: 0
[687946.839174] CPU 21: hi: 186, btch: 31 usd: 127
[687946.839176] CPU 22: hi: 186, btch: 31 usd: 0
[687946.839177] CPU 23: hi: 186, btch: 31 usd: 185
[687946.839178] Node 0 Normal per-cpu:
[687946.839179] CPU 0: hi: 186, btch: 31 usd: 7
[687946.839181] CPU 1: hi: 186, btch: 31 usd: 149
[687946.839182] CPU 2: hi: 186, btch: 31 usd: 22
[687946.839183] CPU 3: hi: 186, btch: 31 usd: 117
[687946.839185] CPU 4: hi: 186, btch: 31 usd: 101
[687946.839186] CPU 5: hi: 186, btch: 31 usd: 171
[687946.839188] CPU 6: hi: 186, btch: 31 usd: 56
[687946.839189] CPU 7: hi: 186, btch: 31 usd: 95
[687946.839190] CPU 8: hi: 186, btch: 31 usd: 51
[687946.839192] CPU 9: hi: 186, btch: 31 usd: 157
[687946.839193] CPU 10: hi: 186, btch: 31 usd: 0
[687946.839195] CPU 11: hi: 186, btch: 31 usd: 13
[687946.839196] CPU 12: hi: 186, btch: 31 usd: 33
[687946.839197] CPU 13: hi: 186, btch: 31 usd: 168
[687946.839199] CPU 14: hi: 186, btch: 31 usd: 176
[687946.839200] CPU 15: hi: 186, btch: 31 usd: 156
[687946.839202] CPU 16: hi: 186, btch: 31 usd: 124
[687946.839203] CPU 17: hi: 186, btch: 31 usd: 38
[687946.839204] CPU 18: hi: 186, btch: 31 usd: 22
[687946.839206] CPU 19: hi: 186, btch: 31 usd: 103
[687946.839207] CPU 20: hi: 186, btch: 31 usd: 32
[687946.839209] CPU 21: hi: 186, btch: 31 usd: 185
[687946.839210] CPU 22: hi: 186, btch: 31 usd: 48
[687946.839211] CPU 23: hi: 186, btch: 31 usd: 145
[687946.839213] Node 1 Normal per-cpu:
[687946.839214] CPU 0: hi: 186, btch: 31 usd: 93
[687946.839216] CPU 1: hi: 186, btch: 31 usd: 77
[687946.839217] CPU 2: hi: 186, btch: 31 usd: 40
[687946.839218] CPU 3: hi: 186, btch: 31 usd: 165
[687946.839220] CPU 4: hi: 186, btch: 31 usd: 4
[687946.839221] CPU 5: hi: 186, btch: 31 usd: 180
[687946.839222] CPU 6: hi: 186, btch: 31 usd: 29
[687946.839224] CPU 7: hi: 186, btch: 31 usd: 83
[687946.839225] CPU 8: hi: 186, btch: 31 usd: 78
[687946.839227] CPU 9: hi: 186, btch: 31 usd: 163
[687946.839228] CPU 10: hi: 186, btch: 31 usd: 171
[687946.839230] CPU 11: hi: 186, btch: 31 usd: 167
[687946.839231] CPU 12: hi: 186, btch: 31 usd: 21
[687946.839232] CPU 13: hi: 186, btch: 31 usd: 27
[687946.839234] CPU 14: hi: 186, btch: 31 usd: 30
[687946.839235] CPU 15: hi: 186, btch: 31 usd: 180
[687946.839236] CPU 16: hi: 186, btch: 31 usd: 4
[687946.839238] CPU 17: hi: 186, btch: 31 usd: 17
[687946.839239] CPU 18: hi: 186, btch: 31 usd: 83
[687946.839241] CPU 19: hi: 186, btch: 31 usd: 126
[687946.839242] CPU 20: hi: 186, btch: 31 usd: 161
[687946.839244] CPU 21: hi: 186, btch: 31 usd: 157
[687946.839245] CPU 22: hi: 186, btch: 31 usd: 172
[687946.839246] CPU 23: hi: 186, btch: 31 usd: 113
[687946.839250] active_anon:2415853 inactive_anon:207634 isolated_anon:0
[687946.839251] active_file:4112085 inactive_file:4489987 isolated_file:33
[687946.839252] unevictable:0 dirty:4489 writeback:0 unstable:0
[687946.839253] free:137513 slab_reclaimable:852856 slab_unreclaimable:39114
[687946.839254] mapped:15723 shmem:5214 pagetables:15849 bounce:0
[687946.839255] Node 0 DMA free:15896kB min:56kB low:68kB high:84kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15672kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
[687946.839262] lowmem_reserve[]: 0 2991 24201 24201
[687946.839264] Node 0 DMA32 free:133556kB min:11124kB low:13904kB high:16684kB active_anon:509940kB inactive_anon:138796kB active_file:732776kB inactive_file:1063388kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3063520kB mlocked:0kB dirty:152kB writeback:0kB mapped:1472kB shmem:120kB slab_reclaimable:435724kB slab_unreclaimable:8988kB kernel_stack:320kB pagetables:1132kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687946.839272] lowmem_reserve[]: 0 0 21210 21210
[687946.839274] Node 0 Normal free:215052kB min:78884kB low:98604kB high:118324kB active_anon:4096588kB inactive_anon:322760kB active_file:7572688kB inactive_file:7578964kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:21719040kB mlocked:0kB dirty:12488kB writeback:0kB mapped:29660kB shmem:15064kB slab_reclaimable:1546068kB slab_unreclaimable:78700kB kernel_stack:3480kB pagetables:35252kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687946.839282] lowmem_reserve[]: 0 0 0 0
[687946.839283] Node 1 Normal free:185548kB min:90152kB low:112688kB high:135228kB active_anon:5056884kB inactive_anon:368980kB active_file:8142876kB inactive_file:9317596kB unevictable:0kB isolated(anon):0kB isolated(file):132kB present:24821760kB mlocked:0kB dirty:5316kB writeback:0kB mapped:31760kB shmem:5672kB slab_reclaimable:1429632kB slab_unreclaimable:68768kB kernel_stack:2648kB pagetables:27012kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687946.839292] lowmem_reserve[]: 0 0 0 0
[687946.839294] Node 0 DMA: 0*4kB 1*8kB 1*16kB 0*32kB 2*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15896kB
[687946.839299] Node 0 DMA32: 31847*4kB 718*8kB 8*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 133260kB
[687946.839304] Node 0 Normal: 38479*4kB 5294*8kB 1090*16kB 11*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 214060kB
[687946.839309] Node 1 Normal: 29327*4kB 5080*8kB 910*16kB 102*32kB 19*64kB 11*128kB 26*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 185052kB
[687946.839314] 8618791 total pagecache pages
[687946.839315] 11459 pages in swap cache
[687946.839317] Swap cache stats: add 258693, delete 247234, find 26065392/26080490
[687946.839318] Free swap = 1628596kB
[687946.839319] Total swap = 2097148kB
[687947.017273] 12582896 pages RAM
[687947.020203] 193740 pages reserved
[687947.023090] 3702079 pages shared
[687947.025938] 8692980 pages non-shared
[687949.743902] irq/112-eth0-Tx: page allocation failure: order:1, mode:0x20
[687949.746909] Pid: 18665, comm: irq/112-eth0-Tx Not tainted 3.1.0-rc2 #1
[687949.749718] Call Trace:
[687949.752521] <IRQ> [<ffffffff8108673e>] warn_alloc_failed+0xee/0x140
[687949.755407] [<ffffffff8108970c>] __alloc_pages_nodemask+0x54c/0x770
[687949.758276] [<ffffffff810b8d8d>] kmem_getpages+0x5d/0x160
[687949.761157] [<ffffffff810b9f4e>] fallback_alloc+0x1be/0x1d0
[687949.764182] [<ffffffff810b9c2e>] ? cache_grow+0x26e/0x290
[687949.767350] [<ffffffff810b9cdc>] ____cache_alloc_node+0x8c/0x140
[687949.770514] [<ffffffff810ba413>] kmem_cache_alloc+0xa3/0xf0
[687949.773699] [<ffffffff814b3bec>] sk_prot_alloc.isra.40+0x3c/0x180
[687949.776947] [<ffffffff814b3dc9>] sk_clone+0x19/0x2d0
[687949.780172] [<ffffffff81508453>] inet_csk_clone+0x13/0xb0
[687949.783425] [<ffffffff81520144>] tcp_create_openreq_child+0x24/0x490
[687949.786686] [<ffffffff8151d307>] tcp_v4_syn_recv_sock+0x47/0x270
[687949.789977] [<ffffffff8151ff46>] tcp_check_req+0x2d6/0x4b0
[687949.793264] [<ffffffff8151d1ba>] tcp_v4_do_rcv+0x1aa/0x2b0
[687949.796565] [<ffffffff8151f704>] tcp_v4_rcv+0x5d4/0x8d0
[687949.799867] [<ffffffff814fe5e5>] ip_local_deliver_finish+0xc5/0x200
[687949.803162] [<ffffffff814fe8d8>] ip_local_deliver+0x88/0x90
[687949.806463] [<ffffffff814fe331>] ip_rcv_finish+0x121/0x310
[687949.809779] [<ffffffff814feace>] ip_rcv+0x1ee/0x2b0
[687949.813105] [<ffffffff8158fa66>] ? packet_rcv_spkt+0x136/0x180
[687949.816446] [<ffffffff814c2572>] __netif_receive_skb+0x4b2/0x5a0
[687949.819794] [<ffffffff814c2848>] netif_receive_skb+0x78/0x80
[687949.823157] [<ffffffff814c2cd8>] ? dev_gro_receive+0x1b8/0x2c0
[687949.826529] [<ffffffff814c33c8>] napi_skb_finish+0x48/0x60
[687949.829918] [<ffffffff814c348d>] napi_gro_receive+0xad/0xc0
[687949.833315] [<ffffffff8141b8f7>] igb_poll+0x707/0xd60
[687949.833324] [<ffffffff8101db39>] ? physflat_send_IPI_mask+0x9/0x10
[687949.833330] [<ffffffff8102ece0>] ? enqueue_task_rt+0x150/0x280
[687949.833338] [<ffffffff814c2a99>] net_rx_action+0x109/0x190
[687949.833342] [<ffffffff8102dead>] ? enqueue_task+0x3d/0x80
[687949.833348] [<ffffffff8103d1c8>] __do_softirq+0x98/0x120
[687949.833353] [<ffffffff81071680>] ? irq_thread_fn+0x50/0x50
[687949.833359] [<ffffffff815d1f6c>] call_softirq+0x1c/0x30
[687949.833361] <EOI> [<ffffffff81003abd>] do_softirq+0x4d/0x80
[687949.833369] [<ffffffff8103cf3c>] local_bh_enable+0x8c/0xa0
[687949.833372] [<ffffffff810716be>] irq_forced_thread_fn+0x3e/0x50
[687949.833375] [<ffffffff810715a7>] irq_thread+0x157/0x1e0
[687949.833379] [<ffffffff81071450>] ? irq_finalize_oneshot+0x120/0x120
[687949.833384] [<ffffffff81052277>] kthread+0x87/0x90
[687949.833388] [<ffffffff815d1e74>] kernel_thread_helper+0x4/0x10
[687949.833392] [<ffffffff810521f0>] ? kthread_worker_fn+0x130/0x130
[687949.833395] [<ffffffff815d1e70>] ? gs_change+0xb/0xb
[687949.833398] Mem-Info:
[687949.833400] Node 0 DMA per-cpu:
[687949.833402] CPU 0: hi: 0, btch: 1 usd: 0
[687949.833405] CPU 1: hi: 0, btch: 1 usd: 0
[687949.833407] CPU 2: hi: 0, btch: 1 usd: 0
[687949.833409] CPU 3: hi: 0, btch: 1 usd: 0
[687949.833411] CPU 4: hi: 0, btch: 1 usd: 0
[687949.833413] CPU 5: hi: 0, btch: 1 usd: 0
[687949.833415] CPU 6: hi: 0, btch: 1 usd: 0
[687949.833417] CPU 7: hi: 0, btch: 1 usd: 0
[687949.833419] CPU 8: hi: 0, btch: 1 usd: 0
[687949.833421] CPU 9: hi: 0, btch: 1 usd: 0
[687949.833423] CPU 10: hi: 0, btch: 1 usd: 0
[687949.833425] CPU 11: hi: 0, btch: 1 usd: 0
[687949.833427] CPU 12: hi: 0, btch: 1 usd: 0
[687949.833429] CPU 13: hi: 0, btch: 1 usd: 0
[687949.833432] CPU 14: hi: 0, btch: 1 usd: 0
[687949.833434] CPU 15: hi: 0, btch: 1 usd: 0
[687949.833436] CPU 16: hi: 0, btch: 1 usd: 0
[687949.833438] CPU 17: hi: 0, btch: 1 usd: 0
[687949.833440] CPU 18: hi: 0, btch: 1 usd: 0
[687949.833442] CPU 19: hi: 0, btch: 1 usd: 0
[687949.833444] CPU 20: hi: 0, btch: 1 usd: 0
[687949.833446] CPU 21: hi: 0, btch: 1 usd: 0
[687949.833448] CPU 22: hi: 0, btch: 1 usd: 0
[687949.833450] CPU 23: hi: 0, btch: 1 usd: 0
[687949.833451] Node 0 DMA32 per-cpu:
[687949.833454] CPU 0: hi: 186, btch: 31 usd: 31
[687949.833456] CPU 1: hi: 186, btch: 31 usd: 177
[687949.833458] CPU 2: hi: 186, btch: 31 usd: 44
[687949.833460] CPU 3: hi: 186, btch: 31 usd: 186
[687949.833462] CPU 4: hi: 186, btch: 31 usd: 26
[687949.833465] CPU 5: hi: 186, btch: 31 usd: 161
[687949.833467] CPU 6: hi: 186, btch: 31 usd: 19
[687949.833469] CPU 7: hi: 186, btch: 31 usd: 120
[687949.833471] CPU 8: hi: 186, btch: 31 usd: 24
[687949.833473] CPU 9: hi: 186, btch: 31 usd: 129
[687949.833475] CPU 10: hi: 186, btch: 31 usd: 0
[687949.833477] CPU 11: hi: 186, btch: 31 usd: 0
[687949.833479] CPU 12: hi: 186, btch: 31 usd: 159
[687949.833481] CPU 13: hi: 186, btch: 31 usd: 170
[687949.833483] CPU 14: hi: 186, btch: 31 usd: 181
[687949.833485] CPU 15: hi: 186, btch: 31 usd: 166
[687949.833488] CPU 16: hi: 186, btch: 31 usd: 60
[687949.833490] CPU 17: hi: 186, btch: 31 usd: 160
[687949.833492] CPU 18: hi: 186, btch: 31 usd: 1
[687949.833494] CPU 19: hi: 186, btch: 31 usd: 0
[687949.833496] CPU 20: hi: 186, btch: 31 usd: 0
[687949.833498] CPU 21: hi: 186, btch: 31 usd: 127
[687949.833500] CPU 22: hi: 186, btch: 31 usd: 0
[687949.833502] CPU 23: hi: 186, btch: 31 usd: 185
[687949.833503] Node 0 Normal per-cpu:
[687949.833505] CPU 0: hi: 186, btch: 31 usd: 43
[687949.833508] CPU 1: hi: 186, btch: 31 usd: 81
[687949.833510] CPU 2: hi: 186, btch: 31 usd: 51
[687949.833512] CPU 3: hi: 186, btch: 31 usd: 114
[687949.833514] CPU 4: hi: 186, btch: 31 usd: 95
[687949.833516] CPU 5: hi: 186, btch: 31 usd: 154
[687949.833518] CPU 6: hi: 186, btch: 31 usd: 108
[687949.833520] CPU 7: hi: 186, btch: 31 usd: 69
[687949.833522] CPU 8: hi: 186, btch: 31 usd: 22
[687949.833524] CPU 9: hi: 186, btch: 31 usd: 181
[687949.833526] CPU 10: hi: 186, btch: 31 usd: 174
[687949.833528] CPU 11: hi: 186, btch: 31 usd: 0
[687949.833530] CPU 12: hi: 186, btch: 31 usd: 157
[687949.833532] CPU 13: hi: 186, btch: 31 usd: 157
[687949.833534] CPU 14: hi: 186, btch: 31 usd: 110
[687949.833536] CPU 15: hi: 186, btch: 31 usd: 164
[687949.833538] CPU 16: hi: 186, btch: 31 usd: 114
[687949.833541] CPU 17: hi: 186, btch: 31 usd: 38
[687949.833543] CPU 18: hi: 186, btch: 31 usd: 0
[687949.833545] CPU 19: hi: 186, btch: 31 usd: 72
[687949.833547] CPU 20: hi: 186, btch: 31 usd: 1
[687949.833549] CPU 21: hi: 186, btch: 31 usd: 164
[687949.833551] CPU 22: hi: 186, btch: 31 usd: 55
[687949.833553] CPU 23: hi: 186, btch: 31 usd: 118
[687949.833554] Node 1 Normal per-cpu:
[687949.833557] CPU 0: hi: 186, btch: 31 usd: 64
[687949.833559] CPU 1: hi: 186, btch: 31 usd: 125
[687949.833561] CPU 2: hi: 186, btch: 31 usd: 56
[687949.833563] CPU 3: hi: 186, btch: 31 usd: 148
[687949.833565] CPU 4: hi: 186, btch: 31 usd: 0
[687949.833567] CPU 5: hi: 186, btch: 31 usd: 149
[687949.833569] CPU 6: hi: 186, btch: 31 usd: 151
[687949.833571] CPU 7: hi: 186, btch: 31 usd: 79
[687949.833573] CPU 8: hi: 186, btch: 31 usd: 61
[687949.833575] CPU 9: hi: 186, btch: 31 usd: 183
[687949.833577] CPU 10: hi: 186, btch: 31 usd: 171
[687949.833579] CPU 11: hi: 186, btch: 31 usd: 167
[687949.833581] CPU 12: hi: 186, btch: 31 usd: 174
[687949.833584] CPU 13: hi: 186, btch: 31 usd: 171
[687949.833586] CPU 14: hi: 186, btch: 31 usd: 158
[687949.833588] CPU 15: hi: 186, btch: 31 usd: 149
[687949.833590] CPU 16: hi: 186, btch: 31 usd: 6
[687949.833592] CPU 17: hi: 186, btch: 31 usd: 17
[687949.833594] CPU 18: hi: 186, btch: 31 usd: 82
[687949.833596] CPU 19: hi: 186, btch: 31 usd: 111
[687949.833598] CPU 20: hi: 186, btch: 31 usd: 159
[687949.833600] CPU 21: hi: 186, btch: 31 usd: 157
[687949.833602] CPU 22: hi: 186, btch: 31 usd: 160
[687949.833604] CPU 23: hi: 186, btch: 31 usd: 74
[687949.833610] active_anon:2415858 inactive_anon:207589 isolated_anon:0
[687949.833611] active_file:4112461 inactive_file:4495431 isolated_file:0
[687949.833612] unevictable:0 dirty:5362 writeback:0 unstable:0
[687949.833614] free:135634 slab_reclaimable:847992 slab_unreclaimable:39054
[687949.833615] mapped:15726 shmem:5214 pagetables:15849 bounce:0
[687949.833617] Node 0 DMA free:15896kB min:56kB low:68kB high:84kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15672kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
[687949.833627] lowmem_reserve[]: 0 2991 24201 24201
[687949.833631] Node 0 DMA32 free:121756kB min:11124kB low:13904kB high:16684kB active_anon:509940kB inactive_anon:138796kB active_file:732776kB inactive_file:1077800kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3063520kB mlocked:0kB dirty:384kB writeback:0kB mapped:1472kB shmem:120kB slab_reclaimable:435700kB slab_unreclaimable:9008kB kernel_stack:320kB pagetables:1132kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687949.833643] lowmem_reserve[]: 0 0 21210 21210
[687949.833645] Node 0 Normal free:178800kB min:78884kB low:98604kB high:118324kB active_anon:4096596kB inactive_anon:322580kB active_file:7573100kB inactive_file:7623984kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:21719040kB mlocked:0kB dirty:13852kB writeback:0kB mapped:29672kB shmem:15064kB slab_reclaimable:1532288kB slab_unreclaimable:78968kB kernel_stack:3480kB pagetables:35252kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687949.833657] lowmem_reserve[]: 0 0 0 0
[687949.833660] Node 1 Normal free:226084kB min:90152kB low:112688kB high:135228kB active_anon:5056896kB inactive_anon:368980kB active_file:8143968kB inactive_file:9279940kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:24821760kB mlocked:0kB dirty:7212kB writeback:0kB mapped:31760kB shmem:5672kB slab_reclaimable:1423980kB slab_unreclaimable:68240kB kernel_stack:2648kB pagetables:27012kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687949.833672] lowmem_reserve[]: 0 0 0 0
[687949.833674] Node 0 DMA: 0*4kB 1*8kB 1*16kB 0*32kB 2*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15896kB
[687949.833682] Node 0 DMA32: 28319*4kB 870*8kB 95*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 121756kB
[687949.833689] Node 0 Normal: 29680*4kB 4095*8kB 1649*16kB 27*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 178728kB
[687949.833697] Node 1 Normal: 39478*4kB 6538*8kB 637*16kB 111*32kB 9*64kB 7*128kB 4*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 226456kB
[687949.833704] 8624516 total pagecache pages
[687949.833706] 11462 pages in swap cache
[687949.833708] Swap cache stats: add 258724, delete 247262, find 26065393/26080492
[687949.833710] Free swap = 1628508kB
[687949.833711] Total swap = 2097148kB
[687950.051707] 12582896 pages RAM
[687950.054637] 193740 pages reserved
[687950.057542] 3675896 pages shared
[687950.060450] 8720032 pages non-shared
Justin.
^ permalink raw reply
* Re: [PATCH] iptables/man: IPv6 TOS mangling fix was backported to 2.6.35-longterm too
From: Jan Engelhardt @ 2011-08-26 13:16 UTC (permalink / raw)
To: Fernando Luis Vazquez Cao
Cc: Patrick McHardy, Netfilter Developer Mailing List,
Linux Networking Developer Mailing List
In-Reply-To: <1314154554.1878.7.camel@nausicaa>
On Wednesday 2011-08-24 04:55, Fernando Luis Vazquez Cao wrote:
>Fernando Luis Vázquez Cao wrote:
>> Update man page accordingly.
>>
>> Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
>> ---
>>
>> -longterm releases 2.6.32.42 (or later) and 2.6.33.15 (or later), there is a bug
>> -whereby IPv6 TOS mangling does not behave as documented and differs from the
>> -IPv4 version. The TOS mask indicates the bits one wants to zero out, so it needs
>> -to be inverted before applying it to the original TOS field. However, the
>> +longterm releases 2.6.32 (>=.42), 2.6.33 (>=.15), and 2.6.35 (>=.14), there is
>> +a bug whereby IPv6 TOS mangling does not behave as documented and differs from
>> +the IPv4 version. The TOS mask indicates the bits one wants to zero out, so it
>> +needs to be inverted before applying it to the original TOS field. However, the
>> aformentioned kernels forgo the inversion which breaks --set-tos and its
>> mnemonics.
>
>Ping?
Patch picked up now.
^ permalink raw reply
* Re: [PATCH] p54spi: add "spi:" prefix for stlc45xx modalias
From: Christian Lamparter @ 2011-08-26 14:51 UTC (permalink / raw)
To: Axel Lin; +Cc: linux-kernel, John W. Linville, linux-wireless, netdev
In-Reply-To: <1314340499.25655.1.camel@phoenix>
On Friday, August 26, 2011 08:34:59 AM Axel Lin wrote:
> Since commit e0626e38 (spi: prefix modalias with "spi:"),
> the spi modalias is prefixed with "spi:".
>
> This patch adds "spi:" prefix for modalias of stlc45xx.
> Also move it to be group with other modalias.
>
> Signed-off-by: Axel Lin <axel.lin@gmail.com>
> ---
sure, can't say no.
Acked-By: Christian Lamparter <chunkeey@googlemail.com>
^ permalink raw reply
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: David Miller @ 2011-08-26 15:08 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <1314247456.27179.122.camel@deadeye>
From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 25 Aug 2011 05:44:15 +0100
> Commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305 ('net: Support
> inclusion of <linux/socket.h> before <sys/socket.h>') removed the
> definition of struct sockaddr for userland.
>
> But we still have several headers using struct sockaddr, and we
> shouldn't make them include <sys/socket.h> as that risks recursive
> inclusion in future. Define and use an identical struct
> __kernel_sockaddr instead.
>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
...
>
> -/*
> - * 1003.1g requires sa_family_t and that sa_data is char.
> - */
> +#define sockaddr __kernel_sockaddr
This cure is worse than the disease.
Now any application that includes sys/socket.h one way or another is
now going to get a real hard build failure since __kernel_sockaddr
will effectively get redefined.
There is no reason sys/socket.h and our headers cannot co-exist and
this is the whole reason we're going through all of this pain to use
the __kernel_foo types in our networking datastructures which are
exposed to userspace.
^ permalink raw reply
* pull request: wireless 2011-08-26
From: John W. Linville @ 2011-08-26 15:17 UTC (permalink / raw)
To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
Dave,
Here is a round of fixes intended for 3.1...
The biggest portion are Bluetooth fixes. Gustavo describes them
thusly:
Some fixes for 3.1! It looks a lot of fixes but some of them
are the same fix applied to different files. Here we have a
fix for a wrong timer value from Chen Ganir, a lock balance
fix from Dan Carpenter, regression fix with the HCI Reset
command from Szymon Janc, a fix to not show error messages on
btusb device disconnect from Paul Bolle. Support for Toshiba
AR30XX from Ricardo Mendoza. And finally a bunch of fixes
from Peter Hurley, there are some lost wake up, deadlocks and
memort leaks fixes. Most of them fixes regressions introduced
by the move to the kthread API.
In addition, we have a locking fix for carl9170, a bcma fix to enable
driver loading via udev, a wl12xx fix to properly advertise the
maximum number of SSIDs for scanning, another wl12xx fix to properly
check a return code in order to avoid a possible oops, and a third
wl12xx fix to remove a broken testmode function with locking problems
(among others). Also included is a suspend/resume fix for ath9k,
a fix for reading improper MAC addresses on ath9k, a suspend/resume
fix for mac80211, and a suspend/resume fix for rt2x00 as well.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit bc909d9ddbf7778371e36a651d6e4194b1cc7d4c:
sendmmsg/sendmsg: fix unsafe user pointer access (2011-08-24 19:45:03 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem
Alexey Khoroshilov (1):
carl9170: Fix mismatch in carl9170_op_set_key mutex lock-unlock
Chen Ganir (1):
Bluetooth: Fixed wrong L2CAP Sock timer value
Dan Carpenter (1):
Bluetooth: unlock if allocation fails in hci_blacklist_add()
David Woodhouse (1):
bcma: add uevent to the bus, to autoload drivers
Ido Yariv (2):
wl12xx: Remove obsolete testmode NVS push command
wl12xx: Fix validation of pm_runtime_get_sync return value
John W. Linville (2):
Merge branch 'master' of master.kernel.org:/.../padovan/bluetooth
Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem
Luciano Coelho (1):
wl12xx: add max_sched_scan_ssids value to the hw description
Mohammed Shafi Shajakhan (1):
ath9k: Fix PS wrappers in ath9k_set_coverage_class
Paul Bolle (1):
Bluetooth: btusb: be quiet on device disconnect
Peter Hurley (15):
Bluetooth: rfcomm: Remove unnecessary krfcommd event
Bluetooth: rfcomm: Fix lost wakeups waiting to accept socket
Bluetooth: Fix lost wakeups waiting for sock state change
Bluetooth: l2cap: Fix lost wakeups waiting to accept socket
Bluetooth: sco: Fix lost wakeups waiting to accept socket
Bluetooth: bnep: Fix lost wakeup of session thread
Bluetooth: cmtp: Fix lost wakeup of session thread
Bluetooth: l2cap: Fix lost wakeup waiting for ERTM acks
Bluetooth: bnep: Fix deadlock in session deletion
Bluetooth: cmtp: Fix deadlock in session deletion
Bluetooth: hidp: Fix session cleanup on failed conn add
Bluetooth: hidp: Fix memory leak of cached report descriptor
Bluetooth: hidp: Only free input device if failed register
Bluetooth: hidp: Don't release device ref if never held
Bluetooth: cmtp: Fix session cleanup on failed conn add
Ricardo Mendoza (1):
Bluetooth: Add Toshiba laptops AR30XX device ID
Senthil Balasubramanian (1):
ath9k_hw: Fix STA (AR9485) bringup issue due to incorrect MAC address
Stanislaw Gruszka (2):
mac80211: fix suspend/resume races with unregister hw
rt2x00: do not drop usb dev reference counter on suspend
Szymon Janc (1):
Bluetooth: Don't use cmd_timer to timeout HCI reset command
drivers/bcma/main.c | 12 ++++++
drivers/bluetooth/ath3k.c | 1 +
drivers/bluetooth/btusb.c | 13 +++++--
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/main.c | 4 ++
drivers/net/wireless/ath/carl9170/main.c | 4 ++-
drivers/net/wireless/rt2x00/rt2x00usb.c | 14 +-------
drivers/net/wireless/wl12xx/main.c | 1 +
drivers/net/wireless/wl12xx/sdio.c | 2 +-
drivers/net/wireless/wl12xx/testmode.c | 45 ------------------------
include/net/cfg80211.h | 3 ++
net/bluetooth/af_bluetooth.c | 6 ++--
net/bluetooth/bnep/bnep.h | 1 +
net/bluetooth/bnep/core.c | 13 ++++---
net/bluetooth/cmtp/capi.c | 3 +-
net/bluetooth/cmtp/cmtp.h | 1 +
net/bluetooth/cmtp/core.c | 20 ++++++----
net/bluetooth/hci_core.c | 8 +++--
net/bluetooth/hidp/core.c | 19 +++++-----
net/bluetooth/l2cap_core.c | 6 ++--
net/bluetooth/l2cap_sock.c | 30 ++++++++--------
net/bluetooth/rfcomm/core.c | 17 ++++-----
net/bluetooth/rfcomm/sock.c | 28 +++++++-------
net/bluetooth/sco.c | 28 +++++++-------
net/mac80211/main.c | 2 +-
net/wireless/core.c | 7 ++++
net/wireless/sysfs.c | 6 ++-
27 files changed, 143 insertions(+), 153 deletions(-)
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
index 873e2e4..73b7b1a 100644
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
@@ -15,6 +15,7 @@ MODULE_LICENSE("GPL");
static int bcma_bus_match(struct device *dev, struct device_driver *drv);
static int bcma_device_probe(struct device *dev);
static int bcma_device_remove(struct device *dev);
+static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env);
static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf)
{
@@ -49,6 +50,7 @@ static struct bus_type bcma_bus_type = {
.match = bcma_bus_match,
.probe = bcma_device_probe,
.remove = bcma_device_remove,
+ .uevent = bcma_device_uevent,
.dev_attrs = bcma_device_attrs,
};
@@ -227,6 +229,16 @@ static int bcma_device_remove(struct device *dev)
return 0;
}
+static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+ struct bcma_device *core = container_of(dev, struct bcma_device, dev);
+
+ return add_uevent_var(env,
+ "MODALIAS=bcma:m%04Xid%04Xrev%02Xcl%02X",
+ core->id.manuf, core->id.id,
+ core->id.rev, core->id.class);
+}
+
static int __init bcma_modinit(void)
{
int err;
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index a585473..db7cb81 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[] = {
/* Atheros AR3011 with sflash firmware*/
{ USB_DEVICE(0x0CF3, 0x3002) },
{ USB_DEVICE(0x13d3, 0x3304) },
+ { USB_DEVICE(0x0930, 0x0215) },
/* Atheros AR9285 Malbec with sflash firmware */
{ USB_DEVICE(0x03F0, 0x311D) },
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 91d13a9..3ef4760 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -106,6 +106,7 @@ static struct usb_device_id blacklist_table[] = {
/* Atheros 3011 with sflash firmware */
{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
{ USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
+ { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
/* Atheros AR9285 Malbec with sflash firmware */
{ USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
@@ -256,7 +257,9 @@ static void btusb_intr_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- if (err != -EPERM)
+ /* -EPERM: urb is being killed;
+ * -ENODEV: device got disconnected */
+ if (err != -EPERM && err != -ENODEV)
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
@@ -341,7 +344,9 @@ static void btusb_bulk_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- if (err != -EPERM)
+ /* -EPERM: urb is being killed;
+ * -ENODEV: device got disconnected */
+ if (err != -EPERM && err != -ENODEV)
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
@@ -431,7 +436,9 @@ static void btusb_isoc_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- if (err != -EPERM)
+ /* -EPERM: urb is being killed;
+ * -ENODEV: device got disconnected */
+ if (err != -EPERM && err != -ENODEV)
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index c34bef1..1b94003 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -69,7 +69,7 @@ static int ar9003_hw_power_interpolate(int32_t x,
static const struct ar9300_eeprom ar9300_default = {
.eepromVersion = 2,
.templateVersion = 2,
- .macAddr = {1, 2, 3, 4, 5, 6},
+ .macAddr = {0, 2, 3, 4, 5, 6},
.custData = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
.baseEepHeader = {
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 9098aaa..6530694 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -2283,7 +2283,11 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw, u8 coverage_class)
mutex_lock(&sc->mutex);
ah->coverage_class = coverage_class;
+
+ ath9k_ps_wakeup(sc);
ath9k_hw_init_global_settings(ah);
+ ath9k_ps_restore(sc);
+
mutex_unlock(&sc->mutex);
}
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
index 0122930..0474e663 100644
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
@@ -1066,8 +1066,10 @@ static int carl9170_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
* the high througput speed in 802.11n networks.
*/
- if (!is_main_vif(ar, vif))
+ if (!is_main_vif(ar, vif)) {
+ mutex_lock(&ar->mutex);
goto err_softw;
+ }
/*
* While the hardware supports *catch-all* key, for offloading
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 7fbb55c..1e31050 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -871,18 +871,8 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, pm_message_t state)
{
struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
struct rt2x00_dev *rt2x00dev = hw->priv;
- int retval;
-
- retval = rt2x00lib_suspend(rt2x00dev, state);
- if (retval)
- return retval;
- /*
- * Decrease usbdev refcount.
- */
- usb_put_dev(interface_to_usbdev(usb_intf));
-
- return 0;
+ return rt2x00lib_suspend(rt2x00dev, state);
}
EXPORT_SYMBOL_GPL(rt2x00usb_suspend);
@@ -891,8 +881,6 @@ int rt2x00usb_resume(struct usb_interface *usb_intf)
struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
struct rt2x00_dev *rt2x00dev = hw->priv;
- usb_get_dev(interface_to_usbdev(usb_intf));
-
return rt2x00lib_resume(rt2x00dev);
}
EXPORT_SYMBOL_GPL(rt2x00usb_resume);
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index e58c22d..b70ae40 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -4283,6 +4283,7 @@ int wl1271_init_ieee80211(struct wl1271 *wl)
wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) | BIT(NL80211_IFTYPE_AP);
wl->hw->wiphy->max_scan_ssids = 1;
+ wl->hw->wiphy->max_sched_scan_ssids = 1;
/*
* Maximum length of elements in scanning probe request templates
* should be the maximum length possible for a template, without
diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c
index 5cf18c2..fb1fd5a 100644
--- a/drivers/net/wireless/wl12xx/sdio.c
+++ b/drivers/net/wireless/wl12xx/sdio.c
@@ -164,7 +164,7 @@ static int wl1271_sdio_power_on(struct wl1271 *wl)
/* If enabled, tell runtime PM not to power off the card */
if (pm_runtime_enabled(&func->dev)) {
ret = pm_runtime_get_sync(&func->dev);
- if (ret)
+ if (ret < 0)
goto out;
} else {
/* Runtime PM is disabled: power up the card manually */
diff --git a/drivers/net/wireless/wl12xx/testmode.c b/drivers/net/wireless/wl12xx/testmode.c
index 88add68..4ae8eff 100644
--- a/drivers/net/wireless/wl12xx/testmode.c
+++ b/drivers/net/wireless/wl12xx/testmode.c
@@ -36,7 +36,6 @@ enum wl1271_tm_commands {
WL1271_TM_CMD_TEST,
WL1271_TM_CMD_INTERROGATE,
WL1271_TM_CMD_CONFIGURE,
- WL1271_TM_CMD_NVS_PUSH,
WL1271_TM_CMD_SET_PLT_MODE,
WL1271_TM_CMD_RECOVER,
@@ -190,48 +189,6 @@ static int wl1271_tm_cmd_configure(struct wl1271 *wl, struct nlattr *tb[])
return 0;
}
-static int wl1271_tm_cmd_nvs_push(struct wl1271 *wl, struct nlattr *tb[])
-{
- int ret = 0;
- size_t len;
- void *buf;
-
- wl1271_debug(DEBUG_TESTMODE, "testmode cmd nvs push");
-
- if (!tb[WL1271_TM_ATTR_DATA])
- return -EINVAL;
-
- buf = nla_data(tb[WL1271_TM_ATTR_DATA]);
- len = nla_len(tb[WL1271_TM_ATTR_DATA]);
-
- mutex_lock(&wl->mutex);
-
- kfree(wl->nvs);
-
- if ((wl->chip.id == CHIP_ID_1283_PG20) &&
- (len != sizeof(struct wl128x_nvs_file)))
- return -EINVAL;
- else if (len != sizeof(struct wl1271_nvs_file))
- return -EINVAL;
-
- wl->nvs = kzalloc(len, GFP_KERNEL);
- if (!wl->nvs) {
- wl1271_error("could not allocate memory for the nvs file");
- ret = -ENOMEM;
- goto out;
- }
-
- memcpy(wl->nvs, buf, len);
- wl->nvs_len = len;
-
- wl1271_debug(DEBUG_TESTMODE, "testmode pushed nvs");
-
-out:
- mutex_unlock(&wl->mutex);
-
- return ret;
-}
-
static int wl1271_tm_cmd_set_plt_mode(struct wl1271 *wl, struct nlattr *tb[])
{
u32 val;
@@ -288,8 +245,6 @@ int wl1271_tm_cmd(struct ieee80211_hw *hw, void *data, int len)
return wl1271_tm_cmd_interrogate(wl, tb);
case WL1271_TM_CMD_CONFIGURE:
return wl1271_tm_cmd_configure(wl, tb);
- case WL1271_TM_CMD_NVS_PUSH:
- return wl1271_tm_cmd_nvs_push(wl, tb);
case WL1271_TM_CMD_SET_PLT_MODE:
return wl1271_tm_cmd_set_plt_mode(wl, tb);
case WL1271_TM_CMD_RECOVER:
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index d17f47f..408ae48 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1865,6 +1865,9 @@ struct wiphy {
* you need use set_wiphy_dev() (see below) */
struct device dev;
+ /* protects ->resume, ->suspend sysfs callbacks against unregister hw */
+ bool registered;
+
/* dir in debugfs: ieee80211/<wiphyname> */
struct dentry *debugfsdir;
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
index 8add9b4..117e0d1 100644
--- a/net/bluetooth/af_bluetooth.c
+++ b/net/bluetooth/af_bluetooth.c
@@ -494,9 +494,8 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
BT_DBG("sk %p", sk);
add_wait_queue(sk_sleep(sk), &wait);
+ set_current_state(TASK_INTERRUPTIBLE);
while (sk->sk_state != state) {
- set_current_state(TASK_INTERRUPTIBLE);
-
if (!timeo) {
err = -EINPROGRESS;
break;
@@ -510,12 +509,13 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
release_sock(sk);
timeo = schedule_timeout(timeo);
lock_sock(sk);
+ set_current_state(TASK_INTERRUPTIBLE);
err = sock_error(sk);
if (err)
break;
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
return err;
}
diff --git a/net/bluetooth/bnep/bnep.h b/net/bluetooth/bnep/bnep.h
index 8e6c061..e7ee531 100644
--- a/net/bluetooth/bnep/bnep.h
+++ b/net/bluetooth/bnep/bnep.h
@@ -155,6 +155,7 @@ struct bnep_session {
unsigned int role;
unsigned long state;
unsigned long flags;
+ atomic_t terminate;
struct task_struct *task;
struct ethhdr eh;
diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
index ca39fcf..d9edfe8 100644
--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -484,9 +484,11 @@ static int bnep_session(void *arg)
init_waitqueue_entry(&wait, current);
add_wait_queue(sk_sleep(sk), &wait);
- while (!kthread_should_stop()) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
+ if (atomic_read(&s->terminate))
+ break;
/* RX */
while ((skb = skb_dequeue(&sk->sk_receive_queue))) {
skb_orphan(skb);
@@ -504,7 +506,7 @@ static int bnep_session(void *arg)
schedule();
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
/* Cleanup session */
@@ -640,9 +642,10 @@ int bnep_del_connection(struct bnep_conndel_req *req)
down_read(&bnep_session_sem);
s = __bnep_get_session(req->dst);
- if (s)
- kthread_stop(s->task);
- else
+ if (s) {
+ atomic_inc(&s->terminate);
+ wake_up_process(s->task);
+ } else
err = -ENOENT;
up_read(&bnep_session_sem);
diff --git a/net/bluetooth/cmtp/capi.c b/net/bluetooth/cmtp/capi.c
index 040f67b..50f0d13 100644
--- a/net/bluetooth/cmtp/capi.c
+++ b/net/bluetooth/cmtp/capi.c
@@ -386,7 +386,8 @@ static void cmtp_reset_ctr(struct capi_ctr *ctrl)
capi_ctr_down(ctrl);
- kthread_stop(session->task);
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
}
static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp)
diff --git a/net/bluetooth/cmtp/cmtp.h b/net/bluetooth/cmtp/cmtp.h
index db43b54..c32638d 100644
--- a/net/bluetooth/cmtp/cmtp.h
+++ b/net/bluetooth/cmtp/cmtp.h
@@ -81,6 +81,7 @@ struct cmtp_session {
char name[BTNAMSIZ];
+ atomic_t terminate;
struct task_struct *task;
wait_queue_head_t wait;
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index c5b11af..521baa4 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -292,9 +292,11 @@ static int cmtp_session(void *arg)
init_waitqueue_entry(&wait, current);
add_wait_queue(sk_sleep(sk), &wait);
- while (!kthread_should_stop()) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
+ if (atomic_read(&session->terminate))
+ break;
if (sk->sk_state != BT_CONNECTED)
break;
@@ -307,7 +309,7 @@ static int cmtp_session(void *arg)
schedule();
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
down_write(&cmtp_session_sem);
@@ -380,16 +382,17 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
if (!(session->flags & (1 << CMTP_LOOPBACK))) {
err = cmtp_attach_device(session);
- if (err < 0)
- goto detach;
+ if (err < 0) {
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
+ up_write(&cmtp_session_sem);
+ return err;
+ }
}
up_write(&cmtp_session_sem);
return 0;
-detach:
- cmtp_detach_device(session);
-
unlink:
__cmtp_unlink_session(session);
@@ -414,7 +417,8 @@ int cmtp_del_connection(struct cmtp_conndel_req *req)
skb_queue_purge(&session->transmit);
/* Stop session thread */
- kthread_stop(session->task);
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
} else
err = -ENOENT;
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index ec0bc3f..56943ad 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1209,7 +1209,6 @@ static void hci_cmd_timer(unsigned long arg)
BT_ERR("%s command tx timeout", hdev->name);
atomic_set(&hdev->cmd_cnt, 1);
- clear_bit(HCI_RESET, &hdev->flags);
tasklet_schedule(&hdev->cmd_task);
}
@@ -1327,7 +1326,7 @@ int hci_blacklist_add(struct hci_dev *hdev, bdaddr_t *bdaddr)
entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL);
if (!entry) {
- return -ENOMEM;
+ err = -ENOMEM;
goto err;
}
@@ -2408,7 +2407,10 @@ static void hci_cmd_task(unsigned long arg)
if (hdev->sent_cmd) {
atomic_dec(&hdev->cmd_cnt);
hci_send_frame(skb);
- mod_timer(&hdev->cmd_timer,
+ if (test_bit(HCI_RESET, &hdev->flags))
+ del_timer(&hdev->cmd_timer);
+ else
+ mod_timer(&hdev->cmd_timer,
jiffies + msecs_to_jiffies(HCI_CMD_TIMEOUT));
} else {
skb_queue_head(&hdev->cmd_q, skb);
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 43b4c2d..fb68f34 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -764,6 +764,7 @@ static int hidp_session(void *arg)
up_write(&hidp_session_sem);
+ kfree(session->rd_data);
kfree(session);
return 0;
}
@@ -841,7 +842,8 @@ static int hidp_setup_input(struct hidp_session *session,
err = input_register_device(input);
if (err < 0) {
- hci_conn_put_device(session->conn);
+ input_free_device(input);
+ session->input = NULL;
return err;
}
@@ -1044,8 +1046,12 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
}
err = hid_add_device(session->hid);
- if (err < 0)
- goto err_add_device;
+ if (err < 0) {
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
+ up_write(&hidp_session_sem);
+ return err;
+ }
if (session->input) {
hidp_send_ctrl_message(session,
@@ -1059,12 +1065,6 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
up_write(&hidp_session_sem);
return 0;
-err_add_device:
- hid_destroy_device(session->hid);
- session->hid = NULL;
- atomic_inc(&session->terminate);
- wake_up_process(session->task);
-
unlink:
hidp_del_timer(session);
@@ -1090,7 +1090,6 @@ purge:
failed:
up_write(&hidp_session_sem);
- input_free_device(session->input);
kfree(session);
return err;
}
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 3204ba8..b3bdb48 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1159,9 +1159,8 @@ int __l2cap_wait_ack(struct sock *sk)
int timeo = HZ/5;
add_wait_queue(sk_sleep(sk), &wait);
- while ((chan->unacked_frames > 0 && chan->conn)) {
- set_current_state(TASK_INTERRUPTIBLE);
-
+ set_current_state(TASK_INTERRUPTIBLE);
+ while (chan->unacked_frames > 0 && chan->conn) {
if (!timeo)
timeo = HZ/5;
@@ -1173,6 +1172,7 @@ int __l2cap_wait_ack(struct sock *sk)
release_sock(sk);
timeo = schedule_timeout(timeo);
lock_sock(sk);
+ set_current_state(TASK_INTERRUPTIBLE);
err = sock_error(sk);
if (err)
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 5c36b3e..61f1f62 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -235,30 +235,26 @@ static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
- goto done;
- }
-
timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
BT_DBG("sk %p timeo %ld", sk, timeo);
/* Wait for an incoming connection. (wake-one). */
add_wait_queue_exclusive(sk_sleep(sk), &wait);
- while (!(nsk = bt_accept_dequeue(sk, newsock))) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!timeo) {
- err = -EAGAIN;
+
+ if (sk->sk_state != BT_LISTEN) {
+ err = -EBADFD;
break;
}
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
+ nsk = bt_accept_dequeue(sk, newsock);
+ if (nsk)
+ break;
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
+ if (!timeo) {
+ err = -EAGAIN;
break;
}
@@ -266,8 +262,12 @@ static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
err = sock_intr_errno(timeo);
break;
}
+
+ release_sock(sk);
+ timeo = schedule_timeout(timeo);
+ lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
if (err)
@@ -993,7 +993,7 @@ static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int p
INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
sk->sk_destruct = l2cap_sock_destruct;
- sk->sk_sndtimeo = msecs_to_jiffies(L2CAP_CONN_TIMEOUT);
+ sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
sock_reset_flag(sk, SOCK_ZAPPED);
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 5759bb7..5ba3f6d 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -62,7 +62,6 @@ static DEFINE_MUTEX(rfcomm_mutex);
#define rfcomm_lock() mutex_lock(&rfcomm_mutex)
#define rfcomm_unlock() mutex_unlock(&rfcomm_mutex)
-static unsigned long rfcomm_event;
static LIST_HEAD(session_list);
@@ -120,7 +119,6 @@ static inline void rfcomm_schedule(void)
{
if (!rfcomm_thread)
return;
- set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
wake_up_process(rfcomm_thread);
}
@@ -2038,19 +2036,18 @@ static int rfcomm_run(void *unused)
rfcomm_add_listener(BDADDR_ANY);
- while (!kthread_should_stop()) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) {
- /* No pending events. Let's sleep.
- * Incoming connections and data will wake us up. */
- schedule();
- }
- set_current_state(TASK_RUNNING);
+
+ if (kthread_should_stop())
+ break;
/* Process stuff */
- clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
rfcomm_process_sessions();
+
+ schedule();
}
+ __set_current_state(TASK_RUNNING);
rfcomm_kill_listener();
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index 8f01e6b..482722b 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -485,11 +485,6 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
lock_sock(sk);
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
- goto done;
- }
-
if (sk->sk_type != SOCK_STREAM) {
err = -EINVAL;
goto done;
@@ -501,19 +496,20 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
/* Wait for an incoming connection. (wake-one). */
add_wait_queue_exclusive(sk_sleep(sk), &wait);
- while (!(nsk = bt_accept_dequeue(sk, newsock))) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!timeo) {
- err = -EAGAIN;
+
+ if (sk->sk_state != BT_LISTEN) {
+ err = -EBADFD;
break;
}
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock(sk);
+ nsk = bt_accept_dequeue(sk, newsock);
+ if (nsk)
+ break;
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
+ if (!timeo) {
+ err = -EAGAIN;
break;
}
@@ -521,8 +517,12 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
err = sock_intr_errno(timeo);
break;
}
+
+ release_sock(sk);
+ timeo = schedule_timeout(timeo);
+ lock_sock(sk);
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
if (err)
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 4c3621b..8270f05 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -564,30 +564,26 @@ static int sco_sock_accept(struct socket *sock, struct socket *newsock, int flag
lock_sock(sk);
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
- goto done;
- }
-
timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
BT_DBG("sk %p timeo %ld", sk, timeo);
/* Wait for an incoming connection. (wake-one). */
add_wait_queue_exclusive(sk_sleep(sk), &wait);
- while (!(ch = bt_accept_dequeue(sk, newsock))) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!timeo) {
- err = -EAGAIN;
+
+ if (sk->sk_state != BT_LISTEN) {
+ err = -EBADFD;
break;
}
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock(sk);
+ ch = bt_accept_dequeue(sk, newsock);
+ if (ch)
+ break;
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
+ if (!timeo) {
+ err = -EAGAIN;
break;
}
@@ -595,8 +591,12 @@ static int sco_sock_accept(struct socket *sock, struct socket *newsock, int flag
err = sock_intr_errno(timeo);
break;
}
+
+ release_sock(sk);
+ timeo = schedule_timeout(timeo);
+ lock_sock(sk);
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
if (err)
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 866f269..acb4423 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1012,7 +1012,6 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw)
cancel_work_sync(&local->reconfig_filter);
ieee80211_clear_tx_pending(local);
- sta_info_stop(local);
rate_control_deinitialize(local);
if (skb_queue_len(&local->skb_queue) ||
@@ -1024,6 +1023,7 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw)
destroy_workqueue(local->workqueue);
wiphy_unregister(local->hw.wiphy);
+ sta_info_stop(local);
ieee80211_wep_free(local);
ieee80211_led_exit(local);
kfree(local->int_scan_req);
diff --git a/net/wireless/core.c b/net/wireless/core.c
index 645437c..c148651 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -616,6 +616,9 @@ int wiphy_register(struct wiphy *wiphy)
if (res)
goto out_rm_dev;
+ rtnl_lock();
+ rdev->wiphy.registered = true;
+ rtnl_unlock();
return 0;
out_rm_dev:
@@ -647,6 +650,10 @@ void wiphy_unregister(struct wiphy *wiphy)
{
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
+ rtnl_lock();
+ rdev->wiphy.registered = false;
+ rtnl_unlock();
+
rfkill_unregister(rdev->rfkill);
/* protect the device list */
diff --git a/net/wireless/sysfs.c b/net/wireless/sysfs.c
index c6e4ca6..ff57459 100644
--- a/net/wireless/sysfs.c
+++ b/net/wireless/sysfs.c
@@ -93,7 +93,8 @@ static int wiphy_suspend(struct device *dev, pm_message_t state)
if (rdev->ops->suspend) {
rtnl_lock();
- ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan);
+ if (rdev->wiphy.registered)
+ ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan);
rtnl_unlock();
}
@@ -112,7 +113,8 @@ static int wiphy_resume(struct device *dev)
if (rdev->ops->resume) {
rtnl_lock();
- ret = rdev->ops->resume(&rdev->wiphy);
+ if (rdev->wiphy.registered)
+ ret = rdev->ops->resume(&rdev->wiphy);
rtnl_unlock();
}
--
John W. Linville Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org might be all we have. Be ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: Ben Hutchings @ 2011-08-26 15:42 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20110826.110820.2220935212459386472.davem@davemloft.net>
On Fri, Aug 26, 2011 at 11:08:20AM -0400, David Miller wrote:
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Thu, 25 Aug 2011 05:44:15 +0100
>
> > Commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305 ('net: Support
> > inclusion of <linux/socket.h> before <sys/socket.h>') removed the
> > definition of struct sockaddr for userland.
> >
> > But we still have several headers using struct sockaddr, and we
> > shouldn't make them include <sys/socket.h> as that risks recursive
> > inclusion in future. Define and use an identical struct
> > __kernel_sockaddr instead.
> >
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ...
> >
> > -/*
> > - * 1003.1g requires sa_family_t and that sa_data is char.
> > - */
> > +#define sockaddr __kernel_sockaddr
>
> This cure is worse than the disease.
>
> Now any application that includes sys/socket.h one way or another is
> now going to get a real hard build failure since __kernel_sockaddr
> will effectively get redefined.
[...]
This #define is in the #ifdef __KERNEL__ section. I don't want t
change all the in-kernel users to say __kernel_sockaddr. This is
just the same as the preceding 'typedef __kernel_sa_family_t
sa_family_t' except that you can't create struct aliases that way.
Ben.
--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus
^ permalink raw reply
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: David Miller @ 2011-08-26 16:04 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <20110826154248.GD24107@decadent.org.uk>
From: Ben Hutchings <ben@decadent.org.uk>
Date: Fri, 26 Aug 2011 16:42:48 +0100
> This #define is in the #ifdef __KERNEL__ section. I don't want t
> change all the in-kernel users to say __kernel_sockaddr. This is
> just the same as the preceding 'typedef __kernel_sa_family_t
> sa_family_t' except that you can't create struct aliases that way.
Aha, I didn't catch that part. Then this is fine, thanks for
explaining Ben.
^ permalink raw reply
* Re: [PATCH net-next v2 00/10] Fix net header dependencies
From: David Miller @ 2011-08-26 16:09 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <1314247131.27179.116.camel@deadeye>
From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 25 Aug 2011 05:38:44 +0100
> Various networking headers depend on definitions from others which they
> don't include. We can't fix all of these, because some definitions are
> duplicated between kernel headers and glibc headers and we cannot tell
> which is the right one to include. We also have to be wary of
> introducing a dependency cycle.
>
> Since v1, I've dropped the patches to <linux/scc.h> and <linux/if_ppp.h>
> and added the acknowledgements I got last time.
All applied, thanks!
^ permalink raw reply
* Re: [PATCH 3/9] stmmac: add MMC supports exported via debugfs.
From: David Miller @ 2011-08-26 16:12 UTC (permalink / raw)
To: peppe.cavallaro; +Cc: netdev
In-Reply-To: <1314259229-13767-4-git-send-email-peppe.cavallaro@st.com>
From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Thu, 25 Aug 2011 10:00:23 +0200
> This patch adds the MMC management counters support.
> MMC module is an extension of the register address
> space and all the hardware counters can be accessed
> via debugfs.
> Below an example of the output:
This is not the appropriate way to expose internal chip counters.
Please use ethtool statistics for this.
^ permalink raw reply
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: David Miller @ 2011-08-26 16:20 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <20110826.120451.1765083060493659307.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Fri, 26 Aug 2011 12:04:51 -0400 (EDT)
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Fri, 26 Aug 2011 16:42:48 +0100
>
>> This #define is in the #ifdef __KERNEL__ section. I don't want t
>> change all the in-kernel users to say __kernel_sockaddr. This is
>> just the same as the preceding 'typedef __kernel_sa_family_t
>> sa_family_t' except that you can't create struct aliases that way.
>
> Aha, I didn't catch that part. Then this is fine, thanks for
> explaining Ben.
Actually, this patch breaks the build, specifically of ifenslave.c
I'll leave the other patches in, but you'll need to respin this one.
Documentation/networking/ifenslave.c: In function ‘if_getconfig’:
Documentation/networking/ifenslave.c:553:11: error: incompatible types when assigning to type ‘struct sockaddr’ from type ‘struct __kernel_sockaddr’
Documentation/networking/ifenslave.c:559:13: error: incompatible types when assigning to type ‘struct sockaddr’ from type ‘struct __kernel_sockaddr’
Documentation/networking/ifenslave.c:565:11: error: incompatible types when assigning to type ‘struct sockaddr’ from type ‘struct __kernel_sockaddr’
Documentation/networking/ifenslave.c: In function ‘enslave’:
Documentation/networking/ifenslave.c:727:13: warning: passing argument 2 of ‘set_slave_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:230:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
Documentation/networking/ifenslave.c:772:6: warning: passing argument 2 of ‘set_master_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:229:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
Documentation/networking/ifenslave.c:817:2: warning: passing argument 2 of ‘set_master_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:229:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
Documentation/networking/ifenslave.c:821:2: warning: passing argument 2 of ‘set_slave_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:230:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
make[2]: *** [Documentation/networking/ifenslave] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Documentation/networking] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [vmlinux] Error 2
^ permalink raw reply
* [PATCH] netpoll: fix incorrect access to skb data in __netpoll_rx
From: Eric Dumazet @ 2011-08-26 16:26 UTC (permalink / raw)
To: David Miller; +Cc: netdev
__netpoll_rx() doesnt properly handle skbs with small header
pskb_may_pull() or pskb_trim_rcsum() can change skb->data, we must
reload it.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
net/core/netpoll.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index adf84dd..5262251 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -558,13 +558,14 @@ int __netpoll_rx(struct sk_buff *skb)
if (skb_shared(skb))
goto out;
- iph = (struct iphdr *)skb->data;
if (!pskb_may_pull(skb, sizeof(struct iphdr)))
goto out;
+ iph = (struct iphdr *)skb->data;
if (iph->ihl < 5 || iph->version != 4)
goto out;
if (!pskb_may_pull(skb, iph->ihl*4))
goto out;
+ iph = (struct iphdr *)skb->data;
if (ip_fast_csum((u8 *)iph, iph->ihl) != 0)
goto out;
@@ -579,6 +580,7 @@ int __netpoll_rx(struct sk_buff *skb)
if (pskb_trim_rcsum(skb, len))
goto out;
+ iph = (struct iphdr *)skb->data;
if (iph->protocol != IPPROTO_UDP)
goto out;
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox