|
@@ -89,8 +89,6 @@
|
|
|
|
|
|
static int max_bonds = BOND_DEFAULT_MAX_BONDS;
|
|
|
static int tx_queues = BOND_DEFAULT_TX_QUEUES;
|
|
|
-static int num_grat_arp = 1;
|
|
|
-static int num_unsol_na = 1;
|
|
|
static int miimon = BOND_LINK_MON_INTERV;
|
|
|
static int updelay;
|
|
|
static int downdelay;
|
|
@@ -113,10 +111,6 @@ module_param(max_bonds, int, 0);
|
|
|
MODULE_PARM_DESC(max_bonds, "Max number of bonded devices");
|
|
|
module_param(tx_queues, int, 0);
|
|
|
MODULE_PARM_DESC(tx_queues, "Max number of transmit queues (default = 16)");
|
|
|
-module_param(num_grat_arp, int, 0644);
|
|
|
-MODULE_PARM_DESC(num_grat_arp, "Number of gratuitous ARP packets to send on failover event");
|
|
|
-module_param(num_unsol_na, int, 0644);
|
|
|
-MODULE_PARM_DESC(num_unsol_na, "Number of unsolicited IPv6 Neighbor Advertisements packets to send on failover event");
|
|
|
module_param(miimon, int, 0);
|
|
|
MODULE_PARM_DESC(miimon, "Link check interval in milliseconds");
|
|
|
module_param(updelay, int, 0);
|
|
@@ -234,7 +228,6 @@ struct bond_parm_tbl ad_select_tbl[] = {
|
|
|
|
|
|
/*-------------------------- Forward declarations ---------------------------*/
|
|
|
|
|
|
-static void bond_send_gratuitous_arp(struct bonding *bond);
|
|
|
static int bond_init(struct net_device *bond_dev);
|
|
|
static void bond_uninit(struct net_device *bond_dev);
|
|
|
|
|
@@ -1162,14 +1155,6 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active)
|
|
|
bond_do_fail_over_mac(bond, new_active,
|
|
|
old_active);
|
|
|
|
|
|
- if (netif_running(bond->dev)) {
|
|
|
- bond->send_grat_arp = bond->params.num_grat_arp;
|
|
|
- bond_send_gratuitous_arp(bond);
|
|
|
-
|
|
|
- bond->send_unsol_na = bond->params.num_unsol_na;
|
|
|
- bond_send_unsolicited_na(bond);
|
|
|
- }
|
|
|
-
|
|
|
write_unlock_bh(&bond->curr_slave_lock);
|
|
|
read_unlock(&bond->lock);
|
|
|
|
|
@@ -2580,18 +2565,6 @@ void bond_mii_monitor(struct work_struct *work)
|
|
|
if (bond->slave_cnt == 0)
|
|
|
goto re_arm;
|
|
|
|
|
|
- if (bond->send_grat_arp) {
|
|
|
- read_lock(&bond->curr_slave_lock);
|
|
|
- bond_send_gratuitous_arp(bond);
|
|
|
- read_unlock(&bond->curr_slave_lock);
|
|
|
- }
|
|
|
-
|
|
|
- if (bond->send_unsol_na) {
|
|
|
- read_lock(&bond->curr_slave_lock);
|
|
|
- bond_send_unsolicited_na(bond);
|
|
|
- read_unlock(&bond->curr_slave_lock);
|
|
|
- }
|
|
|
-
|
|
|
if (bond_miimon_inspect(bond)) {
|
|
|
read_unlock(&bond->lock);
|
|
|
rtnl_lock();
|
|
@@ -2753,42 +2726,6 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Kick out a gratuitous ARP for an IP on the bonding master plus one
|
|
|
- * for each VLAN above us.
|
|
|
- *
|
|
|
- * Caller must hold curr_slave_lock for read or better
|
|
|
- */
|
|
|
-static void bond_send_gratuitous_arp(struct bonding *bond)
|
|
|
-{
|
|
|
- struct slave *slave = bond->curr_active_slave;
|
|
|
- struct vlan_entry *vlan;
|
|
|
-
|
|
|
- pr_debug("bond_send_grat_arp: bond %s slave %s\n",
|
|
|
- bond->dev->name, slave ? slave->dev->name : "NULL");
|
|
|
-
|
|
|
- if (!slave || !bond->send_grat_arp ||
|
|
|
- test_bit(__LINK_STATE_LINKWATCH_PENDING, &slave->dev->state))
|
|
|
- return;
|
|
|
-
|
|
|
- bond->send_grat_arp--;
|
|
|
-
|
|
|
- if (bond->master_ip) {
|
|
|
- bond_arp_send(slave->dev, ARPOP_REPLY, bond->master_ip,
|
|
|
- bond->master_ip, 0);
|
|
|
- }
|
|
|
-
|
|
|
- if (!bond->vlgrp)
|
|
|
- return;
|
|
|
-
|
|
|
- list_for_each_entry(vlan, &bond->vlan_list, vlan_list) {
|
|
|
- if (vlan->vlan_ip) {
|
|
|
- bond_arp_send(slave->dev, ARPOP_REPLY, vlan->vlan_ip,
|
|
|
- vlan->vlan_ip, vlan->vlan_id);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static void bond_validate_arp(struct bonding *bond, struct slave *slave, __be32 sip, __be32 tip)
|
|
|
{
|
|
|
int i;
|
|
@@ -3255,18 +3192,6 @@ void bond_activebackup_arp_mon(struct work_struct *work)
|
|
|
if (bond->slave_cnt == 0)
|
|
|
goto re_arm;
|
|
|
|
|
|
- if (bond->send_grat_arp) {
|
|
|
- read_lock(&bond->curr_slave_lock);
|
|
|
- bond_send_gratuitous_arp(bond);
|
|
|
- read_unlock(&bond->curr_slave_lock);
|
|
|
- }
|
|
|
-
|
|
|
- if (bond->send_unsol_na) {
|
|
|
- read_lock(&bond->curr_slave_lock);
|
|
|
- bond_send_unsolicited_na(bond);
|
|
|
- read_unlock(&bond->curr_slave_lock);
|
|
|
- }
|
|
|
-
|
|
|
if (bond_ab_arp_inspect(bond, delta_in_ticks)) {
|
|
|
read_unlock(&bond->lock);
|
|
|
rtnl_lock();
|
|
@@ -3645,9 +3570,6 @@ static int bond_close(struct net_device *bond_dev)
|
|
|
|
|
|
write_lock_bh(&bond->lock);
|
|
|
|
|
|
- bond->send_grat_arp = 0;
|
|
|
- bond->send_unsol_na = 0;
|
|
|
-
|
|
|
/* signal timers not to re-arm */
|
|
|
bond->kill_timers = 1;
|
|
|
|
|
@@ -4724,18 +4646,6 @@ static int bond_check_params(struct bond_params *params)
|
|
|
use_carrier = 1;
|
|
|
}
|
|
|
|
|
|
- if (num_grat_arp < 0 || num_grat_arp > 255) {
|
|
|
- pr_warning("Warning: num_grat_arp (%d) not in range 0-255 so it was reset to 1\n",
|
|
|
- num_grat_arp);
|
|
|
- num_grat_arp = 1;
|
|
|
- }
|
|
|
-
|
|
|
- if (num_unsol_na < 0 || num_unsol_na > 255) {
|
|
|
- pr_warning("Warning: num_unsol_na (%d) not in range 0-255 so it was reset to 1\n",
|
|
|
- num_unsol_na);
|
|
|
- num_unsol_na = 1;
|
|
|
- }
|
|
|
-
|
|
|
/* reset values for 802.3ad */
|
|
|
if (bond_mode == BOND_MODE_8023AD) {
|
|
|
if (!miimon) {
|
|
@@ -4925,8 +4835,6 @@ static int bond_check_params(struct bond_params *params)
|
|
|
params->mode = bond_mode;
|
|
|
params->xmit_policy = xmit_hashtype;
|
|
|
params->miimon = miimon;
|
|
|
- params->num_grat_arp = num_grat_arp;
|
|
|
- params->num_unsol_na = num_unsol_na;
|
|
|
params->arp_interval = arp_interval;
|
|
|
params->arp_validate = arp_validate_value;
|
|
|
params->updelay = updelay;
|
|
@@ -5121,7 +5029,6 @@ static int __init bonding_init(void)
|
|
|
|
|
|
register_netdevice_notifier(&bond_netdev_notifier);
|
|
|
register_inetaddr_notifier(&bond_inetaddr_notifier);
|
|
|
- bond_register_ipv6_notifier();
|
|
|
out:
|
|
|
return res;
|
|
|
err:
|
|
@@ -5136,7 +5043,6 @@ static void __exit bonding_exit(void)
|
|
|
{
|
|
|
unregister_netdevice_notifier(&bond_netdev_notifier);
|
|
|
unregister_inetaddr_notifier(&bond_inetaddr_notifier);
|
|
|
- bond_unregister_ipv6_notifier();
|
|
|
|
|
|
bond_destroy_sysfs();
|
|
|
bond_destroy_debugfs();
|