Message ID | 1400156967-8231-6-git-send-email-vfalico@gmail.com |
---|---|
State | Changes Requested, archived |
Headers | show |
Veaceslav Falico <vfalico@gmail.com> wrote: >CC: Jay Vosburgh <j.vosburgh@gmail.com> >CC: Andy Gospodarek <andy@greyhouse.net> >Signed-off-by: Veaceslav Falico <vfalico@gmail.com> >--- > drivers/net/bonding/bond_alb.c | 4 +- > drivers/net/bonding/bond_debugfs.c | 2 +- > drivers/net/bonding/bond_main.c | 94 +++++++++++++++++----------------- > drivers/net/bonding/bond_netlink.c | 6 +-- > drivers/net/bonding/bond_options.c | 2 +- > drivers/net/bonding/bond_procfs.c | 14 ++--- > drivers/net/bonding/bond_sysfs.c | 14 ++--- > drivers/net/bonding/bond_sysfs_slave.c | 2 +- > drivers/net/bonding/bonding.h | 6 ++- > 9 files changed, 73 insertions(+), 71 deletions(-) > >diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c >index 70de039..efacb0e 100644 >--- a/drivers/net/bonding/bond_alb.c >+++ b/drivers/net/bonding/bond_alb.c >@@ -1057,7 +1057,7 @@ static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[]) > struct net_device *dev = slave->dev; > struct sockaddr s_addr; > >- if (slave->bond->params.mode == BOND_MODE_TLB) { >+ if (BOND_MODE(slave->bond) == BOND_MODE_TLB) { > memcpy(dev->dev_addr, addr, dev->addr_len); > return 0; > } >@@ -1745,7 +1745,7 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave > /* in TLB mode, the slave might flip down/up with the old dev_addr, > * and thus filter bond->dev_addr's packets, so force bond's mac > */ >- if (bond->params.mode == BOND_MODE_TLB) { >+ if (BOND_MODE(bond) == BOND_MODE_TLB) { > struct sockaddr sa; > u8 tmp_addr[ETH_ALEN]; > >diff --git a/drivers/net/bonding/bond_debugfs.c b/drivers/net/bonding/bond_debugfs.c >index 2d3f7fa..658e761 100644 >--- a/drivers/net/bonding/bond_debugfs.c >+++ b/drivers/net/bonding/bond_debugfs.c >@@ -23,7 +23,7 @@ static int bond_debug_rlb_hash_show(struct seq_file *m, void *v) > struct rlb_client_info *client_info; > u32 hash_index; > >- if (bond->params.mode != BOND_MODE_ALB) >+ if (BOND_MODE(bond) != BOND_MODE_ALB) > return 0; > > seq_printf(m, "SourceIP DestinationIP " >diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c >index 17b68b5..7b8e121 100644 >--- a/drivers/net/bonding/bond_main.c >+++ b/drivers/net/bonding/bond_main.c >@@ -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) { >@@ -497,7 +497,7 @@ static int bond_set_promiscuity(struct bonding *bond, int inc) > struct list_head *iter; > int err = 0; > >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { Would it be better to use "bond_uses_primary(struct bonding *)" instead of the above? That would simplify the above calling pattern, and shorten the calls elsewhere. Maybe I missed one, but it looks like all of the calls to _uses_primary have BOND_MODE(bond) as the argument. -J > /* write lock already acquired */ > if (bond->curr_active_slave) { > err = dev_set_promiscuity(bond->curr_active_slave->dev, >@@ -523,7 +523,7 @@ static int bond_set_allmulti(struct bonding *bond, int inc) > struct list_head *iter; > int err = 0; > >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { > /* write lock already acquired */ > if (bond->curr_active_slave) { > err = dev_set_allmulti(bond->curr_active_slave->dev, >@@ -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; > >@@ -801,7 +801,7 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active) > new_active->last_link_up = jiffies; > > if (new_active->link == BOND_LINK_BACK) { >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { > pr_info("%s: making interface %s the new active one %d ms earlier\n", > bond->dev->name, new_active->dev->name, > (bond->params.updelay - new_active->delay) * bond->params.miimon); >@@ -810,20 +810,20 @@ 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)) > bond_alb_handle_link_change(bond, new_active, BOND_LINK_UP); > } else { >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { > pr_info("%s: making interface %s the new active one\n", > bond->dev->name, new_active->dev->name); > } > } > } > >- if (bond_mode_uses_primary(bond->params.mode)) >+ if (bond_mode_uses_primary(BOND_MODE(bond))) > bond_hw_addr_swap(bond, new_active, old_active); > > 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); >@@ -876,8 +876,8 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active) > * resend only if bond is brought up with the affected > * bonding modes and the retransmission is enabled */ > if (netif_running(bond->dev) && (bond->params.resend_igmp > 0) && >- ((bond_mode_uses_primary(bond->params.mode) && new_active) || >- bond->params.mode == BOND_MODE_ROUNDROBIN)) { >+ ((bond_mode_uses_primary(BOND_MODE(bond)) && new_active) || >+ 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 >@@ -1384,7 +1384,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) > /* If the mode uses primary, then the following is handled by > * bond_change_active_slave(). > */ >- if (!bond_mode_uses_primary(bond->params.mode)) { >+ if (!bond_mode_uses_primary(BOND_MODE(bond))) { > /* set promiscuity level to new slave */ > if (bond_dev->flags & IFF_PROMISC) { > res = dev_set_promiscuity(slave_dev, 1); >@@ -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; > >@@ -1480,7 +1480,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) > new_slave->link == BOND_LINK_DOWN ? "DOWN" : > (new_slave->link == BOND_LINK_UP ? "UP" : "BACK")); > >- if (bond_mode_uses_primary(bond->params.mode) && bond->params.primary[0]) { >+ if (bond_mode_uses_primary(BOND_MODE(bond)) && bond->params.primary[0]) { > /* if there is a primary slave, remember it */ > if (strcmp(bond->params.primary, new_slave->dev->name) == 0) { > bond->primary_slave = new_slave; >@@ -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); >@@ -1569,7 +1569,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) > bond_compute_features(bond); > bond_set_carrier(bond); > >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { > block_netpoll_tx(); > write_lock_bh(&bond->curr_slave_lock); > bond_select_active_slave(bond); >@@ -1593,7 +1593,7 @@ err_unregister: > netdev_rx_handler_unregister(slave_dev); > > err_detach: >- if (!bond_mode_uses_primary(bond->params.mode)) >+ if (!bond_mode_uses_primary(BOND_MODE(bond))) > bond_hw_addr_flush(bond_dev, slave_dev); > > vlan_vids_del_by_dev(slave_dev, bond_dev); >@@ -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", >@@ -1781,7 +1781,7 @@ static int __bond_release_one(struct net_device *bond_dev, > /* If the mode uses primary, then this cases was handled above by > * bond_change_active_slave(..., NULL) > */ >- if (!bond_mode_uses_primary(bond->params.mode)) { >+ if (!bond_mode_uses_primary(BOND_MODE(bond))) { > /* unset promiscuity level from slave > * NOTE: The NETDEV_CHANGEADDR call above may change the value > * of the IFF_PROMISC flag in the bond_dev, but we need the >@@ -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) >@@ -2915,7 +2915,7 @@ static int bond_slave_netdev_event(unsigned long event, > break; > case NETDEV_CHANGENAME: > /* we don't care if we don't have primary set */ >- if (!bond_mode_uses_primary(bond->params.mode) || >+ if (!bond_mode_uses_primary(BOND_MODE(bond)) || > !bond->params.primary[0]) > break; > >@@ -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); >@@ -3105,7 +3105,7 @@ static int bond_open(struct net_device *bond_dev) > if (bond_has_slaves(bond)) { > read_lock(&bond->curr_slave_lock); > bond_for_each_slave(bond, slave, iter) { >- if (bond_mode_uses_primary(bond->params.mode) >+ if (bond_mode_uses_primary(BOND_MODE(bond)) > && (slave != bond->curr_active_slave)) { > bond_set_slave_inactive_flags(slave, > BOND_SLAVE_NOTIFY_NOW); >@@ -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; >@@ -3343,7 +3343,7 @@ static void bond_set_rx_mode(struct net_device *bond_dev) > > > rcu_read_lock(); >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { > slave = rcu_dereference(bond->curr_active_slave); > if (slave) { > dev_uc_sync(slave->dev, bond_dev); >@@ -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; >diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c >index 0d06e75..5ab3c18 100644 >--- a/drivers/net/bonding/bond_netlink.c >+++ b/drivers/net/bonding/bond_netlink.c >@@ -56,7 +56,7 @@ static int bond_fill_slave_info(struct sk_buff *skb, > if (nla_put_u16(skb, IFLA_BOND_SLAVE_QUEUE_ID, slave->queue_id)) > goto nla_put_failure; > >- if (slave->bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(slave->bond) == BOND_MODE_8023AD) { > const struct aggregator *agg; > > agg = SLAVE_AD_INFO(slave)->port.aggregator; >@@ -407,7 +407,7 @@ static int bond_fill_info(struct sk_buff *skb, > unsigned int packets_per_slave; > int i, targets_added; > >- if (nla_put_u8(skb, IFLA_BOND_MODE, bond->params.mode)) >+ if (nla_put_u8(skb, IFLA_BOND_MODE, BOND_MODE(bond))) > goto nla_put_failure; > > if (slave_dev && >@@ -505,7 +505,7 @@ static int bond_fill_info(struct sk_buff *skb, > bond->params.ad_select)) > goto nla_put_failure; > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info info; > > if (!bond_3ad_get_active_agg_info(bond, &info)) { >diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c >index afae661..ed11c6f 100644 >--- a/drivers/net/bonding/bond_options.c >+++ b/drivers/net/bonding/bond_options.c >@@ -693,7 +693,7 @@ int bond_option_mode_set(struct bonding *bond, const struct bond_opt_value *newv > static struct net_device *__bond_option_active_slave_get(struct bonding *bond, > struct slave *slave) > { >- return bond_mode_uses_primary(bond->params.mode) && slave ? slave->dev : NULL; >+ return bond_mode_uses_primary(BOND_MODE(bond)) && slave ? slave->dev : NULL; > } > > struct net_device *bond_option_active_slave_get_rcu(struct bonding *bond) >diff --git a/drivers/net/bonding/bond_procfs.c b/drivers/net/bonding/bond_procfs.c >index 7cf55a5..dc1291f 100644 >--- a/drivers/net/bonding/bond_procfs.c >+++ b/drivers/net/bonding/bond_procfs.c >@@ -72,9 +72,9 @@ static void bond_info_show_master(struct seq_file *seq) > curr = rcu_dereference(bond->curr_active_slave); > > seq_printf(seq, "Bonding Mode: %s", >- bond_mode_name(bond->params.mode)); >+ bond_mode_name(BOND_MODE(bond))); > >- if (bond->params.mode == BOND_MODE_ACTIVEBACKUP && >+ if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP && > bond->params.fail_over_mac) { > optval = bond_opt_get_val(BOND_OPT_FAIL_OVER_MAC, > bond->params.fail_over_mac); >@@ -83,15 +83,15 @@ static void bond_info_show_master(struct seq_file *seq) > > seq_printf(seq, "\n"); > >- if (bond->params.mode == BOND_MODE_XOR || >- bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_XOR || >+ BOND_MODE(bond) == BOND_MODE_8023AD) { > optval = bond_opt_get_val(BOND_OPT_XMIT_HASH, > bond->params.xmit_policy); > seq_printf(seq, "Transmit Hash Policy: %s (%d)\n", > optval->string, bond->params.xmit_policy); > } > >- if (bond_mode_uses_primary(bond->params.mode)) { >+ if (bond_mode_uses_primary(BOND_MODE(bond))) { > seq_printf(seq, "Primary Slave: %s", > (bond->primary_slave) ? > bond->primary_slave->dev->name : "None"); >@@ -134,7 +134,7 @@ static void bond_info_show_master(struct seq_file *seq) > seq_printf(seq, "\n"); > } > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info ad_info; > > seq_puts(seq, "\n802.3ad info\n"); >@@ -188,7 +188,7 @@ static void bond_info_show_slave(struct seq_file *seq, > > seq_printf(seq, "Permanent HW addr: %pM\n", slave->perm_hwaddr); > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > const struct aggregator *agg > = SLAVE_AD_INFO(slave)->port.aggregator; > >diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c >index 39c4d8d..daed52f 100644 >--- a/drivers/net/bonding/bond_sysfs.c >+++ b/drivers/net/bonding/bond_sysfs.c >@@ -214,9 +214,9 @@ static ssize_t bonding_show_mode(struct device *d, > struct bonding *bond = to_bond(d); > const struct bond_opt_value *val; > >- val = bond_opt_get_val(BOND_OPT_MODE, bond->params.mode); >+ val = bond_opt_get_val(BOND_OPT_MODE, BOND_MODE(bond)); > >- return sprintf(buf, "%s %d\n", val->string, bond->params.mode); >+ return sprintf(buf, "%s %d\n", val->string, BOND_MODE(bond)); > } > static DEVICE_ATTR(mode, S_IRUGO | S_IWUSR, > bonding_show_mode, bonding_sysfs_store_option); >@@ -505,7 +505,7 @@ static ssize_t bonding_show_ad_aggregator(struct device *d, > int count = 0; > struct bonding *bond = to_bond(d); > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info ad_info; > count = sprintf(buf, "%d\n", > bond_3ad_get_active_agg_info(bond, &ad_info) >@@ -525,7 +525,7 @@ static ssize_t bonding_show_ad_num_ports(struct device *d, > int count = 0; > struct bonding *bond = to_bond(d); > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info ad_info; > count = sprintf(buf, "%d\n", > bond_3ad_get_active_agg_info(bond, &ad_info) >@@ -545,7 +545,7 @@ static ssize_t bonding_show_ad_actor_key(struct device *d, > int count = 0; > struct bonding *bond = to_bond(d); > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info ad_info; > count = sprintf(buf, "%d\n", > bond_3ad_get_active_agg_info(bond, &ad_info) >@@ -565,7 +565,7 @@ static ssize_t bonding_show_ad_partner_key(struct device *d, > int count = 0; > struct bonding *bond = to_bond(d); > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info ad_info; > count = sprintf(buf, "%d\n", > bond_3ad_get_active_agg_info(bond, &ad_info) >@@ -585,7 +585,7 @@ static ssize_t bonding_show_ad_partner_mac(struct device *d, > int count = 0; > struct bonding *bond = to_bond(d); > >- if (bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(bond) == BOND_MODE_8023AD) { > struct ad_info ad_info; > if (!bond_3ad_get_active_agg_info(bond, &ad_info)) > count = sprintf(buf, "%pM\n", ad_info.partner_system); >diff --git a/drivers/net/bonding/bond_sysfs_slave.c b/drivers/net/bonding/bond_sysfs_slave.c >index 89bc3b3..198677f 100644 >--- a/drivers/net/bonding/bond_sysfs_slave.c >+++ b/drivers/net/bonding/bond_sysfs_slave.c >@@ -69,7 +69,7 @@ static ssize_t ad_aggregator_id_show(struct slave *slave, char *buf) > { > const struct aggregator *agg; > >- if (slave->bond->params.mode == BOND_MODE_8023AD) { >+ if (BOND_MODE(slave->bond) == BOND_MODE_8023AD) { > agg = SLAVE_AD_INFO(slave)->port.aggregator; > if (agg) > return sprintf(buf, "%d\n", >diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h >index 34a8ed5..4494fb9 100644 >--- a/drivers/net/bonding/bonding.h >+++ b/drivers/net/bonding/bonding.h >@@ -70,6 +70,8 @@ > set_fs(fs); \ > res; }) > >+#define BOND_MODE(bond) ((bond)->params.mode) >+ > /* slave list primitives */ > #define bond_slave_list(bond) (&(bond)->dev->adj_list.lower) > >@@ -277,8 +279,8 @@ static inline bool bond_should_override_tx_queue(struct bonding *bond) > > static inline bool bond_is_lb(const struct bonding *bond) > { >- return bond->params.mode == BOND_MODE_TLB || >- bond->params.mode == BOND_MODE_ALB; >+ return BOND_MODE(bond) == BOND_MODE_TLB || >+ BOND_MODE(bond) == BOND_MODE_ALB; > } > > static inline bool bond_mode_uses_arp(int mode) >-- >1.8.4 --- -Jay Vosburgh, jay.vosburgh@canonical.com -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, May 15, 2014 at 10:51:51AM -0700, Jay Vosburgh wrote: >Veaceslav Falico <vfalico@gmail.com> wrote: > >>CC: Jay Vosburgh <j.vosburgh@gmail.com> >>CC: Andy Gospodarek <andy@greyhouse.net> >>Signed-off-by: Veaceslav Falico <vfalico@gmail.com> >>--- ...snip... > Would it be better to use "bond_uses_primary(struct bonding *)" >instead of the above? That would simplify the above calling pattern, >and shorten the calls elsewhere. Maybe I missed one, but it looks like >all of the calls to _uses_primary have BOND_MODE(bond) as the argument. There's at least one call, when checking the params, where it checks the int: bond_main.c: 4271 if (primary && !bond_mode_uses_primary(bond_mode)) { so, either we'll use something else here, or leave it with BOND_MODE()... -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Veaceslav Falico <vfalico@gmail.com> wrote: >On Thu, May 15, 2014 at 10:51:51AM -0700, Jay Vosburgh wrote: >>Veaceslav Falico <vfalico@gmail.com> wrote: >> >>>CC: Jay Vosburgh <j.vosburgh@gmail.com> >>>CC: Andy Gospodarek <andy@greyhouse.net> >>>Signed-off-by: Veaceslav Falico <vfalico@gmail.com> >>>--- >...snip... >> Would it be better to use "bond_uses_primary(struct bonding *)" >>instead of the above? That would simplify the above calling pattern, >>and shorten the calls elsewhere. Maybe I missed one, but it looks like >>all of the calls to _uses_primary have BOND_MODE(bond) as the argument. > >There's at least one call, when checking the params, where it checks the >int: > >bond_main.c: >4271 if (primary && !bond_mode_uses_primary(bond_mode)) { > >so, either we'll use something else here, or leave it with BOND_MODE()... The something else isn't so bad, and would look better for most callers: static inline bool bond_uses_primary(struct bonding *bond) { return bond_mode_uses_primary(bond->params.mode); } This ends up replacing "USES_PRIMARY(bond->params.mode)" with "bond_uses_primary(bond)" for most call sites, which actually looks like an improvement (it's even shorter). -J --- -Jay Vosburgh, jay.vosburgh@canonical.com -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, May 15, 2014 at 11:32:41AM -0700, Jay Vosburgh wrote: >Veaceslav Falico <vfalico@gmail.com> wrote: > >>On Thu, May 15, 2014 at 10:51:51AM -0700, Jay Vosburgh wrote: >>>Veaceslav Falico <vfalico@gmail.com> wrote: >>> >>>>CC: Jay Vosburgh <j.vosburgh@gmail.com> >>>>CC: Andy Gospodarek <andy@greyhouse.net> >>>>Signed-off-by: Veaceslav Falico <vfalico@gmail.com> >>>>--- >>...snip... >>> Would it be better to use "bond_uses_primary(struct bonding *)" >>>instead of the above? That would simplify the above calling pattern, >>>and shorten the calls elsewhere. Maybe I missed one, but it looks like >>>all of the calls to _uses_primary have BOND_MODE(bond) as the argument. >> >>There's at least one call, when checking the params, where it checks the >>int: >> >>bond_main.c: >>4271 if (primary && !bond_mode_uses_primary(bond_mode)) { >> >>so, either we'll use something else here, or leave it with BOND_MODE()... > > The something else isn't so bad, and would look better for most >callers: > >static inline bool bond_uses_primary(struct bonding *bond) >{ > return bond_mode_uses_primary(bond->params.mode); >} > > This ends up replacing "USES_PRIMARY(bond->params.mode)" with >"bond_uses_primary(bond)" for most call sites, which actually looks like >an improvement (it's even shorter). Yeah, good idea, will do and resubmit. Thank you! > > -J > >--- > -Jay Vosburgh, jay.vosburgh@canonical.com -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 70de039..efacb0e 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -1057,7 +1057,7 @@ static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[]) struct net_device *dev = slave->dev; struct sockaddr s_addr; - if (slave->bond->params.mode == BOND_MODE_TLB) { + if (BOND_MODE(slave->bond) == BOND_MODE_TLB) { memcpy(dev->dev_addr, addr, dev->addr_len); return 0; } @@ -1745,7 +1745,7 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave /* in TLB mode, the slave might flip down/up with the old dev_addr, * and thus filter bond->dev_addr's packets, so force bond's mac */ - if (bond->params.mode == BOND_MODE_TLB) { + if (BOND_MODE(bond) == BOND_MODE_TLB) { struct sockaddr sa; u8 tmp_addr[ETH_ALEN]; diff --git a/drivers/net/bonding/bond_debugfs.c b/drivers/net/bonding/bond_debugfs.c index 2d3f7fa..658e761 100644 --- a/drivers/net/bonding/bond_debugfs.c +++ b/drivers/net/bonding/bond_debugfs.c @@ -23,7 +23,7 @@ static int bond_debug_rlb_hash_show(struct seq_file *m, void *v) struct rlb_client_info *client_info; u32 hash_index; - if (bond->params.mode != BOND_MODE_ALB) + if (BOND_MODE(bond) != BOND_MODE_ALB) return 0; seq_printf(m, "SourceIP DestinationIP " diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 17b68b5..7b8e121 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -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) { @@ -497,7 +497,7 @@ static int bond_set_promiscuity(struct bonding *bond, int inc) struct list_head *iter; int err = 0; - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { /* write lock already acquired */ if (bond->curr_active_slave) { err = dev_set_promiscuity(bond->curr_active_slave->dev, @@ -523,7 +523,7 @@ static int bond_set_allmulti(struct bonding *bond, int inc) struct list_head *iter; int err = 0; - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { /* write lock already acquired */ if (bond->curr_active_slave) { err = dev_set_allmulti(bond->curr_active_slave->dev, @@ -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; @@ -801,7 +801,7 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active) new_active->last_link_up = jiffies; if (new_active->link == BOND_LINK_BACK) { - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { pr_info("%s: making interface %s the new active one %d ms earlier\n", bond->dev->name, new_active->dev->name, (bond->params.updelay - new_active->delay) * bond->params.miimon); @@ -810,20 +810,20 @@ 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)) bond_alb_handle_link_change(bond, new_active, BOND_LINK_UP); } else { - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { pr_info("%s: making interface %s the new active one\n", bond->dev->name, new_active->dev->name); } } } - if (bond_mode_uses_primary(bond->params.mode)) + if (bond_mode_uses_primary(BOND_MODE(bond))) bond_hw_addr_swap(bond, new_active, old_active); 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); @@ -876,8 +876,8 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active) * resend only if bond is brought up with the affected * bonding modes and the retransmission is enabled */ if (netif_running(bond->dev) && (bond->params.resend_igmp > 0) && - ((bond_mode_uses_primary(bond->params.mode) && new_active) || - bond->params.mode == BOND_MODE_ROUNDROBIN)) { + ((bond_mode_uses_primary(BOND_MODE(bond)) && new_active) || + 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 @@ -1384,7 +1384,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) /* If the mode uses primary, then the following is handled by * bond_change_active_slave(). */ - if (!bond_mode_uses_primary(bond->params.mode)) { + if (!bond_mode_uses_primary(BOND_MODE(bond))) { /* set promiscuity level to new slave */ if (bond_dev->flags & IFF_PROMISC) { res = dev_set_promiscuity(slave_dev, 1); @@ -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; @@ -1480,7 +1480,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) new_slave->link == BOND_LINK_DOWN ? "DOWN" : (new_slave->link == BOND_LINK_UP ? "UP" : "BACK")); - if (bond_mode_uses_primary(bond->params.mode) && bond->params.primary[0]) { + if (bond_mode_uses_primary(BOND_MODE(bond)) && bond->params.primary[0]) { /* if there is a primary slave, remember it */ if (strcmp(bond->params.primary, new_slave->dev->name) == 0) { bond->primary_slave = new_slave; @@ -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); @@ -1569,7 +1569,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) bond_compute_features(bond); bond_set_carrier(bond); - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { block_netpoll_tx(); write_lock_bh(&bond->curr_slave_lock); bond_select_active_slave(bond); @@ -1593,7 +1593,7 @@ err_unregister: netdev_rx_handler_unregister(slave_dev); err_detach: - if (!bond_mode_uses_primary(bond->params.mode)) + if (!bond_mode_uses_primary(BOND_MODE(bond))) bond_hw_addr_flush(bond_dev, slave_dev); vlan_vids_del_by_dev(slave_dev, bond_dev); @@ -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", @@ -1781,7 +1781,7 @@ static int __bond_release_one(struct net_device *bond_dev, /* If the mode uses primary, then this cases was handled above by * bond_change_active_slave(..., NULL) */ - if (!bond_mode_uses_primary(bond->params.mode)) { + if (!bond_mode_uses_primary(BOND_MODE(bond))) { /* unset promiscuity level from slave * NOTE: The NETDEV_CHANGEADDR call above may change the value * of the IFF_PROMISC flag in the bond_dev, but we need the @@ -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) @@ -2915,7 +2915,7 @@ static int bond_slave_netdev_event(unsigned long event, break; case NETDEV_CHANGENAME: /* we don't care if we don't have primary set */ - if (!bond_mode_uses_primary(bond->params.mode) || + if (!bond_mode_uses_primary(BOND_MODE(bond)) || !bond->params.primary[0]) break; @@ -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); @@ -3105,7 +3105,7 @@ static int bond_open(struct net_device *bond_dev) if (bond_has_slaves(bond)) { read_lock(&bond->curr_slave_lock); bond_for_each_slave(bond, slave, iter) { - if (bond_mode_uses_primary(bond->params.mode) + if (bond_mode_uses_primary(BOND_MODE(bond)) && (slave != bond->curr_active_slave)) { bond_set_slave_inactive_flags(slave, BOND_SLAVE_NOTIFY_NOW); @@ -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; @@ -3343,7 +3343,7 @@ static void bond_set_rx_mode(struct net_device *bond_dev) rcu_read_lock(); - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { slave = rcu_dereference(bond->curr_active_slave); if (slave) { dev_uc_sync(slave->dev, bond_dev); @@ -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; diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c index 0d06e75..5ab3c18 100644 --- a/drivers/net/bonding/bond_netlink.c +++ b/drivers/net/bonding/bond_netlink.c @@ -56,7 +56,7 @@ static int bond_fill_slave_info(struct sk_buff *skb, if (nla_put_u16(skb, IFLA_BOND_SLAVE_QUEUE_ID, slave->queue_id)) goto nla_put_failure; - if (slave->bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(slave->bond) == BOND_MODE_8023AD) { const struct aggregator *agg; agg = SLAVE_AD_INFO(slave)->port.aggregator; @@ -407,7 +407,7 @@ static int bond_fill_info(struct sk_buff *skb, unsigned int packets_per_slave; int i, targets_added; - if (nla_put_u8(skb, IFLA_BOND_MODE, bond->params.mode)) + if (nla_put_u8(skb, IFLA_BOND_MODE, BOND_MODE(bond))) goto nla_put_failure; if (slave_dev && @@ -505,7 +505,7 @@ static int bond_fill_info(struct sk_buff *skb, bond->params.ad_select)) goto nla_put_failure; - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info info; if (!bond_3ad_get_active_agg_info(bond, &info)) { diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c index afae661..ed11c6f 100644 --- a/drivers/net/bonding/bond_options.c +++ b/drivers/net/bonding/bond_options.c @@ -693,7 +693,7 @@ int bond_option_mode_set(struct bonding *bond, const struct bond_opt_value *newv static struct net_device *__bond_option_active_slave_get(struct bonding *bond, struct slave *slave) { - return bond_mode_uses_primary(bond->params.mode) && slave ? slave->dev : NULL; + return bond_mode_uses_primary(BOND_MODE(bond)) && slave ? slave->dev : NULL; } struct net_device *bond_option_active_slave_get_rcu(struct bonding *bond) diff --git a/drivers/net/bonding/bond_procfs.c b/drivers/net/bonding/bond_procfs.c index 7cf55a5..dc1291f 100644 --- a/drivers/net/bonding/bond_procfs.c +++ b/drivers/net/bonding/bond_procfs.c @@ -72,9 +72,9 @@ static void bond_info_show_master(struct seq_file *seq) curr = rcu_dereference(bond->curr_active_slave); seq_printf(seq, "Bonding Mode: %s", - bond_mode_name(bond->params.mode)); + bond_mode_name(BOND_MODE(bond))); - if (bond->params.mode == BOND_MODE_ACTIVEBACKUP && + if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP && bond->params.fail_over_mac) { optval = bond_opt_get_val(BOND_OPT_FAIL_OVER_MAC, bond->params.fail_over_mac); @@ -83,15 +83,15 @@ static void bond_info_show_master(struct seq_file *seq) seq_printf(seq, "\n"); - if (bond->params.mode == BOND_MODE_XOR || - bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_XOR || + BOND_MODE(bond) == BOND_MODE_8023AD) { optval = bond_opt_get_val(BOND_OPT_XMIT_HASH, bond->params.xmit_policy); seq_printf(seq, "Transmit Hash Policy: %s (%d)\n", optval->string, bond->params.xmit_policy); } - if (bond_mode_uses_primary(bond->params.mode)) { + if (bond_mode_uses_primary(BOND_MODE(bond))) { seq_printf(seq, "Primary Slave: %s", (bond->primary_slave) ? bond->primary_slave->dev->name : "None"); @@ -134,7 +134,7 @@ static void bond_info_show_master(struct seq_file *seq) seq_printf(seq, "\n"); } - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info ad_info; seq_puts(seq, "\n802.3ad info\n"); @@ -188,7 +188,7 @@ static void bond_info_show_slave(struct seq_file *seq, seq_printf(seq, "Permanent HW addr: %pM\n", slave->perm_hwaddr); - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { const struct aggregator *agg = SLAVE_AD_INFO(slave)->port.aggregator; diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c index 39c4d8d..daed52f 100644 --- a/drivers/net/bonding/bond_sysfs.c +++ b/drivers/net/bonding/bond_sysfs.c @@ -214,9 +214,9 @@ static ssize_t bonding_show_mode(struct device *d, struct bonding *bond = to_bond(d); const struct bond_opt_value *val; - val = bond_opt_get_val(BOND_OPT_MODE, bond->params.mode); + val = bond_opt_get_val(BOND_OPT_MODE, BOND_MODE(bond)); - return sprintf(buf, "%s %d\n", val->string, bond->params.mode); + return sprintf(buf, "%s %d\n", val->string, BOND_MODE(bond)); } static DEVICE_ATTR(mode, S_IRUGO | S_IWUSR, bonding_show_mode, bonding_sysfs_store_option); @@ -505,7 +505,7 @@ static ssize_t bonding_show_ad_aggregator(struct device *d, int count = 0; struct bonding *bond = to_bond(d); - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info ad_info; count = sprintf(buf, "%d\n", bond_3ad_get_active_agg_info(bond, &ad_info) @@ -525,7 +525,7 @@ static ssize_t bonding_show_ad_num_ports(struct device *d, int count = 0; struct bonding *bond = to_bond(d); - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info ad_info; count = sprintf(buf, "%d\n", bond_3ad_get_active_agg_info(bond, &ad_info) @@ -545,7 +545,7 @@ static ssize_t bonding_show_ad_actor_key(struct device *d, int count = 0; struct bonding *bond = to_bond(d); - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info ad_info; count = sprintf(buf, "%d\n", bond_3ad_get_active_agg_info(bond, &ad_info) @@ -565,7 +565,7 @@ static ssize_t bonding_show_ad_partner_key(struct device *d, int count = 0; struct bonding *bond = to_bond(d); - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info ad_info; count = sprintf(buf, "%d\n", bond_3ad_get_active_agg_info(bond, &ad_info) @@ -585,7 +585,7 @@ static ssize_t bonding_show_ad_partner_mac(struct device *d, int count = 0; struct bonding *bond = to_bond(d); - if (bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(bond) == BOND_MODE_8023AD) { struct ad_info ad_info; if (!bond_3ad_get_active_agg_info(bond, &ad_info)) count = sprintf(buf, "%pM\n", ad_info.partner_system); diff --git a/drivers/net/bonding/bond_sysfs_slave.c b/drivers/net/bonding/bond_sysfs_slave.c index 89bc3b3..198677f 100644 --- a/drivers/net/bonding/bond_sysfs_slave.c +++ b/drivers/net/bonding/bond_sysfs_slave.c @@ -69,7 +69,7 @@ static ssize_t ad_aggregator_id_show(struct slave *slave, char *buf) { const struct aggregator *agg; - if (slave->bond->params.mode == BOND_MODE_8023AD) { + if (BOND_MODE(slave->bond) == BOND_MODE_8023AD) { agg = SLAVE_AD_INFO(slave)->port.aggregator; if (agg) return sprintf(buf, "%d\n", diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index 34a8ed5..4494fb9 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h @@ -70,6 +70,8 @@ set_fs(fs); \ res; }) +#define BOND_MODE(bond) ((bond)->params.mode) + /* slave list primitives */ #define bond_slave_list(bond) (&(bond)->dev->adj_list.lower) @@ -277,8 +279,8 @@ static inline bool bond_should_override_tx_queue(struct bonding *bond) static inline bool bond_is_lb(const struct bonding *bond) { - return bond->params.mode == BOND_MODE_TLB || - bond->params.mode == BOND_MODE_ALB; + return BOND_MODE(bond) == BOND_MODE_TLB || + BOND_MODE(bond) == BOND_MODE_ALB; } static inline bool bond_mode_uses_arp(int mode)
CC: Jay Vosburgh <j.vosburgh@gmail.com> CC: Andy Gospodarek <andy@greyhouse.net> Signed-off-by: Veaceslav Falico <vfalico@gmail.com> --- drivers/net/bonding/bond_alb.c | 4 +- drivers/net/bonding/bond_debugfs.c | 2 +- drivers/net/bonding/bond_main.c | 94 +++++++++++++++++----------------- drivers/net/bonding/bond_netlink.c | 6 +-- drivers/net/bonding/bond_options.c | 2 +- drivers/net/bonding/bond_procfs.c | 14 ++--- drivers/net/bonding/bond_sysfs.c | 14 ++--- drivers/net/bonding/bond_sysfs_slave.c | 2 +- drivers/net/bonding/bonding.h | 6 ++- 9 files changed, 73 insertions(+), 71 deletions(-)