* Re: [PATCH RFC] virtio_net: use NAPI for xmit (UNTESTED)
From: Shirley Ma @ 2010-03-31 7:13 UTC (permalink / raw)
To: Rusty Russell; +Cc: Michael S. Tsirkin, netdev, Herbert Xu
In-Reply-To: <201003311429.57793.rusty@rustcorp.com.au>
On Wed, 2010-03-31 at 14:29 +1030, Rusty Russell wrote:
> +static int virtnet_xmit_poll(struct napi_struct *xmit_napi, int
> budget)
> +{
> + struct virtnet_info *vi =
> + container_of(xmit_napi, struct virtnet_info,
> xmit_napi);
> +
> + /* Don't access vq/capacity at same time as start_xmit. */
> + __netif_tx_lock(netdev_get_tx_queue(vi->dev, 0),
> smp_processor_id());
> +
> + vi->capacity += free_old_xmit_skbs(vi);
> + if (vi->capacity >= 2 + MAX_SKB_FRAGS) {
> + /* Suppress further xmit interrupts. */
> + vi->svq->vq_ops->disable_cb(vi->svq);
> + napi_complete(xmit_napi);
> +
> + /* Don't wake it if link is down. */
> + if (likely(netif_carrier_ok(vi->vdev)))
This should be if (likely(netif_carrier_ok(vi->dev)))
> + netif_wake_queue(vi->dev);
> + }
> +
> + __netif_tx_unlock(netdev_get_tx_queue(vi->dev, 0));
> + return 1;
> +}
> +
I tested the backport patch with vhost on, the initial netperf test
result showed BW performance decreased 10% with same cpu utilization. I
will look at it tomorrow.
Shirley
^ permalink raw reply
* Re: [PATCH] net/pcmcia 3com: replacements of printk() with dev_info() and friends (fwd)
From: Dominik Brodowski @ 2010-03-31 7:05 UTC (permalink / raw)
To: Alexander Kurz
Cc: David S. Miller, Ken Kawasaki, Magnus Damm, Ben Hutchings, netdev,
linux-kernel
In-Reply-To: <alpine.DEB.1.10.1003302019200.11637@blala.de>
Hey,
On Tue, Mar 30, 2010 at 09:01:41PM +0400, Alexander Kurz wrote:
> I wrote a patch as suggested by kernel-janitors.
> It is my first patch, so I highly welcome comments and hints,
> thanks, Alexander Kurz
>
> ---------- Forwarded message ----------
> Date: Tue, 30 Mar 2010 18:55:33 +0400 (MSD)
> From: Alexander Kurz <akurz@blala.de>
> To: kernel-janitors@vger.kernel.org
> Subject: [PATCH] net/pcmcia 3com: replacements of printk() with dev_info()
> and
> friends
>
> Hello List,
> I wrote a patch replacing some printk() with dev_info() and friends
> for 3com 16-bit PCMCIA cards.
> As this is my first linux patch, comments are welcome,
> thanks, Alexander Kurz
>
> ---------- Forwarded message ----------
> Date: Tue, 30 Mar 2010 18:51:43 +0400
> From: Alexander Kurz <akurz@blala.de>
> To: akurz@blala.de
>
> >From 84616314b126b730528ca10e704d80eabad96ff8 Mon Sep 17 00:00:00 2001
> From: Alexander Kurz <akurz@kbdbabel.org>
> Date: Tue, 30 Mar 2010 12:08:54 +0200
> Subject: [PATCH] net/pcmcia 3com: replacements of printk() with dev_info()
> and friends
> as suggested by kernel-janitors for 3com 16-bit PCMCIA cards
that's two "forwarded message" messages too much :) Other than that, the
only issue I see is that there's a "Signed-off-by"-Line missing. See
Documentation/SubmittingPatches for details.
Best,
Dominik
^ permalink raw reply
* Re: [PATCH 1/1] fix net/core/dst.c coding style error and warnings
From: David Miller @ 2010-03-31 6:59 UTC (permalink / raw)
To: chavey; +Cc: netdev, therbert
In-Reply-To: <pvmzl1qoo73.fsf@chavey.mtv.corp.google.com>
From: chavey@google.com
Date: Mon, 29 Mar 2010 13:41:36 -0700
> Fix coding style errors and warnings output while running checkpatch.pl
> on the file net/core/dst.c.
>
> Signed-off-by: chavey <chavey@google.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH net-next] net: remove redundant code
From: David Miller @ 2010-03-31 6:58 UTC (permalink / raw)
To: eric.dumazet; +Cc: netdev
In-Reply-To: <1269961335.2012.66.camel@edumazet-laptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 30 Mar 2010 17:02:15 +0200
> eth_type_trans(skb, netdev) does the "skb->dev = netdev;"
> initialization, we can remove it from various network drivers.
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Applied, thanks Eric.
^ permalink raw reply
* Re: [PATCH] tipc: define needless global scoped variable static
From: David Miller @ 2010-03-31 6:57 UTC (permalink / raw)
To: hagen; +Cc: netdev, per.liden
In-Reply-To: <1269995052-10905-1-git-send-email-hagen@jauu.net>
From: Hagen Paul Pfeifer <hagen@jauu.net>
Date: Wed, 31 Mar 2010 02:24:12 +0200
> struct _zone *tipc_zones has local scope level and
> should defined with the correct scoping.
>
> CC: Per Liden <per.liden@nospam.ericsson.com>
> Signed-off-by: Hagen Paul Pfeifer <hagen@jauu.net>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] sctp: eliminate useless code
From: David Miller @ 2010-03-31 6:57 UTC (permalink / raw)
To: hagen; +Cc: netdev, vladislav.yasevich
In-Reply-To: <1269995097-11206-1-git-send-email-hagen@jauu.net>
From: Hagen Paul Pfeifer <hagen@jauu.net>
Date: Wed, 31 Mar 2010 02:24:57 +0200
> Remove duplicate declaration of symbol: struct hlist_node *node was
> already declared, the seconds declaration shadows the first one.
>
> CC: Vlad Yasevich <vladislav.yasevich@hp.com>
> Signed-off-by: Hagen Paul Pfeifer <hagen@jauu.net>
I'll apply this, thanks.
^ permalink raw reply
* Re: [PATCH] skb_put: remove not needed check for skb linearity
From: David Miller @ 2010-03-31 6:55 UTC (permalink / raw)
To: paulius.zaleckas; +Cc: netdev
In-Reply-To: <20100330130131.8432.43671.stgit@pauliusz>
From: Paulius Zaleckas <paulius.zaleckas@gmail.com>
Date: Tue, 30 Mar 2010 16:01:31 +0300
> It is safe to call skb_put() on packets containing fragments.
>
> Actually I have a case where I allocate packet header with some
> extra headroom and then I dynamically add data as frag_list. After
> adding frags I have to add more data to header and skb_put()
> just BUG's on me :)
>
> And we will save couple instructions for CPU.
>
> Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
No, you really cannot do this, that check is very much intentional and
needs to be there. Otherwise we will allow violations of the
semantics of the SKB data area.
Once you put even one byte of non-linear data into the skb, all data
must be "put" to the end of that non-linear area, without exception.
You can't just stuff arbitrary things "in-between" the linear and the
non-linear stuff.
You'll need to find a way to construct your SKBs properly such that
the entirety of the linear area is constructed before you start
adding non-linear elements.
^ permalink raw reply
* Re: [PATCH 0/6] tagged sysfs support
From: Eric W. Biederman @ 2010-03-31 6:52 UTC (permalink / raw)
To: Kay Sievers
Cc: Greg Kroah-Hartman, Greg KH, linux-kernel, Tejun Heo,
Cornelia Huck, linux-fsdevel, Eric Dumazet, Benjamin LaHaise,
Serge Hallyn, netdev
In-Reply-To: <s2hac3eb2511003302251rcbae8767ne21e9daf1546c849@mail.gmail.com>
Kay Sievers <kay.sievers@vrfy.org> writes:
> On Wed, Mar 31, 2010 at 01:04, Eric W. Biederman <ebiederm@xmission.com> wrote:
>> Kay Sievers <kay.sievers@vrfy.org> writes:
>
> Yeah, /sys/bus/, which is the only sane layout of the needlessly
> different 3 versions of the same thing (bus, class, block).
>
> /sys/bus/<subsys> can just be a plain symlinks to the
> /sys/subsystem/<subsys> directories.
>
> /sys/class/<subsys> *could* be a symlink to the
> /sys/subsystem/<subsys>/devices/ directory, but we really don't want
> to continue to stupidly mix subsystem-wide control files with device
> lists anymore. The "devices" directory needs to be a strict list of
> devices, not some collection of random stuff, that it is today. :)
>
> So we either leave all the conceptually broken class attributes behind
> us, and put them at the /sys/subsystem/<subsys>/ level only, or we
> need to create the /sys/class/<subsys>/* stuff all as symlinks like we
> do today. I expect, we have to create /sys/class as we do today.
Ideally we will keep new subsystem attributes from creeping into
/sys/class/xxxx/ directories.
> Another problem to solve is that sysfs does not allow us to symlink
> regular files, only directories, so we can currently not create the
> class-wide attributes as symlinks to the proper file in
> /sys/subsystem/.
That seems to be part of the everything is a kobject interface, and
all kobjects are directories. I don't think supporting the symlinks
will be particularly hard, although there are issues to consider with
respect to making the symlinks come and go when the attributes do.
>>
>> I'm not entirely clear on what you are doing but it all sounds like it
>> will fit within what I am doing.
>
> The goal is to unify the 3 needlessly different versions of "device
> lists of the same subsystem". We have /sys/class, /sys/bus,
> /sys/block, and all of them will be unified at /sys/subsystem/ leaving
> the old names as compat links only. Unlike block and class, the
> /sys/subsystem/<subsys> directory can be extended with custom
> subdirectories and files, without mixing random files into device
> lists.
That makes sense. I took a quick look and /sys/block is already
a compatibility define. So I don't expect any issues there.
At a practical level there don't appear to be too many class attributes
that will cause problems, but even a couple are enough to be a pain.
> Yeah, it did not makes sense it the first place to mix devices lists
> with global attributes. It's a real mess what people do in sysfs.
I was very disappointed in sysfs the first time I saw someone add writable
attributes. But sysfs is here now.
Eric
^ permalink raw reply
* Re: [PATCH 1/2] netdev: ethtool RXHASH flag
From: David Miller @ 2010-03-31 6:52 UTC (permalink / raw)
To: shemminger; +Cc: netdev
In-Reply-To: <20100329174727.4654e19c@nehalam>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Mon, 29 Mar 2010 17:47:27 -0700
> This adds ethtool and device feature flag to allow control
> of receive hashing offload.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
> ---
> Supersedes earlier patch, decided to call it RXHASH not RSS since
> we don't care about other vendors acronyms
Ah, now I understand, ignore my other email.
Applied, thanks everyone.
^ permalink raw reply
* Re: [PATCH 1/2] netdev: add support for Receive Side Scaling hash control
From: David Miller @ 2010-03-31 6:52 UTC (permalink / raw)
To: shemminger; +Cc: netdev
In-Reply-To: <20100328154448.701c89ee@nehalam>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Sun, 28 Mar 2010 15:44:48 -0700
> This adds ethtool and device feature flag to allow control
> of Receive Side Scaling hashing supported by many modern
> controllers.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
> ---
> I am working on RSS for sky2 device, but the hardware isn't fully cooperating
> but thought others might want to use same API.
I assume you didn't intend this to be applied because it uses
the same value as you choose for RXHASH.
If you want this applied, resubmit against your RXHASH changes.
Thanks!
^ permalink raw reply
* Re: [PATCH 3/6] sysfs: Implement sysfs tagged directory support.
From: Tejun Heo @ 2010-03-31 6:49 UTC (permalink / raw)
To: Eric W. Biederman
Cc: Greg Kroah-Hartman, Kay Sievers, linux-kernel, Cornelia Huck,
linux-fsdevel, Eric Dumazet, Benjamin LaHaise, Serge Hallyn,
netdev, Benjamin Thery
In-Reply-To: <1269973889-25260-3-git-send-email-ebiederm@xmission.com>
Hello, Eric.
On 03/31/2010 03:31 AM, Eric W. Biederman wrote:
> What this patch does is to add an additional tag field to the
> sysfs dirent structure. For directories that should show different
> contents depending on the context such as /sys/class/net/, and
> /sys/devices/virtual/net/ this tag field is used to specify the
> context in which those directories should be visible. Effectively
> this is the same as creating multiple distinct directories with
> the same name but internally to sysfs the result is nicer.
This has become a long running project. :-)
The way to implement partial visibility seems much cleaner now and I
don't have any objection. Thanks for cleaning up the whole sysfs and
implementing this properly. Unfortunately, I still feel quite
uncomfortable about how the scope of visibility is determined and how
deep knowledge about specific namespace implementation seeps down to
kobject / sysfs layer. It almost looks like a gross layering
violation.
Is it at all possible to implement it in properly layered manner?
ie. sysfs providing mechanisms for selective visibility, driver model
wraps it and exports it and namespace implements namespaces on top of
those mechanisms? I can see that there should be some interaction
between the driver model and namespaces but I can't see why that
information should be visible deep down in kobject and sysfs.
Thanks.
--
tejun
^ permalink raw reply
* Re: [PATCH 2/3] can: add support for Janz VMOD-ICAN3 Intelligent CAN module
From: David Miller @ 2010-03-31 6:46 UTC (permalink / raw)
To: wg; +Cc: iws, linux-kernel, socketcan-core, netdev, sameo
In-Reply-To: <4BB1B2DA.60002@grandegger.com>
From: Wolfgang Grandegger <wg@grandegger.com>
Date: Tue, 30 Mar 2010 10:14:18 +0200
> Ira W. Snyder wrote:
>> The Janz VMOD-ICAN3 is a MODULbus daughterboard which fits onto any
>> MODULbus carrier board. It is an intelligent CAN controller with a
>> microcontroller and associated firmware.
>>
>> Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
>
> Acked-by: Wolfgang Grandegger <wg@grandegger.com>
Since this driver depends upon the MFD stuff and that goes
through other maintainers, just toss this CAN driver in
via whatever tree the MFD thing goes through and add my:
Acked-by: David S. Miller <davem@davemloft.net>
Thanks!
^ permalink raw reply
* Re: [net-next-2.6 PATCH] igb: add per-packet timestamping
From: David Miller @ 2010-03-31 6:42 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, nicholasx.d.nunley
In-Reply-To: <20100326213545.19028.21468.stgit@localhost.localdomain>
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 26 Mar 2010 14:36:47 -0700
> From: Nick Nunley <nicholasx.d.nunley@intel.com>
>
> This patch adds support for per-packet timestamping for the
> 82580 adapter. The rx timestamp code is also pulled out of the
> inlined rx hotpath and instead moved to a seperate function.
>
> This version adds a comment explaining the per-packet timestamping
> code added to igb_hwtstamp_ioctl().
>
> Signed-off-by: Nicholas Nunley <nicholasx.d.nunley@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Applied.
^ permalink raw reply
* Re: [PATCH net-next trivial] MAINTAINERS: ipg: Jesse Huang's email address bounces
From: David Miller @ 2010-03-31 6:42 UTC (permalink / raw)
To: joe; +Cc: romieu, sorbica, netdev, linux-kernel
In-Reply-To: <1269801736.1500.36.camel@Joe-Laptop.home>
From: Joe Perches <joe@perches.com>
Date: Sun, 28 Mar 2010 11:42:16 -0700
> Signed-off-by: Joe Perches <joe@perches.com>
Applied.
^ permalink raw reply
* Re: [PATCH net-next trivial] drivers/net/ipg: Remove invalid IPG_DDEBUG_MSG uses, neaten
From: David Miller @ 2010-03-31 6:42 UTC (permalink / raw)
To: joe; +Cc: romieu, sorbica, jesse, netdev, linux-kernel
In-Reply-To: <1269801345.1500.32.camel@Joe-Laptop.home>
From: Joe Perches <joe@perches.com>
Date: Sun, 28 Mar 2010 11:35:45 -0700
> Some no longer valid IPG_DDEBUG_MSG uses are removed
> Validate IPG_DDEBUG_MSG arguments when not #defined
> Neaten #defines
> marco/macro typo correction
>
> Signed-off-by: Joe Perches <joe@perches.com>
Applied.
^ permalink raw reply
* Re: [PATCH net-next-2.6 (TAKE 2)] ipv6: Use __fls() instead of fls() in __ipv6_addr_diff().
From: David Miller @ 2010-03-31 6:40 UTC (permalink / raw)
To: yoshfuji; +Cc: netdev
In-Reply-To: <201003291600.o2TG05VI032167@94.43.138.210.xn.2iij.net>
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Date: Tue, 30 Mar 2010 01:00:05 +0900
> Because we have ensured that the argument is non-zero,
> it is better to use __fls() and generate better code.
>
> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Applied.
^ permalink raw reply
* Re: [PATCH net-next-2.6] ipv6 fib: Use "Sweezle" to optimize addr_bit_test().
From: David Miller @ 2010-03-31 6:40 UTC (permalink / raw)
To: yoshfuji; +Cc: netdev
In-Reply-To: <201003271124.o2RBOGjT006944@94.43.138.210.xn.2iij.net>
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Date: Sat, 27 Mar 2010 20:24:16 +0900
> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Applied.
^ permalink raw reply
* Re: [PATCH net-next-2.6] sctp: Use ipv6_addr_diff() in sctp_v6_addr_match_len().
From: David Miller @ 2010-03-31 6:40 UTC (permalink / raw)
To: yoshfuji; +Cc: netdev
In-Reply-To: <201003261834.o2QIYUhQ009920@94.43.138.210.xn.2iij.net>
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Date: Sat, 27 Mar 2010 03:34:30 +0900
> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Applied.
^ permalink raw reply
* Re: [PATCH net-next-2.6 1/3] ipv6 mcast: Introduce include/net/mld.h for MLD definitions.
From: David Miller @ 2010-03-31 6:27 UTC (permalink / raw)
To: yoshfuji; +Cc: netdev
In-Reply-To: <20100330.232344.177012600.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Tue, 30 Mar 2010 23:23:44 -0700 (PDT)
> From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
> Date: Mon, 29 Mar 2010 20:01:22 +0900
>
>> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
>
> Applied, thanks.
Nevermind, reverted, breaks the build:
net/ipv6/mcast.c: In function ‘igmp6_event_query’:
net/ipv6/mcast.c:1134: error: implicit declaration of function ‘mld_msg’
net/ipv6/mcast.c:1134: warning: assignment makes pointer from integer without a cast
net/ipv6/mcast.c: In function ‘igmp6_event_report’:
net/ipv6/mcast.c:1254: warning: assignment makes pointer from integer without a cast
make[2]: *** [net/ipv6/mcast.o] Error 1
make[1]: *** [net/ipv6] Error 2
make: *** [net] Error 2
make: *** Waiting for unfinished jobs....
CC [M] drivers/net/e1000e/lib.o
LD [M] drivers/net/e1000e/e1000e.o
^ permalink raw reply
* Re: [PATCH net-next-2.6 2/3] bridge br_multicast: Make functions less ipv4 dependent.
From: David Miller @ 2010-03-31 6:24 UTC (permalink / raw)
To: yoshfuji; +Cc: netdev, shemminger
In-Reply-To: <201003291101.o2TB1R0W006599@94.43.138.210.xn.2iij.net>
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Date: Mon, 29 Mar 2010 20:01:27 +0900
> Introduce struct br_ip{} to store ip address and protocol
> and make functions more generic so that we can support
> both IPv4 and IPv6 with less pain.
>
> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Stephen said he would clean up the macros and he seemed to imply
therefore that he'd resubmit these, so I'll leave patches #2 and #3 to
him.
Thanks!
^ permalink raw reply
* Re: [PATCH net-next-2.6 1/3] ipv6 mcast: Introduce include/net/mld.h for MLD definitions.
From: David Miller @ 2010-03-31 6:23 UTC (permalink / raw)
To: yoshfuji; +Cc: netdev
In-Reply-To: <201003291101.o2TB1MWQ006587@94.43.138.210.xn.2iij.net>
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Date: Mon, 29 Mar 2010 20:01:22 +0900
> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Applied, thanks.
^ permalink raw reply
* [PATCH] rps: keep the old behavior on SMP without rps
From: Changli Gao @ 2010-03-31 6:16 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, xiaosuo
keep the old behavior on SMP without rps
RPS introduces a lock operation to per cpu variable input_pkt_queue on
SMP whenever rps is enabled or not. On SMP without RPS, this lock isn't
needed at all.
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
----
net/core/dev.c | 42 ++++++++++++++++++++++++++++--------------
1 file changed, 28 insertions(+), 14 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 3e7fa16..d154f3b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -207,6 +207,20 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)];
}
+static inline void rps_lock(struct softnet_data *queue)
+{
+#ifdef CONFIG_RPS
+ spin_lock(&queue->input_pkt_queue.lock);
+#endif
+}
+
+static inline void rps_unlock(struct softnet_data *queue)
+{
+#ifdef CONFIG_RPS
+ spin_unlock(&queue->input_pkt_queue.lock);
+#endif
+}
+
/* Device list insertion */
static int list_netdevice(struct net_device *dev)
{
@@ -2314,13 +2328,13 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu)
local_irq_save(flags);
__get_cpu_var(netdev_rx_stat).total++;
- spin_lock(&queue->input_pkt_queue.lock);
+ rps_lock(queue);
if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
if (queue->input_pkt_queue.qlen) {
enqueue:
__skb_queue_tail(&queue->input_pkt_queue, skb);
- spin_unlock_irqrestore(&queue->input_pkt_queue.lock,
- flags);
+ rps_unlock(queue);
+ local_irq_restore(flags);
return NET_RX_SUCCESS;
}
@@ -2342,7 +2356,7 @@ enqueue:
goto enqueue;
}
- spin_unlock(&queue->input_pkt_queue.lock);
+ rps_unlock(queue);
__get_cpu_var(netdev_rx_stat).dropped++;
local_irq_restore(flags);
@@ -2767,19 +2781,19 @@ int netif_receive_skb(struct sk_buff *skb)
EXPORT_SYMBOL(netif_receive_skb);
/* Network device is going away, flush any packets still pending */
-static void flush_backlog(struct net_device *dev, int cpu)
+static void flush_backlog(void *arg)
{
- struct softnet_data *queue = &per_cpu(softnet_data, cpu);
+ struct net_device *dev = arg;
+ struct softnet_data *queue = &__get_cpu_var(softnet_data);
struct sk_buff *skb, *tmp;
- unsigned long flags;
- spin_lock_irqsave(&queue->input_pkt_queue.lock, flags);
+ rps_lock(queue);
skb_queue_walk_safe(&queue->input_pkt_queue, skb, tmp)
if (skb->dev == dev) {
__skb_unlink(skb, &queue->input_pkt_queue);
kfree_skb(skb);
}
- spin_unlock_irqrestore(&queue->input_pkt_queue.lock, flags);
+ rps_unlock(queue);
}
static int napi_gro_complete(struct sk_buff *skb)
@@ -3092,14 +3106,16 @@ static int process_backlog(struct napi_struct *napi, int quota)
do {
struct sk_buff *skb;
- spin_lock_irq(&queue->input_pkt_queue.lock);
+ local_irq_disable();
+ rps_lock(queue);
skb = __skb_dequeue(&queue->input_pkt_queue);
if (!skb) {
__napi_complete(napi);
spin_unlock_irq(&queue->input_pkt_queue.lock);
break;
}
- spin_unlock_irq(&queue->input_pkt_queue.lock);
+ rps_unlock(queue);
+ local_irq_enable();
__netif_receive_skb(skb);
} while (++work < quota && jiffies == start_time);
@@ -5549,7 +5565,6 @@ void netdev_run_todo(void)
while (!list_empty(&list)) {
struct net_device *dev
= list_first_entry(&list, struct net_device, todo_list);
- int i;
list_del(&dev->todo_list);
if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
@@ -5561,8 +5576,7 @@ void netdev_run_todo(void)
dev->reg_state = NETREG_UNREGISTERED;
- for_each_online_cpu(i)
- flush_backlog(dev, i);
+ on_each_cpu(flush_backlog, dev, 1);
netdev_wait_allrefs(dev);
^ permalink raw reply related
* Re: [PATCH 0/6] tagged sysfs support
From: Tejun Heo @ 2010-03-31 6:25 UTC (permalink / raw)
To: Kay Sievers
Cc: Eric W. Biederman, Greg Kroah-Hartman, Greg KH, linux-kernel,
Cornelia Huck, linux-fsdevel, Eric Dumazet, Benjamin LaHaise,
Serge Hallyn, netdev
In-Reply-To: <s2hac3eb2511003302251rcbae8767ne21e9daf1546c849@mail.gmail.com>
On 03/31/2010 02:51 PM, Kay Sievers wrote:
> Another problem to solve is that sysfs does not allow us to symlink
> regular files, only directories, so we can currently not create the
> class-wide attributes as symlinks to the proper file in
> /sys/subsystem/.
Making sysfs allow symlinks to attributes shouldn't be too hard if
it's gonna help make things more logical overall.
Thanks.
--
tejun
^ permalink raw reply
* RE: re-submit2 [ANNOUNCEMENT] NET: usb: sierra_net.c driver
From: Rory Filer @ 2010-03-31 6:21 UTC (permalink / raw)
To: David Miller, Elina Pasheva
Cc: dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <20100330.231051.113008279.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
-----Original Message-----
> >
> > Applied, thanks.
>
> Nevermind, reverted, it doesn't even build.
>
> drivers/net/usb/sierra_net.c: In function 'check_ethip_packet':
> drivers/net/usb/sierra_net.c:221:3: error: implicit declaration of
> function 'deverr'
>
> Really, this should never ever happen, and there is simply
> no excuse at all for this.
Well actually there is an excuse, but I'm sure you don't want to
know what it is.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" 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
* Re: drivers/net: Add missing unlock
From: David Miller @ 2010-03-31 6:17 UTC (permalink / raw)
To: julia; +Cc: netdev
Applied, thanks.
^ permalink raw reply
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