Thread (11 messages) 11 messages, 4 authors, 2012-10-11

Re: [3.5 regression / mcs7830 / bisected] bridge constantly toggeling between disabled and forwarding

From: Michael Leun <hidden>
Date: 2012-10-11 09:27:36
Also in: lkml

On Thu, 11 Oct 2012 10:14:14 +0200
Ondrej Zary [off-list ref] wrote:
On Tuesday 09 October 2012, Michael Leun wrote:
quoted
On Tue, 9 Oct 2012 09:21:31 +0200

Ondrej Zary [off-list ref] wrote:
quoted
On Tuesday 09 October 2012, Michael Leun wrote:
quoted
On Thu, 27 Sep 2012 10:39:05 -0700

Greg KH [off-list ref] wrote:
quoted
On Tue, Jul 24, 2012 at 01:36:34AM +0200, Michael Leun wrote:
quoted
On Mon, 23 Jul 2012 09:15:04 +0200
Michael Leun [off-list ref] wrote:

[see issue description below]

Bisecting yielded

b1ff4f96fd1c63890d78d8939c6e0f2b44ce3113 is the first bad
commit commit b1ff4f96fd1c63890d78d8939c6e0f2b44ce3113
Author: Ondrej Zary [off-list ref]
Date:   Fri Jun 1 10:29:08 2012 +0000

    mcs7830: Implement link state detection

    Add .status callback that detects link state changes.
    Tested with MCS7832CV-AA chip (9710:7830, identified as
rev.C by the driver). Fixes
https://bugzilla.kernel.org/show_bug.cgi?id=28532

    Signed-off-by: Ondrej Zary [off-list ref]
    Signed-off-by: David S. Miller [off-list ref]

:040000 040000 5480780cb5e75c57122a621fc3bab0108c16be27

d97efd9cc0a465dff76bcd3a3c547f718f2a5345 M    drivers


Reverting that from 3.5 makes the issue go away.
Did this ever get resolved in 3.6-rc7 or any older kernel?  I
can't revert the patch from 3.5.y unless it's also fixed in
Linus's tree.
Please excuse me for answering a bit late.

No, that never got resolved, I still have the problem with 3.6
but I'm not shure about the correct solution.

Maybe link state detection just does not work with some of that
devices and we should have an possibility to enable/disable it
per device, maybe it can be handeled with an blacklist of not
working devices, maybe it could be fixed - I do not know and
also do not know how to find out.

But I'm willing to test.
Does the problem appear only in a bridge? Or the link state
detection
is completely wrong?
As testing with patch below shows, it also happens without bridge,
but I did not notice so far, because that log message I was
complainig about originally of course comes from the bridge code.
quoted
Can you please apply this debug patch and provide the output?
--- a/drivers/net/usb/mcs7830.c
+++ b/drivers/net/usb/mcs7830.c
@@ -638,6 +638,7 @@ static void mcs7830_status(struct usbnet *dev,
struct urb *urb) return;

 	link = !(buf[1] & 0x20);
+	printk("netif_carrier_ok=%d, link=%d, buf[0]=0x%02x,
buf[1]=0x%02x\n", netif_carrier_ok(dev->net), link, buf[0],
buf[1]); if (netif_carrier_ok(dev->net) != link) { if (link) {
 			netif_carrier_on(dev->net);
As far as I've seen:

Bring device up - link state toggles a few times and stabilizes to
up

Start ping - link state toggles for every packet

Test below done without bridge involved.

Note: I renamed the interface to ue7 (I happen to have several of
that devices).
Please try this patch, it should fix the problem.
(Remove the previous debug patch first.)


mcs7830: Fix link state detection
For me this works. I've tested with the original bridged setup and do
not longer see that bridge port state changes.

I would pretty much appreciate to see this in mainline and then 3.5 and
3.6 stable ASAP.

Thank you!

-- 
MfG,

Michael Leun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help