Commit 18b37535 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller

netpoll: Consolidate neigh_tx processing in service_neigh_queue

Move the bond slave device neigh_tx handling into service_neigh_queue.

In connection with neigh_tx processing remove unnecessary tests of
a NULL netpoll_info.  As the netpoll_poll_dev has already used
and thus verified the existince of the netpoll_info.
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ad8d4752
...@@ -179,14 +179,23 @@ static void poll_napi(struct net_device *dev, int budget) ...@@ -179,14 +179,23 @@ static void poll_napi(struct net_device *dev, int budget)
} }
} }
static void service_neigh_queue(struct netpoll_info *npi) static void service_neigh_queue(struct net_device *dev,
struct netpoll_info *npi)
{ {
if (npi) { struct sk_buff *skb;
struct sk_buff *skb; if (dev->flags & IFF_SLAVE) {
struct net_device *bond_dev;
while ((skb = skb_dequeue(&npi->neigh_tx))) struct netpoll_info *bond_ni;
netpoll_neigh_reply(skb, npi);
bond_dev = netdev_master_upper_dev_get_rcu(dev);
bond_ni = rcu_dereference_bh(bond_dev->npinfo);
while ((skb = skb_dequeue(&npi->neigh_tx))) {
skb->dev = bond_dev;
skb_queue_tail(&bond_ni->neigh_tx, skb);
}
} }
while ((skb = skb_dequeue(&npi->neigh_tx)))
netpoll_neigh_reply(skb, npi);
} }
static void netpoll_poll_dev(struct net_device *dev) static void netpoll_poll_dev(struct net_device *dev)
...@@ -227,22 +236,7 @@ static void netpoll_poll_dev(struct net_device *dev) ...@@ -227,22 +236,7 @@ static void netpoll_poll_dev(struct net_device *dev)
up(&ni->dev_lock); up(&ni->dev_lock);
if (dev->flags & IFF_SLAVE) { service_neigh_queue(dev, ni);
if (ni) {
struct net_device *bond_dev;
struct sk_buff *skb;
struct netpoll_info *bond_ni;
bond_dev = netdev_master_upper_dev_get_rcu(dev);
bond_ni = rcu_dereference_bh(bond_dev->npinfo);
while ((skb = skb_dequeue(&ni->neigh_tx))) {
skb->dev = bond_dev;
skb_queue_tail(&bond_ni->neigh_tx, skb);
}
}
}
service_neigh_queue(ni);
zap_completion_queue(); zap_completion_queue();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment