git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[safe/jmp/linux-2.6]
/
net
/
core
/
dev.c
diff --git
a/net/core/dev.c
b/net/core/dev.c
index
d273e4e
..
1845b08
100644
(file)
--- a/
net/core/dev.c
+++ b/
net/core/dev.c
@@
-954,18
+954,22
@@
int dev_alloc_name(struct net_device *dev, const char *name)
}
EXPORT_SYMBOL(dev_alloc_name);
}
EXPORT_SYMBOL(dev_alloc_name);
-static int dev_get_valid_name(struct net *net, const char *name, char *buf,
- bool fmt)
+static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt)
{
{
+ struct net *net;
+
+ BUG_ON(!dev_net(dev));
+ net = dev_net(dev);
+
if (!dev_valid_name(name))
return -EINVAL;
if (fmt && strchr(name, '%'))
if (!dev_valid_name(name))
return -EINVAL;
if (fmt && strchr(name, '%'))
- return
__dev_alloc_name(net, name, buf
);
+ return
dev_alloc_name(dev, name
);
else if (__dev_get_by_name(net, name))
return -EEXIST;
else if (__dev_get_by_name(net, name))
return -EEXIST;
- else if (
buf
!= name)
- strlcpy(
buf
, name, IFNAMSIZ);
+ else if (
dev->name
!= name)
+ strlcpy(
dev->name
, name, IFNAMSIZ);
return 0;
}
return 0;
}
@@
-997,7
+1001,7
@@
int dev_change_name(struct net_device *dev, const char *newname)
memcpy(oldname, dev->name, IFNAMSIZ);
memcpy(oldname, dev->name, IFNAMSIZ);
- err = dev_get_valid_name(
net, newname, dev->
name, 1);
+ err = dev_get_valid_name(
dev, new
name, 1);
if (err < 0)
return err;
if (err < 0)
return err;
@@
-2421,10
+2425,7
@@
static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
if (skb_queue_len(&sd->input_pkt_queue)) {
enqueue:
__skb_queue_tail(&sd->input_pkt_queue, skb);
if (skb_queue_len(&sd->input_pkt_queue)) {
enqueue:
__skb_queue_tail(&sd->input_pkt_queue, skb);
-#ifdef CONFIG_RPS
- *qtail = sd->input_queue_head +
- skb_queue_len(&sd->input_pkt_queue);
-#endif
+ input_queue_tail_incr_save(sd, qtail);
rps_unlock(sd);
local_irq_restore(flags);
return NET_RX_SUCCESS;
rps_unlock(sd);
local_irq_restore(flags);
return NET_RX_SUCCESS;
@@
-2959,7
+2960,7
@@
static void flush_backlog(void *arg)
if (skb->dev == dev) {
__skb_unlink(skb, &sd->input_pkt_queue);
kfree_skb(skb);
if (skb->dev == dev) {
__skb_unlink(skb, &sd->input_pkt_queue);
kfree_skb(skb);
- input_queue_head_
add(sd, 1
);
+ input_queue_head_
incr(sd
);
}
}
rps_unlock(sd);
}
}
rps_unlock(sd);
@@
-2968,6
+2969,7
@@
static void flush_backlog(void *arg)
if (skb->dev == dev) {
__skb_unlink(skb, &sd->process_queue);
kfree_skb(skb);
if (skb->dev == dev) {
__skb_unlink(skb, &sd->process_queue);
kfree_skb(skb);
+ input_queue_head_incr(sd);
}
}
}
}
}
}
@@
-3323,18
+3325,20
@@
static int process_backlog(struct napi_struct *napi, int quota)
while ((skb = __skb_dequeue(&sd->process_queue))) {
local_irq_enable();
__netif_receive_skb(skb);
while ((skb = __skb_dequeue(&sd->process_queue))) {
local_irq_enable();
__netif_receive_skb(skb);
- if (++work >= quota)
- return work;
local_irq_disable();
local_irq_disable();
+ input_queue_head_incr(sd);
+ if (++work >= quota) {
+ local_irq_enable();
+ return work;
+ }
}
rps_lock(sd);
qlen = skb_queue_len(&sd->input_pkt_queue);
}
rps_lock(sd);
qlen = skb_queue_len(&sd->input_pkt_queue);
- if (qlen) {
- input_queue_head_add(sd, qlen);
+ if (qlen)
skb_queue_splice_tail_init(&sd->input_pkt_queue,
&sd->process_queue);
skb_queue_splice_tail_init(&sd->input_pkt_queue,
&sd->process_queue);
- }
+
if (qlen < quota - work) {
/*
* Inline a custom version of __napi_complete().
if (qlen < quota - work) {
/*
* Inline a custom version of __napi_complete().
@@
-4960,7
+4964,7
@@
int register_netdevice(struct net_device *dev)
}
}
}
}
- ret = dev_get_valid_name(
net, dev->name
, dev->name, 0);
+ ret = dev_get_valid_name(
dev
, dev->name, 0);
if (ret)
goto err_uninit;
if (ret)
goto err_uninit;
@@
-5558,7
+5562,7
@@
int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
/* We get here if we can't use the current device name */
if (!pat)
goto out;
/* We get here if we can't use the current device name */
if (!pat)
goto out;
- if (dev_get_valid_name(
net, pat, dev->name
, 1))
+ if (dev_get_valid_name(
dev, pat
, 1))
goto out;
}
goto out;
}
@@
-5661,12
+5665,14
@@
static int dev_cpu_callback(struct notifier_block *nfb,
local_irq_enable();
/* Process offline CPU's input_pkt_queue */
local_irq_enable();
/* Process offline CPU's input_pkt_queue */
- while ((skb = __skb_dequeue(&oldsd->
input_pkt
_queue))) {
+ while ((skb = __skb_dequeue(&oldsd->
process
_queue))) {
netif_rx(skb);
netif_rx(skb);
- input_queue_head_
add(oldsd, 1
);
+ input_queue_head_
incr(oldsd
);
}
}
- while ((skb = __skb_dequeue(&oldsd->
process_queue)))
+ while ((skb = __skb_dequeue(&oldsd->
input_pkt_queue))) {
netif_rx(skb);
netif_rx(skb);
+ input_queue_head_incr(oldsd);
+ }
return NOTIFY_OK;
}
return NOTIFY_OK;
}