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: Veaceslav Falico <vfalico@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
891ab54d66
commit
8557cd74ca
@@ -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)
|
|||||||
|
|
||||||
/* 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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 @@
|
|||||||
|
|
||||||
#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.
|
||||||
|
Reference in New Issue
Block a user