Skip to contentSkip to conversation

asix: Do full reset during ax88772_bind

PATCH In review Charles Keepax 3 participants 4 messages Nov 6, 2014 – Nov 7, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 asix: Do full reset during ax88772_bind

commit 3cc81d85ee01 ("asix: Don't reset PHY on if_up for ASIX 88772") causes the ethernet on Arndale to no longer function. This appears to be because the Arndale ethernet requires a full reset before it will function correctly, however simply reverting the above patch causes problems with ethtool settings getting reset.

It seems the problem is that the ethernet is not properly reset during bind, and indeed the code in ax88772_bind that resets the device is a very small subset of the actual ax88772_reset function. This patch uses ax88772_reset in place of the existing reset code in ax88772_bind which removes some code duplication and fixes the ethernet on Arndale.

It is still possible that the original patch causes some issues with suspend and resume but that seems like a separate issue and I haven't had a chance to test that yet.

---

Hi,

I wasn't 100% sure which branch to base this off so I based it on Dave Miller's net-next branch, which seemed logical.

Thanks,
Charles

 drivers/net/usb/asix_devices.c |   14 +-------------
 1 files changed, 1 insertions(+), 13 deletions(-)
drivers/net/usb/asix_devices.c +1 -13
index 2c05f6c..816d511 100644
@@ -465,19 +465,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
 		return ret;
 	}
 
-	ret = asix_sw_reset(dev, AX_SWRESET_IPPD | AX_SWRESET_PRL);
-	if (ret < 0)
-		return ret;
-
-	msleep(150);
-
-	ret = asix_sw_reset(dev, AX_SWRESET_CLEAR);
-	if (ret < 0)
-		return ret;
-
-	msleep(150);
-
-	ret = asix_sw_reset(dev, embd_phy ? AX_SWRESET_IPRL : AX_SWRESET_PRTE);
+	ax88772_reset(dev);
 
 	/* Read PHYID register *AFTER* the PHY was reset properly */
 	phyid = asix_get_phyid(dev);
Signature · 1 line
1.7.2.5
Tested-by Tested-by Riku Voipio on v1 1/1
#1 lore raw

Please add;

Kind regards,

Michel Stam

-----Original Message-----
From: Charles Keepax [mailto:[email protected]]
Sent: Thursday, November 06, 2014 16:50 PM
To: [email protected]
Cc: [email protected]; Stam, Michel [FINT]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: [PATCH] asix: Do full reset during ax88772_bind

commit 3cc81d85ee01 ("asix: Don't reset PHY on if_up for ASIX 88772") causes the ethernet on Arndale to no longer function. This appears to be because the Arndale ethernet requires a full reset before it will function correctly, however simply reverting the above patch causes problems with ethtool settings getting reset.

It seems the problem is that the ethernet is not properly reset during bind, and indeed the code in ax88772_bind that resets the device is a very small subset of the actual ax88772_reset function. This patch uses ax88772_reset in place of the existing reset code in ax88772_bind which removes some code duplication and fixes the ethernet on Arndale.

It is still possible that the original patch causes some issues with suspend and resume but that seems like a separate issue and I haven't had a chance to test that yet.

---

Hi,

I wasn't 100% sure which branch to base this off so I based it on Dave Miller's net-next branch, which seemed logical.

Thanks,
Charles

 drivers/net/usb/asix_devices.c |   14 +-------------
 1 files changed, 1 insertions(+), 13 deletions(-)
(quoted diff) +0 -0

b/drivers/net/usb/asix_devices.c index 2c05f6c..816d511 100644

drivers/net/usb/asix_devices.c +0 -0
@@ -465,19 +465,7 @@ static int ax88772_bind(struct usbnet *dev, struct

usb_interface *intf)
return ret;
}

- ret = asix_sw_reset(dev, AX_SWRESET_IPPD | AX_SWRESET_PRL);
- if (ret < 0)
- return ret;
-
- msleep(150);
-
- ret = asix_sw_reset(dev, AX_SWRESET_CLEAR);
- if (ret < 0)
- return ret;
-
- msleep(150);
-
- ret = asix_sw_reset(dev, embd_phy ? AX_SWRESET_IPRL :
AX_SWRESET_PRTE);
+ ax88772_reset(dev);

/* Read PHYID register *AFTER* the PHY was reset properly */ phyid = asix_get_phyid(dev);
--
1.7.2.5

maintainer
#2 lore raw

From: "Stam, Michel [FINT]" <[email protected]>
Date: Fri, 7 Nov 2014 09:27:26 +0100

Quoted 3 lines

Please add;

You're making two critical mistakes here in how you are replying to this patch.

First, do not top post. Quote the commit message, then add your Tested-by or other tag afterwards.

And most importantly, do not provide the entire patch again. That makes a brand new entry in patchwork, rather than adding your Tested-by to the original patch.

These mistakes make more work for everyone trying to get this change into the tree, including me. So please respond and discuss patches like everyone else does by not top-posting and not posting the entire patch in your response.

Thanks.

maintainer
#3 lore raw
In reply to Charles Keepax

From: Charles Keepax <[email protected]>
Date: Thu, 6 Nov 2014 15:49:41 +0000

Quoted 16 lines

commit 3cc81d85ee01 ("asix: Don't reset PHY on if_up for ASIX 88772") causes the ethernet on Arndale to no longer function. This appears to be because the Arndale ethernet requires a full reset before it will function correctly, however simply reverting the above patch causes problems with ethtool settings getting reset.

It seems the problem is that the ethernet is not properly reset during bind, and indeed the code in ax88772_bind that resets the device is a very small subset of the actual ax88772_reset function. This patch uses ax88772_reset in place of the existing reset code in ax88772_bind which removes some code duplication and fixes the ethernet on Arndale.

It is still possible that the original patch causes some issues with suspend and resume but that seems like a separate issue and I haven't had a chance to test that yet.

Quoted 8 lines

---

Hi,

I wasn't 100% sure which branch to base this off so I based it on Dave Miller's net-next branch, which seemed logical.

Since it fixes a regression that is upstream already, I'm applying this to the net tree.

Thanks.