bonding: slight optimizztion for bond_slave_override()
When the skb is xmit by the function bond_slave_override(), it will have duplicate judgement for slave state, and I think it will consumes a little performance, maybe it is negligible, so I simplify the function and remove the unwanted judgement. Signed-off-by: Ding Tianhong <dingtianhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4d4ac1b092
commit
3900f29021
|
@ -3673,28 +3673,24 @@ static inline int bond_slave_override(struct bonding *bond,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct slave *slave = NULL;
|
struct slave *slave = NULL;
|
||||||
struct slave *check_slave;
|
|
||||||
struct list_head *iter;
|
struct list_head *iter;
|
||||||
int res = 1;
|
|
||||||
|
|
||||||
if (!skb->queue_mapping)
|
if (!skb->queue_mapping)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* Find out if any slaves have the same mapping as this skb. */
|
/* Find out if any slaves have the same mapping as this skb. */
|
||||||
bond_for_each_slave_rcu(bond, check_slave, iter) {
|
bond_for_each_slave_rcu(bond, slave, iter) {
|
||||||
if (check_slave->queue_id == skb->queue_mapping) {
|
if (slave->queue_id == skb->queue_mapping) {
|
||||||
slave = check_slave;
|
if (slave_can_tx(slave)) {
|
||||||
|
bond_dev_queue_xmit(bond, skb, slave->dev);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* If the slave isn't UP, use default transmit policy. */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the slave isn't UP, use default transmit policy. */
|
return 1;
|
||||||
if (slave && slave->queue_id && IS_UP(slave->dev) &&
|
|
||||||
(slave->link == BOND_LINK_UP)) {
|
|
||||||
res = bond_dev_queue_xmit(bond, skb, slave->dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue