diff options
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r-- | drivers/net/bonding/bond_main.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index d0aade04e49a..29b846cbfb48 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -1362,6 +1362,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev, | |||
1362 | slave->dev->features, | 1362 | slave->dev->features, |
1363 | mask); | 1363 | mask); |
1364 | } | 1364 | } |
1365 | features = netdev_add_tso_features(features, mask); | ||
1365 | 1366 | ||
1366 | out: | 1367 | out: |
1367 | read_unlock(&bond->lock); | 1368 | read_unlock(&bond->lock); |
@@ -2555,8 +2556,8 @@ static void bond_arp_send(struct net_device *slave_dev, int arp_op, __be32 dest_ | |||
2555 | { | 2556 | { |
2556 | struct sk_buff *skb; | 2557 | struct sk_buff *skb; |
2557 | 2558 | ||
2558 | pr_debug("arp %d on slave %s: dst %x src %x vid %d\n", arp_op, | 2559 | pr_debug("arp %d on slave %s: dst %pI4 src %pI4 vid %d\n", arp_op, |
2559 | slave_dev->name, dest_ip, src_ip, vlan_id); | 2560 | slave_dev->name, &dest_ip, &src_ip, vlan_id); |
2560 | 2561 | ||
2561 | skb = arp_create(arp_op, ETH_P_ARP, dest_ip, slave_dev, src_ip, | 2562 | skb = arp_create(arp_op, ETH_P_ARP, dest_ip, slave_dev, src_ip, |
2562 | NULL, slave_dev->dev_addr, NULL); | 2563 | NULL, slave_dev->dev_addr, NULL); |
@@ -2588,7 +2589,7 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave) | |||
2588 | __be32 addr; | 2589 | __be32 addr; |
2589 | if (!targets[i]) | 2590 | if (!targets[i]) |
2590 | break; | 2591 | break; |
2591 | pr_debug("basa: target %x\n", targets[i]); | 2592 | pr_debug("basa: target %pI4\n", &targets[i]); |
2592 | if (!bond_vlan_used(bond)) { | 2593 | if (!bond_vlan_used(bond)) { |
2593 | pr_debug("basa: empty vlan: arp_send\n"); | 2594 | pr_debug("basa: empty vlan: arp_send\n"); |
2594 | addr = bond_confirm_addr(bond->dev, targets[i], 0); | 2595 | addr = bond_confirm_addr(bond->dev, targets[i], 0); |
@@ -4470,7 +4471,7 @@ int bond_parse_parm(const char *buf, const struct bond_parm_tbl *tbl) | |||
4470 | 4471 | ||
4471 | static int bond_check_params(struct bond_params *params) | 4472 | static int bond_check_params(struct bond_params *params) |
4472 | { | 4473 | { |
4473 | int arp_validate_value, fail_over_mac_value, primary_reselect_value; | 4474 | int arp_validate_value, fail_over_mac_value, primary_reselect_value, i; |
4474 | 4475 | ||
4475 | /* | 4476 | /* |
4476 | * Convert string parameters. | 4477 | * Convert string parameters. |
@@ -4650,19 +4651,18 @@ static int bond_check_params(struct bond_params *params) | |||
4650 | arp_interval = BOND_LINK_ARP_INTERV; | 4651 | arp_interval = BOND_LINK_ARP_INTERV; |
4651 | } | 4652 | } |
4652 | 4653 | ||
4653 | for (arp_ip_count = 0; | 4654 | for (arp_ip_count = 0, i = 0; |
4654 | (arp_ip_count < BOND_MAX_ARP_TARGETS) && arp_ip_target[arp_ip_count]; | 4655 | (arp_ip_count < BOND_MAX_ARP_TARGETS) && arp_ip_target[i]; i++) { |
4655 | arp_ip_count++) { | ||
4656 | /* not complete check, but should be good enough to | 4656 | /* not complete check, but should be good enough to |
4657 | catch mistakes */ | 4657 | catch mistakes */ |
4658 | __be32 ip = in_aton(arp_ip_target[arp_ip_count]); | 4658 | __be32 ip = in_aton(arp_ip_target[i]); |
4659 | if (!isdigit(arp_ip_target[arp_ip_count][0]) || | 4659 | if (!isdigit(arp_ip_target[i][0]) || ip == 0 || |
4660 | ip == 0 || ip == htonl(INADDR_BROADCAST)) { | 4660 | ip == htonl(INADDR_BROADCAST)) { |
4661 | pr_warning("Warning: bad arp_ip_target module parameter (%s), ARP monitoring will not be performed\n", | 4661 | pr_warning("Warning: bad arp_ip_target module parameter (%s), ARP monitoring will not be performed\n", |
4662 | arp_ip_target[arp_ip_count]); | 4662 | arp_ip_target[i]); |
4663 | arp_interval = 0; | 4663 | arp_interval = 0; |
4664 | } else { | 4664 | } else { |
4665 | arp_target[arp_ip_count] = ip; | 4665 | arp_target[arp_ip_count++] = ip; |
4666 | } | 4666 | } |
4667 | } | 4667 | } |
4668 | 4668 | ||
@@ -4696,8 +4696,6 @@ static int bond_check_params(struct bond_params *params) | |||
4696 | if (miimon) { | 4696 | if (miimon) { |
4697 | pr_info("MII link monitoring set to %d ms\n", miimon); | 4697 | pr_info("MII link monitoring set to %d ms\n", miimon); |
4698 | } else if (arp_interval) { | 4698 | } else if (arp_interval) { |
4699 | int i; | ||
4700 | |||
4701 | pr_info("ARP monitoring set to %d ms, validate %s, with %d target(s):", | 4699 | pr_info("ARP monitoring set to %d ms, validate %s, with %d target(s):", |
4702 | arp_interval, | 4700 | arp_interval, |
4703 | arp_validate_tbl[arp_validate_value].modename, | 4701 | arp_validate_tbl[arp_validate_value].modename, |