|
@@ -343,7 +343,7 @@ static int bond_set_carrier(struct bonding *bond)
|
|
|
if (!bond_has_slaves(bond))
|
|
|
goto down;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
return bond_3ad_set_carrier(bond);
|
|
|
|
|
|
bond_for_each_slave(bond, slave, iter) {
|
|
@@ -574,7 +574,7 @@ static void bond_hw_addr_flush(struct net_device *bond_dev,
|
|
|
dev_uc_unsync(slave_dev, bond_dev);
|
|
|
dev_mc_unsync(slave_dev, bond_dev);
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
|
|
|
/* del lacpdu mc addr from mc list */
|
|
|
u8 lacpdu_multicast[ETH_ALEN] = MULTICAST_LACPDU_ADDR;
|
|
|
|
|
@@ -810,7 +810,7 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active)
|
|
|
new_active->delay = 0;
|
|
|
new_active->link = BOND_LINK_UP;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
bond_3ad_handle_link_change(new_active, BOND_LINK_UP);
|
|
|
|
|
|
if (bond_is_lb(bond))
|
|
@@ -838,7 +838,7 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active)
|
|
|
rcu_assign_pointer(bond->curr_active_slave, new_active);
|
|
|
}
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) {
|
|
|
if (old_active)
|
|
|
bond_set_slave_inactive_flags(old_active,
|
|
|
BOND_SLAVE_NOTIFY_NOW);
|
|
@@ -877,7 +877,7 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active)
|
|
|
* bonding modes and the retransmission is enabled */
|
|
|
if (netif_running(bond->dev) && (bond->params.resend_igmp > 0) &&
|
|
|
((bond_uses_primary(bond) && new_active) ||
|
|
|
- bond->params.mode == BOND_MODE_ROUNDROBIN)) {
|
|
|
+ BOND_MODE(bond) == BOND_MODE_ROUNDROBIN)) {
|
|
|
bond->igmp_retrans = bond->params.resend_igmp;
|
|
|
queue_delayed_work(bond->wq, &bond->mcast_work, 1);
|
|
|
}
|
|
@@ -1084,7 +1084,7 @@ static bool bond_should_deliver_exact_match(struct sk_buff *skb,
|
|
|
struct bonding *bond)
|
|
|
{
|
|
|
if (bond_is_slave_inactive(slave)) {
|
|
|
- if (bond->params.mode == BOND_MODE_ALB &&
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ALB &&
|
|
|
skb->pkt_type != PACKET_BROADCAST &&
|
|
|
skb->pkt_type != PACKET_MULTICAST)
|
|
|
return false;
|
|
@@ -1126,7 +1126,7 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
|
|
|
|
|
|
skb->dev = bond->dev;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_ALB &&
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ALB &&
|
|
|
bond->dev->priv_flags & IFF_BRIDGE_PORT &&
|
|
|
skb->pkt_type == PACKET_HOST) {
|
|
|
|
|
@@ -1171,7 +1171,7 @@ static struct slave *bond_alloc_slave(struct bonding *bond)
|
|
|
if (!slave)
|
|
|
return NULL;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
|
|
|
SLAVE_AD_INFO(slave) = kzalloc(sizeof(struct ad_slave_info),
|
|
|
GFP_KERNEL);
|
|
|
if (!SLAVE_AD_INFO(slave)) {
|
|
@@ -1186,7 +1186,7 @@ static void bond_free_slave(struct slave *slave)
|
|
|
{
|
|
|
struct bonding *bond = bond_get_bond_by_slave(slave);
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
kfree(SLAVE_AD_INFO(slave));
|
|
|
|
|
|
kfree(slave);
|
|
@@ -1298,7 +1298,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|
|
if (!bond_has_slaves(bond)) {
|
|
|
pr_warn("%s: Warning: The first slave device specified does not support setting the MAC address\n",
|
|
|
bond_dev->name);
|
|
|
- if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) {
|
|
|
bond->params.fail_over_mac = BOND_FOM_ACTIVE;
|
|
|
pr_warn("%s: Setting fail_over_mac to active for active-backup mode\n",
|
|
|
bond_dev->name);
|
|
@@ -1347,7 +1347,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|
|
ether_addr_copy(new_slave->perm_hwaddr, slave_dev->dev_addr);
|
|
|
|
|
|
if (!bond->params.fail_over_mac ||
|
|
|
- bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
|
|
|
+ BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
|
|
|
/*
|
|
|
* Set slave to master's mac address. The application already
|
|
|
* set the master's mac address to that of the first slave
|
|
@@ -1407,7 +1407,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|
|
netif_addr_unlock_bh(bond_dev);
|
|
|
}
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
|
|
|
/* add lacpdu mc addr to mc list */
|
|
|
u8 lacpdu_multicast[ETH_ALEN] = MULTICAST_LACPDU_ADDR;
|
|
|
|
|
@@ -1488,7 +1488,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- switch (bond->params.mode) {
|
|
|
+ switch (BOND_MODE(bond)) {
|
|
|
case BOND_MODE_ACTIVEBACKUP:
|
|
|
bond_set_slave_inactive_flags(new_slave,
|
|
|
BOND_SLAVE_NOTIFY_NOW);
|
|
@@ -1615,7 +1615,7 @@ err_close:
|
|
|
|
|
|
err_restore_mac:
|
|
|
if (!bond->params.fail_over_mac ||
|
|
|
- bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
|
|
|
+ BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
|
|
|
/* XXX TODO - fom follow mode needs to change master's
|
|
|
* MAC if this slave's MAC is in use by the bond, or at
|
|
|
* least print a warning.
|
|
@@ -1691,7 +1691,7 @@ static int __bond_release_one(struct net_device *bond_dev,
|
|
|
write_lock_bh(&bond->lock);
|
|
|
|
|
|
/* Inform AD package of unbinding of slave. */
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
bond_3ad_unbind_slave(slave);
|
|
|
|
|
|
write_unlock_bh(&bond->lock);
|
|
@@ -1706,7 +1706,7 @@ static int __bond_release_one(struct net_device *bond_dev,
|
|
|
bond->current_arp_slave = NULL;
|
|
|
|
|
|
if (!all && (!bond->params.fail_over_mac ||
|
|
|
- bond->params.mode != BOND_MODE_ACTIVEBACKUP)) {
|
|
|
+ BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP)) {
|
|
|
if (ether_addr_equal_64bits(bond_dev->dev_addr, slave->perm_hwaddr) &&
|
|
|
bond_has_slaves(bond))
|
|
|
pr_warn("%s: Warning: the permanent HWaddr of %s - %pM - is still in use by %s - set the HWaddr of %s to a different address to avoid conflicts\n",
|
|
@@ -1805,7 +1805,7 @@ static int __bond_release_one(struct net_device *bond_dev,
|
|
|
dev_close(slave_dev);
|
|
|
|
|
|
if (bond->params.fail_over_mac != BOND_FOM_ACTIVE ||
|
|
|
- bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
|
|
|
+ BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
|
|
|
/* restore original ("permanent") mac address */
|
|
|
ether_addr_copy(addr.sa_data, slave->perm_hwaddr);
|
|
|
addr.sa_family = slave_dev->type;
|
|
@@ -1851,7 +1851,7 @@ static int bond_info_query(struct net_device *bond_dev, struct ifbond *info)
|
|
|
{
|
|
|
struct bonding *bond = netdev_priv(bond_dev);
|
|
|
|
|
|
- info->bond_mode = bond->params.mode;
|
|
|
+ info->bond_mode = BOND_MODE(bond);
|
|
|
info->miimon = bond->params.miimon;
|
|
|
|
|
|
info->num_slaves = bond->slave_cnt;
|
|
@@ -1907,7 +1907,7 @@ static int bond_miimon_inspect(struct bonding *bond)
|
|
|
if (slave->delay) {
|
|
|
pr_info("%s: link status down for %sinterface %s, disabling it in %d ms\n",
|
|
|
bond->dev->name,
|
|
|
- (bond->params.mode ==
|
|
|
+ (BOND_MODE(bond) ==
|
|
|
BOND_MODE_ACTIVEBACKUP) ?
|
|
|
(bond_is_active_slave(slave) ?
|
|
|
"active " : "backup ") : "",
|
|
@@ -1998,10 +1998,10 @@ static void bond_miimon_commit(struct bonding *bond)
|
|
|
slave->link = BOND_LINK_UP;
|
|
|
slave->last_link_up = jiffies;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
|
|
|
/* prevent it from being the active one */
|
|
|
bond_set_backup_slave(slave);
|
|
|
- } else if (bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
|
|
|
+ } else if (BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
|
|
|
/* make it immediately active */
|
|
|
bond_set_active_slave(slave);
|
|
|
} else if (slave != bond->primary_slave) {
|
|
@@ -2015,7 +2015,7 @@ static void bond_miimon_commit(struct bonding *bond)
|
|
|
slave->duplex ? "full" : "half");
|
|
|
|
|
|
/* notify ad that the link status has changed */
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
bond_3ad_handle_link_change(slave, BOND_LINK_UP);
|
|
|
|
|
|
if (bond_is_lb(bond))
|
|
@@ -2034,15 +2034,15 @@ static void bond_miimon_commit(struct bonding *bond)
|
|
|
|
|
|
slave->link = BOND_LINK_DOWN;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_ACTIVEBACKUP ||
|
|
|
- bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP ||
|
|
|
+ BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
bond_set_slave_inactive_flags(slave,
|
|
|
BOND_SLAVE_NOTIFY_NOW);
|
|
|
|
|
|
pr_info("%s: link status definitely down for interface %s, disabling it\n",
|
|
|
bond->dev->name, slave->dev->name);
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
|
|
bond_3ad_handle_link_change(slave,
|
|
|
BOND_LINK_DOWN);
|
|
|
|
|
@@ -2887,7 +2887,7 @@ static int bond_slave_netdev_event(unsigned long event,
|
|
|
|
|
|
bond_update_speed_duplex(slave);
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
|
|
|
if (old_speed != slave->speed)
|
|
|
bond_3ad_adapter_speed_changed(slave);
|
|
|
if (old_duplex != slave->duplex)
|
|
@@ -3078,7 +3078,7 @@ static void bond_work_init_all(struct bonding *bond)
|
|
|
bond_resend_igmp_join_requests_delayed);
|
|
|
INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor);
|
|
|
INIT_DELAYED_WORK(&bond->mii_work, bond_mii_monitor);
|
|
|
- if (bond->params.mode == BOND_MODE_ACTIVEBACKUP)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP)
|
|
|
INIT_DELAYED_WORK(&bond->arp_work, bond_activebackup_arp_mon);
|
|
|
else
|
|
|
INIT_DELAYED_WORK(&bond->arp_work, bond_loadbalance_arp_mon);
|
|
@@ -3124,7 +3124,7 @@ static int bond_open(struct net_device *bond_dev)
|
|
|
/* bond_alb_initialize must be called before the timer
|
|
|
* is started.
|
|
|
*/
|
|
|
- if (bond_alb_initialize(bond, (bond->params.mode == BOND_MODE_ALB)))
|
|
|
+ if (bond_alb_initialize(bond, (BOND_MODE(bond) == BOND_MODE_ALB)))
|
|
|
return -ENOMEM;
|
|
|
if (bond->params.tlb_dynamic_lb)
|
|
|
queue_delayed_work(bond->wq, &bond->alb_work, 0);
|
|
@@ -3138,7 +3138,7 @@ static int bond_open(struct net_device *bond_dev)
|
|
|
bond->recv_probe = bond_arp_rcv;
|
|
|
}
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_8023AD) {
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
|
|
|
queue_delayed_work(bond->wq, &bond->ad_work, 0);
|
|
|
/* register to receive LACPDUs */
|
|
|
bond->recv_probe = bond_3ad_lacpdu_recv;
|
|
@@ -3497,7 +3497,7 @@ static int bond_set_mac_address(struct net_device *bond_dev, void *addr)
|
|
|
struct list_head *iter;
|
|
|
int res = 0;
|
|
|
|
|
|
- if (bond->params.mode == BOND_MODE_ALB)
|
|
|
+ if (BOND_MODE(bond) == BOND_MODE_ALB)
|
|
|
return bond_alb_set_mac_address(bond_dev, addr);
|
|
|
|
|
|
|
|
@@ -3508,7 +3508,7 @@ static int bond_set_mac_address(struct net_device *bond_dev, void *addr)
|
|
|
* Returning an error causes ifenslave to fail.
|
|
|
*/
|
|
|
if (bond->params.fail_over_mac &&
|
|
|
- bond->params.mode == BOND_MODE_ACTIVEBACKUP)
|
|
|
+ BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP)
|
|
|
return 0;
|
|
|
|
|
|
if (!is_valid_ether_addr(sa->sa_data))
|
|
@@ -3792,7 +3792,7 @@ static netdev_tx_t __bond_start_xmit(struct sk_buff *skb, struct net_device *dev
|
|
|
!bond_slave_override(bond, skb))
|
|
|
return NETDEV_TX_OK;
|
|
|
|
|
|
- switch (bond->params.mode) {
|
|
|
+ switch (BOND_MODE(bond)) {
|
|
|
case BOND_MODE_ROUNDROBIN:
|
|
|
return bond_xmit_roundrobin(skb, dev);
|
|
|
case BOND_MODE_ACTIVEBACKUP:
|
|
@@ -3810,7 +3810,7 @@ static netdev_tx_t __bond_start_xmit(struct sk_buff *skb, struct net_device *dev
|
|
|
default:
|
|
|
/* Should never happen, mode already checked */
|
|
|
pr_err("%s: Error: Unknown bonding mode %d\n",
|
|
|
- dev->name, bond->params.mode);
|
|
|
+ dev->name, BOND_MODE(bond));
|
|
|
WARN_ON_ONCE(1);
|
|
|
dev_kfree_skb_any(skb);
|
|
|
return NETDEV_TX_OK;
|