Commit 8557cd74 authored by Veaceslav Falico's avatar Veaceslav Falico Committed by David S. Miller

bonding: replace SLAVE_IS_OK() with bond_slave_can_tx()

They're verifying the same thing (except of IFF_UP, which is implied for
netif_running(), which is also a prerequisite).

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: default avatarVeaceslav Falico <vfalico@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 891ab54d
...@@ -2449,13 +2449,13 @@ int bond_3ad_xmit_xor(struct sk_buff *skb, struct net_device *dev) ...@@ -2449,13 +2449,13 @@ int bond_3ad_xmit_xor(struct sk_buff *skb, struct net_device *dev)
continue; continue;
if (slave_agg_no >= 0) { if (slave_agg_no >= 0) {
if (!first_ok_slave && SLAVE_IS_OK(slave)) if (!first_ok_slave && bond_slave_can_tx(slave))
first_ok_slave = slave; first_ok_slave = slave;
slave_agg_no--; slave_agg_no--;
continue; continue;
} }
if (SLAVE_IS_OK(slave)) { if (bond_slave_can_tx(slave)) {
bond_dev_queue_xmit(bond, skb, slave->dev); bond_dev_queue_xmit(bond, skb, slave->dev);
goto out; goto out;
} }
......
...@@ -228,7 +228,7 @@ static struct slave *tlb_get_least_loaded_slave(struct bonding *bond) ...@@ -228,7 +228,7 @@ static struct slave *tlb_get_least_loaded_slave(struct bonding *bond)
/* Find the slave with the largest gap */ /* Find the slave with the largest gap */
bond_for_each_slave_rcu(bond, slave, iter) { bond_for_each_slave_rcu(bond, slave, iter) {
if (SLAVE_IS_OK(slave)) { if (bond_slave_can_tx(slave)) {
long long gap = compute_gap(slave); long long gap = compute_gap(slave);
if (max_gap < gap) { if (max_gap < gap) {
...@@ -383,7 +383,7 @@ static struct slave *rlb_next_rx_slave(struct bonding *bond) ...@@ -383,7 +383,7 @@ static struct slave *rlb_next_rx_slave(struct bonding *bond)
bool found = false; bool found = false;
bond_for_each_slave(bond, slave, iter) { bond_for_each_slave(bond, slave, iter) {
if (!SLAVE_IS_OK(slave)) if (!bond_slave_can_tx(slave))
continue; continue;
if (!found) { if (!found) {
if (!before || before->speed < slave->speed) if (!before || before->speed < slave->speed)
...@@ -416,7 +416,7 @@ static struct slave *__rlb_next_rx_slave(struct bonding *bond) ...@@ -416,7 +416,7 @@ static struct slave *__rlb_next_rx_slave(struct bonding *bond)
bool found = false; bool found = false;
bond_for_each_slave_rcu(bond, slave, iter) { bond_for_each_slave_rcu(bond, slave, iter) {
if (!SLAVE_IS_OK(slave)) if (!bond_slave_can_tx(slave))
continue; continue;
if (!found) { if (!found) {
if (!before || before->speed < slave->speed) if (!before || before->speed < slave->speed)
...@@ -1100,13 +1100,13 @@ static void alb_swap_mac_addr(struct slave *slave1, struct slave *slave2) ...@@ -1100,13 +1100,13 @@ static void alb_swap_mac_addr(struct slave *slave1, struct slave *slave2)
static void alb_fasten_mac_swap(struct bonding *bond, struct slave *slave1, static void alb_fasten_mac_swap(struct bonding *bond, struct slave *slave1,
struct slave *slave2) struct slave *slave2)
{ {
int slaves_state_differ = (SLAVE_IS_OK(slave1) != SLAVE_IS_OK(slave2)); int slaves_state_differ = (bond_slave_can_tx(slave1) != bond_slave_can_tx(slave2));
struct slave *disabled_slave = NULL; struct slave *disabled_slave = NULL;
ASSERT_RTNL(); ASSERT_RTNL();
/* fasten the change in the switch */ /* fasten the change in the switch */
if (SLAVE_IS_OK(slave1)) { if (bond_slave_can_tx(slave1)) {
alb_send_learning_packets(slave1, slave1->dev->dev_addr); alb_send_learning_packets(slave1, slave1->dev->dev_addr);
if (bond->alb_info.rlb_enabled) { if (bond->alb_info.rlb_enabled) {
/* inform the clients that the mac address /* inform the clients that the mac address
...@@ -1118,7 +1118,7 @@ static void alb_fasten_mac_swap(struct bonding *bond, struct slave *slave1, ...@@ -1118,7 +1118,7 @@ static void alb_fasten_mac_swap(struct bonding *bond, struct slave *slave1,
disabled_slave = slave1; disabled_slave = slave1;
} }
if (SLAVE_IS_OK(slave2)) { if (bond_slave_can_tx(slave2)) {
alb_send_learning_packets(slave2, slave2->dev->dev_addr); alb_send_learning_packets(slave2, slave2->dev->dev_addr);
if (bond->alb_info.rlb_enabled) { if (bond->alb_info.rlb_enabled) {
/* inform the clients that the mac address /* inform the clients that the mac address
...@@ -1360,7 +1360,7 @@ static int bond_do_alb_xmit(struct sk_buff *skb, struct bonding *bond, ...@@ -1360,7 +1360,7 @@ static int bond_do_alb_xmit(struct sk_buff *skb, struct bonding *bond,
bond_info->unbalanced_load += skb->len; bond_info->unbalanced_load += skb->len;
} }
if (tx_slave && SLAVE_IS_OK(tx_slave)) { if (tx_slave && bond_slave_can_tx(tx_slave)) {
if (tx_slave != rcu_dereference(bond->curr_active_slave)) { if (tx_slave != rcu_dereference(bond->curr_active_slave)) {
ether_addr_copy(eth_data->h_source, ether_addr_copy(eth_data->h_source,
tx_slave->dev->dev_addr); tx_slave->dev->dev_addr);
......
...@@ -3850,14 +3850,14 @@ static int bond_ethtool_get_settings(struct net_device *bond_dev, ...@@ -3850,14 +3850,14 @@ static int bond_ethtool_get_settings(struct net_device *bond_dev,
ecmd->duplex = DUPLEX_UNKNOWN; ecmd->duplex = DUPLEX_UNKNOWN;
ecmd->port = PORT_OTHER; ecmd->port = PORT_OTHER;
/* Since SLAVE_IS_OK returns false for all inactive or down slaves, we /* Since bond_slave_can_tx returns false for all inactive or down slaves, we
* do not need to check mode. Though link speed might not represent * do not need to check mode. Though link speed might not represent
* the true receive or transmit bandwidth (not all modes are symmetric) * the true receive or transmit bandwidth (not all modes are symmetric)
* this is an accurate maximum. * this is an accurate maximum.
*/ */
read_lock(&bond->lock); read_lock(&bond->lock);
bond_for_each_slave(bond, slave, iter) { bond_for_each_slave(bond, slave, iter) {
if (SLAVE_IS_OK(slave)) { if (bond_slave_can_tx(slave)) {
if (slave->speed != SPEED_UNKNOWN) if (slave->speed != SPEED_UNKNOWN)
speed += slave->speed; speed += slave->speed;
if (ecmd->duplex == DUPLEX_UNKNOWN && if (ecmd->duplex == DUPLEX_UNKNOWN &&
......
...@@ -40,15 +40,6 @@ ...@@ -40,15 +40,6 @@
#define BOND_DEFAULT_MIIMON 100 #define BOND_DEFAULT_MIIMON 100
/*
* Checks whether slave is ready for transmit.
*/
#define SLAVE_IS_OK(slave) \
(((slave)->dev->flags & IFF_UP) && \
netif_running((slave)->dev) && \
((slave)->link == BOND_LINK_UP) && \
bond_is_active_slave(slave))
/* /*
* Less bad way to call ioctl from within the kernel; this needs to be * Less bad way to call ioctl from within the kernel; this needs to be
* done some other way to get the call out of interrupt context. * done some other way to get the call out of interrupt context.
......
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