forked from luck/tmp_suning_uos_patched
bonding: don't queue up extraneous rlb updates
arps for incomplete entries can't be sent anyway. Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
967c299384
commit
2578041011
|
@ -421,7 +421,8 @@ static void rlb_clear_slave(struct bonding *bond, struct slave *slave)
|
|||
if (assigned_slave) {
|
||||
rx_hash_table[index].slave = assigned_slave;
|
||||
if (!ether_addr_equal_64bits(rx_hash_table[index].mac_dst,
|
||||
mac_bcast)) {
|
||||
mac_bcast) &&
|
||||
!is_zero_ether_addr(rx_hash_table[index].mac_dst)) {
|
||||
bond_info->rx_hashtbl[index].ntt = 1;
|
||||
bond_info->rx_ntt = 1;
|
||||
/* A slave has been removed from the
|
||||
|
@ -524,7 +525,8 @@ static void rlb_req_update_slave_clients(struct bonding *bond, struct slave *sla
|
|||
client_info = &(bond_info->rx_hashtbl[hash_index]);
|
||||
|
||||
if ((client_info->slave == slave) &&
|
||||
!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) {
|
||||
!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast) &&
|
||||
!is_zero_ether_addr(client_info->mac_dst)) {
|
||||
client_info->ntt = 1;
|
||||
ntt = 1;
|
||||
}
|
||||
|
@ -565,7 +567,8 @@ static void rlb_req_update_subnet_clients(struct bonding *bond, __be32 src_ip)
|
|||
if ((client_info->ip_src == src_ip) &&
|
||||
!ether_addr_equal_64bits(client_info->slave->dev->dev_addr,
|
||||
bond->dev->dev_addr) &&
|
||||
!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) {
|
||||
!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast) &&
|
||||
!is_zero_ether_addr(client_info->mac_dst)) {
|
||||
client_info->ntt = 1;
|
||||
bond_info->rx_ntt = 1;
|
||||
}
|
||||
|
@ -641,7 +644,8 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon
|
|||
ether_addr_copy(client_info->mac_src, arp->mac_src);
|
||||
client_info->slave = assigned_slave;
|
||||
|
||||
if (!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) {
|
||||
if (!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast) &&
|
||||
!is_zero_ether_addr(client_info->mac_dst)) {
|
||||
client_info->ntt = 1;
|
||||
bond->alb_info.rx_ntt = 1;
|
||||
} else {
|
||||
|
@ -733,8 +737,10 @@ static void rlb_rebalance(struct bonding *bond)
|
|||
assigned_slave = __rlb_next_rx_slave(bond);
|
||||
if (assigned_slave && (client_info->slave != assigned_slave)) {
|
||||
client_info->slave = assigned_slave;
|
||||
client_info->ntt = 1;
|
||||
ntt = 1;
|
||||
if (!is_zero_ether_addr(client_info->mac_dst)) {
|
||||
client_info->ntt = 1;
|
||||
ntt = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user