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: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ad8d475244
commit
18b37535f8
1 changed files with 15 additions and 21 deletions
|
@ -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;
|
||||
struct netpoll_info *bond_ni;
|
||||
|
||||
while ((skb = skb_dequeue(&npi->neigh_tx)))
|
||||
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)
|
||||
|
@ -227,22 +236,7 @@ static void netpoll_poll_dev(struct net_device *dev)
|
|||
|
||||
up(&ni->dev_lock);
|
||||
|
||||
if (dev->flags & IFF_SLAVE) {
|
||||
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);
|
||||
service_neigh_queue(dev, ni);
|
||||
|
||||
zap_completion_queue();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue