Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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;
		}
		}
+7 −7
Original line number Original line Diff line number Diff line
@@ -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);
+2 −2
Original line number Original line Diff line number Diff line
@@ -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 &&
+0 −9
Original line number Original line Diff line number Diff line
@@ -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.