Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 2475

kernel-2.6.18-238.el5.src.rpm

From: Flavio Leitner <fbl@redhat.com>
Date: Tue, 10 Aug 2010 14:11:56 -0400
Subject: [net] bonding: check if clients MAC addr has changed
Message-id: <20100810141156.GB3064@redhat.com>
Patchwork-id: 27487
O-Subject: [RHEL5.6 PATCH] bonding: check if clients MAC addr has changed
Bugzilla: 610234
RH-Acked-by: Jiri Pirko <jpirko@redhat.com>
RH-Acked-by: David S. Miller <davem@redhat.com>
RH-Acked-by: Amerigo Wang <amwang@redhat.com>

RHBZ#: 610234
=======
https://bugzilla.redhat.com/show_bug.cgi?id=610234

Description:
=============
When two systems using bonding devices in adaptive load
balancing (ALB) communicates with each other, an endless
ping-pong of ARP replies starts between these two systems.

Upstream:
==========
The fix is accepted upstream: 42d782ac1bef7cbcdf05b857731345c6e8149f90

Test Build at:
===============
https://brewweb.devel.redhat.com/taskinfo?taskID=2667289

Testing Status:
===============
Tested by myself and by customer.

Proposed Patch:
================
It's a backport of upstream commit mentioned above.

Signed-off-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>

diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index a8f106d..ea2e771 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -332,7 +332,8 @@ static void rlb_update_entry_from_arp(struct bonding *bond, struct arp_pkt *arp)
 
 	if ((client_info->assigned) &&
 	    (client_info->ip_src == arp->ip_dst) &&
-	    (client_info->ip_dst == arp->ip_src)) {
+	    (client_info->ip_dst == arp->ip_src) &&
+	    (memcmp(client_info->mac_dst, arp->mac_src, ETH_ALEN))) {
 		/* update the clients MAC address */
 		memcpy(client_info->mac_dst, arp->mac_src, ETH_ALEN);
 		client_info->ntt = 1;