Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1206809 > unrolled thread
| Started by | Igor Plyatov <plyatov@gmail.com> |
|---|---|
| First post | 2015-08-13 15:20 +0200 |
| Last post | 2015-08-13 21:30 +0200 |
| Articles | 6 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging Igor Plyatov <plyatov@gmail.com> - 2015-08-13 15:20 +0200
Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging Joe Perches <joe@perches.com> - 2015-08-13 19:00 +0200
Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging Igor Plyatov <plyatov@gmail.com> - 2015-08-13 19:20 +0200
Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging Joe Perches <joe@perches.com> - 2015-08-13 19:20 +0200
Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging David Miller <davem@davemloft.net> - 2015-08-13 20:40 +0200
Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging Igor Plyatov <plyatov@gmail.com> - 2015-08-13 21:30 +0200
| From | Igor Plyatov <plyatov@gmail.com> |
|---|---|
| Date | 2015-08-13 15:20 +0200 |
| Subject | [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging |
| Message-ID | <pX0Aj-4mV-35@gated-at.bofh.it> |
* Due to HW bug, LAN8700 sometimes does not detect presence of energy in the
Ethernet cable in Energy Detect Power-Down mode (e.g while EDPWRDOWN bit is
set, the ENERGYON bit does not asserted sometimes). This is a common bug of
LAN87xx family of PHY chips.
* The lan87xx_read_status() was improved to acquire ENERGYON bit. Its previous
algorythm still not reliable on 100 % and sometimes skip cable plugging.
Signed-off-by: Igor Plyatov <plyatov@gmail.com>
---
drivers/net/phy/smsc.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
index c0f6479..a380958 100644
--- a/drivers/net/phy/smsc.c
+++ b/drivers/net/phy/smsc.c
@@ -104,10 +104,12 @@ static int lan911x_config_init(struct phy_device *phydev)
static int lan87xx_read_status(struct phy_device *phydev)
{
int err = genphy_read_status(phydev);
+ int rc;
+ int i;
if (!phydev->link) {
/* Disable EDPD to wake up PHY */
- int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
+ rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
if (rc < 0)
return rc;
@@ -116,8 +118,16 @@ static int lan87xx_read_status(struct phy_device *phydev)
if (rc < 0)
return rc;
- /* Sleep 64 ms to allow ~5 link test pulses to be sent */
- msleep(64);
+ /* Wait max 640 ms to detect energy */
+ for (i = 0; i < 64; i++) {
+ /* Sleep to allow link test pulses to be sent */
+ msleep(10);
+ rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
+ if (rc < 0)
+ return rc;
+ if (rc & MII_LAN83C185_ENERGYON)
+ break;
+ };
/* Re-enable EDPD */
rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
@@ -191,7 +201,7 @@ static struct phy_driver smsc_phy_driver[] = {
/* basic functions */
.config_aneg = genphy_config_aneg,
- .read_status = genphy_read_status,
+ .read_status = lan87xx_read_status,
.config_init = smsc_phy_config_init,
.soft_reset = smsc_phy_reset,
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Joe Perches <joe@perches.com> |
|---|---|
| Date | 2015-08-13 19:00 +0200 |
| Subject | Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging |
| Message-ID | <pX41d-Hx-45@gated-at.bofh.it> |
| In reply to | #1206809 |
On Thu, 2015-08-13 at 16:12 +0300, Igor Plyatov wrote:
> * Due to HW bug, LAN8700 sometimes does not detect presence of energy in the
> Ethernet cable in Energy Detect Power-Down mode (e.g while EDPWRDOWN bit is
> set, the ENERGYON bit does not asserted sometimes). This is a common bug of
> LAN87xx family of PHY chips.
> * The lan87xx_read_status() was improved to acquire ENERGYON bit. Its previous
> algorythm still not reliable on 100 % and sometimes skip cable plugging.
[]
> diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
[]
> @@ -104,10 +104,12 @@ static int lan911x_config_init(struct phy_device *phydev)
> static int lan87xx_read_status(struct phy_device *phydev)
> {
> int err = genphy_read_status(phydev);
> + int rc;
Is there a reason to move this declaration?
> + int i;
>
> if (!phydev->link) {
> /* Disable EDPD to wake up PHY */
> - int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
> + rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
> if (rc < 0)
> return rc;
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Igor Plyatov <plyatov@gmail.com> |
|---|---|
| Date | 2015-08-13 19:20 +0200 |
| Subject | Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging |
| Message-ID | <pX4kx-1jL-3@gated-at.bofh.it> |
| In reply to | #1206986 |
Dear Joe,
> On Thu, 2015-08-13 at 16:12 +0300, Igor Plyatov wrote:
>> * Due to HW bug, LAN8700 sometimes does not detect presence of energy in the
>> Ethernet cable in Energy Detect Power-Down mode (e.g while EDPWRDOWN bit is
>> set, the ENERGYON bit does not asserted sometimes). This is a common bug of
>> LAN87xx family of PHY chips.
>> * The lan87xx_read_status() was improved to acquire ENERGYON bit. Its previous
>> algorythm still not reliable on 100 % and sometimes skip cable plugging.
> []
>> diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
> []
>> @@ -104,10 +104,12 @@ static int lan911x_config_init(struct phy_device *phydev)
>> static int lan87xx_read_status(struct phy_device *phydev)
>> {
>> int err = genphy_read_status(phydev);
>> + int rc;
> Is there a reason to move this declaration?
There is no strict requirement to move declaration of the rc.
It was made just to have all declarations easily visible.
>> + int i;
>>
>> if (!phydev->link) {
>> /* Disable EDPD to wake up PHY */
>> - int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
>> + rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
>> if (rc < 0)
>> return rc;
>>
>
Best wishes
--
Igor Plyatov
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Joe Perches <joe@perches.com> |
|---|---|
| Date | 2015-08-13 19:20 +0200 |
| Subject | Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging |
| Message-ID | <pX4ky-1jL-11@gated-at.bofh.it> |
| In reply to | #1206996 |
On Thu, 2015-08-13 at 20:11 +0300, Igor Plyatov wrote:
> > On Thu, 2015-08-13 at 16:12 +0300, Igor Plyatov wrote:
> >> * Due to HW bug, LAN8700 sometimes does not detect presence of energy in the
> >> Ethernet cable in Energy Detect Power-Down mode (e.g while EDPWRDOWN bit is
> >> set, the ENERGYON bit does not asserted sometimes). This is a common bug of
> >> LAN87xx family of PHY chips.
> >> * The lan87xx_read_status() was improved to acquire ENERGYON bit. Its previous
> >> algorythm still not reliable on 100 % and sometimes skip cable plugging.
> > []
> >> diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
> > []
> >> @@ -104,10 +104,12 @@ static int lan911x_config_init(struct phy_device *phydev)
> >> static int lan87xx_read_status(struct phy_device *phydev)
> >> {
> >> int err = genphy_read_status(phydev);
> >> + int rc;
> > Is there a reason to move this declaration?
>
> There is no strict requirement to move declaration of the rc.
> It was made just to have all declarations easily visible.
Generally it's better to have declarations
in the minimal/narrowest scope possible.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-08-13 20:40 +0200 |
| Subject | Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging |
| Message-ID | <pX5zY-32e-23@gated-at.bofh.it> |
| In reply to | #1206999 |
From: Joe Perches <joe@perches.com>
Date: Thu, 13 Aug 2015 10:15:15 -0700
> On Thu, 2015-08-13 at 20:11 +0300, Igor Plyatov wrote:
>> > On Thu, 2015-08-13 at 16:12 +0300, Igor Plyatov wrote:
>> >> * Due to HW bug, LAN8700 sometimes does not detect presence of energy in the
>> >> Ethernet cable in Energy Detect Power-Down mode (e.g while EDPWRDOWN bit is
>> >> set, the ENERGYON bit does not asserted sometimes). This is a common bug of
>> >> LAN87xx family of PHY chips.
>> >> * The lan87xx_read_status() was improved to acquire ENERGYON bit. Its previous
>> >> algorythm still not reliable on 100 % and sometimes skip cable plugging.
>> > []
>> >> diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
>> > []
>> >> @@ -104,10 +104,12 @@ static int lan911x_config_init(struct phy_device *phydev)
>> >> static int lan87xx_read_status(struct phy_device *phydev)
>> >> {
>> >> int err = genphy_read_status(phydev);
>> >> + int rc;
>> > Is there a reason to move this declaration?
>>
>> There is no strict requirement to move declaration of the rc.
>> It was made just to have all declarations easily visible.
>
> Generally it's better to have declarations
> in the minimal/narrowest scope possible.
Agreed, and it's %100 unrelated to the purpose of this patch so not
should be included for that reason as well.
You will need to respin this patch with the variable moving elided.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Igor Plyatov <plyatov@gmail.com> |
|---|---|
| Date | 2015-08-13 21:30 +0200 |
| Subject | Re: [PATCH] net: phy: workaround for buggy cable detection by LAN8700 after cable plugging |
| Message-ID | <pX6mm-4hD-11@gated-at.bofh.it> |
| In reply to | #1207060 |
Dear David and Joe,
thank you for patch review!
Please look at email with subject
"[PATCH v2] net: phy: workaround for buggy cable detection by LAN8700
after cable plugging"
Best wishes.
--
Igor Plyatov
> From: Joe Perches <joe@perches.com>
> Date: Thu, 13 Aug 2015 10:15:15 -0700
>
>> On Thu, 2015-08-13 at 20:11 +0300, Igor Plyatov wrote:
>>>> On Thu, 2015-08-13 at 16:12 +0300, Igor Plyatov wrote:
>>>>> * Due to HW bug, LAN8700 sometimes does not detect presence of energy in the
>>>>> Ethernet cable in Energy Detect Power-Down mode (e.g while EDPWRDOWN bit is
>>>>> set, the ENERGYON bit does not asserted sometimes). This is a common bug of
>>>>> LAN87xx family of PHY chips.
>>>>> * The lan87xx_read_status() was improved to acquire ENERGYON bit. Its previous
>>>>> algorythm still not reliable on 100 % and sometimes skip cable plugging.
>>>> []
>>>>> diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
>>>> []
>>>>> @@ -104,10 +104,12 @@ static int lan911x_config_init(struct phy_device *phydev)
>>>>> static int lan87xx_read_status(struct phy_device *phydev)
>>>>> {
>>>>> int err = genphy_read_status(phydev);
>>>>> + int rc;
>>>> Is there a reason to move this declaration?
>>> There is no strict requirement to move declaration of the rc.
>>> It was made just to have all declarations easily visible.
>> Generally it's better to have declarations
>> in the minimal/narrowest scope possible.
> Agreed, and it's %100 unrelated to the purpose of this patch so not
> should be included for that reason as well.
>
> You will need to respin this patch with the variable moving elided.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web