diff options
author | Robert Richter <robert.richter@amd.com> | 2010-10-01 08:54:17 +0200 |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2010-10-01 08:54:17 +0200 |
commit | ef70fcc0cd5d98f5e2df82c9e598b47f351d4f66 (patch) | |
tree | b801ba4d7ebb1155df68d530df49444ffa6252cc /net/core/dev.c | |
parent | 4cbe75be5c6ae86bdc7daec864eeb2dfd66f48bb (diff) | |
parent | 98d943b02f6f1b57787ff1aa6f34d019a407e3ee (diff) |
Merge branch 'oprofile/urgent' into oprofile/core
Conflicts:
arch/arm/oprofile/common.c
Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 3721fbb9a83c..660dd41aaaa6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2058,16 +2058,16 @@ static struct netdev_queue *dev_pick_tx(struct net_device *dev, struct sk_buff *skb) { int queue_index; - struct sock *sk = skb->sk; + const struct net_device_ops *ops = dev->netdev_ops; - queue_index = sk_tx_queue_get(sk); - if (queue_index < 0) { - const struct net_device_ops *ops = dev->netdev_ops; + if (ops->ndo_select_queue) { + queue_index = ops->ndo_select_queue(dev, skb); + queue_index = dev_cap_txqueue(dev, queue_index); + } else { + struct sock *sk = skb->sk; + queue_index = sk_tx_queue_get(sk); + if (queue_index < 0) { - if (ops->ndo_select_queue) { - queue_index = ops->ndo_select_queue(dev, skb); - queue_index = dev_cap_txqueue(dev, queue_index); - } else { queue_index = 0; if (dev->real_num_tx_queues > 1) queue_index = skb_tx_hash(dev, skb); @@ -4845,7 +4845,7 @@ static void rollback_registered_many(struct list_head *head) dev = list_first_entry(head, struct net_device, unreg_list); call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev); - synchronize_net(); + rcu_barrier(); list_for_each_entry(dev, head, unreg_list) dev_put(dev); |