>-----Original Message-----
>From: Koki Sanagi [mailto:[email protected]]
>Sent: Wednesday, November 23, 2011 7:18 PM
>To: [email protected]; Kirsher, Jeffrey T; Brandeburg, Jesse;
>Allan, Bruce W; Wyborny, Carolyn; Skidmore, Donald C; Rose, Gregory V;
>Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John; e1000-
>[email protected]
>Cc: [email protected]
>Subject: [PATCH net-next] igb: reset PHY after recovering from PHY power
>down
>
>According to 82576_Datasheet.pdf, PHY setting is lost after PHY power
>down.
>So resetting PHY is needed when recovering from PHY power down to set a
>default
>setting to PHY register.
>
>Owing to this lack, NIC doesn't link up in some rare situation.
>The situation I encountered is following.
>
>
>1.Both ports connect to switch.
>+---------+           +--------+
>|         |-----------|        |
>| 82576NS |           | switch |
>|         |-----------|        |
>+---------+           +--------+
>
>2.Detach both cables from switch.
>+---------+           +--------+
>|         |-------    |        |
>| 82576NS |           | switch |
>|         |-------    |        |
>+---------+           +--------+
>
>3.Detach one cable from one port.
>+---------+           +--------+
>|         |-------    |        |
>| 82576NS |           | switch |
>|         |           |        |
>+---------+           +--------+
>
>4.Attach that cable to the other port.(It means connecting directly each
>port)
>+---------+           +--------+
>|         |-------+   |        |
>| 82576NS |       |   | switch |
>|         |-------+   |        |
>+---------+           +--------+
>
>As a result, NIC doesn't link up sometimes.
>
>Signed-off-by: Koki Sanagi <[email protected]>
>---
> drivers/net/ethernet/intel/igb/igb_main.c |    1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
>diff --git a/drivers/net/ethernet/intel/igb/igb_main.c
>b/drivers/net/ethernet/intel/igb/igb_main.c
>index bd9b30e..4d4f065 100644
>--- a/drivers/net/ethernet/intel/igb/igb_main.c
>+++ b/drivers/net/ethernet/intel/igb/igb_main.c
>@@ -2496,6 +2496,7 @@ static int igb_open(struct net_device *netdev)
>               goto err_setup_rx;
>
>       igb_power_up_link(adapter);
>+      igb_reset_phy(hw);
>
>       /* before we allocate an interrupt, we must be ready to handle it.
>        * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt

I apologize for the delay in getting back to you.  After a review, I see that 
the needed change is simpler than I thought at first.  Can you resubmit with 
the igb_reset_phy call being added to the end of the igb_power_up_link function 
instead of after it in igb_open.  That way, whenever igb_power_link is called 
in the code, it will also execute the igb_reset_phy function which is the 
complete solution.  Thank you for your work on the igb driver.

Carolyn

Carolyn Wyborny
Linux Development
LAN Access Division
Intel Corporation




------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to