|
@@ -3673,28 +3673,24 @@ static inline int bond_slave_override(struct bonding *bond,
|
|
|
struct sk_buff *skb)
|
|
|
{
|
|
|
struct slave *slave = NULL;
|
|
|
- struct slave *check_slave;
|
|
|
struct list_head *iter;
|
|
|
- int res = 1;
|
|
|
|
|
|
if (!skb->queue_mapping)
|
|
|
return 1;
|
|
|
|
|
|
/* Find out if any slaves have the same mapping as this skb. */
|
|
|
- bond_for_each_slave_rcu(bond, check_slave, iter) {
|
|
|
- if (check_slave->queue_id == skb->queue_mapping) {
|
|
|
- slave = check_slave;
|
|
|
+ bond_for_each_slave_rcu(bond, slave, iter) {
|
|
|
+ if (slave->queue_id == skb->queue_mapping) {
|
|
|
+ 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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /* If the slave isn't UP, use default transmit policy. */
|
|
|
- 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;
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
|