From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
Jiri Pirko <jpirko@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Jean Delvare <jdelvare@suse.de>
Subject: [15/17] bonding: select current active slave when enslaving device for mode tlb and alb
Date: Fri, 30 Jul 2010 09:57:31 -0700 [thread overview]
Message-ID: <20100730165955.129789296@clark.site> (raw)
In-Reply-To: <20100730170054.GA7736@kroah.com>
2.6.27-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jiri Pirko <jpirko@redhat.com>
commit 5a29f7893fbe681f1334285be7e41e56f0de666c upstream.
I've hit an issue on my system when I've been using RealTek RTL8139D cards in
bonding interface in mode balancing-alb. When I enslave a card, the current
active slave (bond->curr_active_slave) is not set and the link is therefore
not functional.
----
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: None
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1f:1f:01:2f:22
----
The thing that gets it right is when I unplug the cable and then I put it back
into the NIC. Then the current active slave is set to eth1 and link is working
just fine. Here is dmesg log with bonding DEBUG messages turned on:
----
ADDRCONF(NETDEV_UP): bond0: link is not ready
event_dev: bond0, event: 1
IFF_MASTER
event_dev: bond0, event: 8
IFF_MASTER
bond_ioctl: master=bond0, cmd=35216
slave_dev=cac5d800:
slave_dev->name=eth1:
eth1: ! NETIF_F_VLAN_CHALLENGED
event_dev: eth1, event: 8
eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
event_dev: eth1, event: 1
event_dev: eth1, event: 8
IFF_SLAVE
Initial state of slave_dev is BOND_LINK_UP
bonding: bond0: enslaving eth1 as an active interface with an up link.
ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
event_dev: bond0, event: 4
IFF_MASTER
bond0: no IPv6 routers present
<<<<cable unplug>>>>
eth1: link down
event_dev: eth1, event: 4
IFF_SLAVE
bonding: bond0: link status definitely down for interface eth1, disabling it
event_dev: bond0, event: 4
IFF_MASTER
<<<<cable plug>>>>
eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
event_dev: eth1, event: 4
IFF_SLAVE
bonding: bond0: link status definitely up for interface eth1.
bonding: bond0: making interface eth1 the new active one.
event_dev: eth1, event: 8
IFF_SLAVE
event_dev: eth1, event: 8
IFF_SLAVE
bonding: bond0: first active interface up!
event_dev: bond0, event: 4
IFF_MASTER
----
The current active slave is set by calling bond_select_active_slave() function
from bond_miimon_commit() function when the slave (eth1) link goes to state up.
I also tested this on other machine with Broadcom NetXtreme II BCM5708
1000Base-T NIC and there all works fine. The thing is that this adapter is down
and goes up after few seconds after it is enslaved.
This patch calls bond_select_active_slave() in bond_enslave() function for modes
alb and tlb and makes sure that the current active slave is set up properly even
when the slave state is already up. Tested on both systems, works fine.
Notice: The same problem can maybe also occrur in mode 8023AD but I'm unable to
test that.
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/bonding/bond_main.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1705,6 +1705,7 @@ int bond_enslave(struct net_device *bond
case BOND_MODE_ALB:
new_slave->state = BOND_STATE_ACTIVE;
bond_set_slave_inactive_flags(new_slave);
+ bond_select_active_slave(bond);
break;
default:
dprintk("This slave is always active in trunk mode\n");
next prev parent reply other threads:[~2010-07-30 17:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-30 17:00 [00/17] 2.6.27.49-rc1 stable review Greg KH
2010-07-30 16:57 ` [01/17] hwmon: (coretemp) Properly label the sensors Greg KH
2010-07-30 16:57 ` [02/17] hwmon: (coretemp) Skip duplicate CPU entries Greg KH
2010-07-30 16:57 ` [03/17] cifs: remove bogus first_time check in NTLMv2 session setup code Greg KH
2010-07-30 16:57 ` [04/17] cifs: Fix a kernel BUG with remote OS/2 server (try #3) Greg KH
2010-07-30 16:57 ` [05/17] cpmac: do not leak struct net_device on phy_connect errors Greg KH
2010-07-30 16:57 ` [06/17] sky2: enable rx/tx in sky2_phy_reinit() Greg KH
2010-07-30 16:57 ` [07/17] math-emu: correct test for downshifting fraction in _FP_FROM_INT() Greg KH
2010-07-30 16:57 ` [08/17] hostap: Protect against initialization interrupt Greg KH
2010-07-30 16:57 ` [09/17] netfilter: ip6t_REJECT: fix a dst leak in ipv6 REJECT Greg KH
2010-07-30 16:57 ` [10/17] SCSI: aacraid: Eliminate use after free Greg KH
2010-07-30 16:57 ` [11/17] amd64-agp: Probe unknown AGP devices the right way Greg KH
2010-07-30 16:57 ` [12/17] x86, Calgary: Increase max PHB number Greg KH
2010-07-30 16:57 ` [13/17] x86, Calgary: Limit the max PHB number to 256 Greg KH
2010-07-30 16:57 ` [14/17] IPoIB: Fix world-writable child interface control sysfs attributes Greg KH
2010-07-30 16:57 ` Greg KH [this message]
2010-07-30 16:57 ` [16/17] kbuild: Fix modpost segfault Greg KH
2010-07-30 16:57 ` [17/17] ecryptfs: Bugfix for error related to ecryptfs_hash_buckets Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100730165955.129789296@clark.site \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=davem@davemloft.net \
--cc=jdelvare@suse.de \
--cc=jpirko@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable-review@kernel.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox