e1000e: delay second read of PHY_STATUS register on failure of first read
Some PHYs may require two reads of the PHY_STATUS register to determine the link status. If the PHY is being accessed by another thread it is possible the first read could timeout and fail. In this case, put a delay in so the second read will pick up the correct link status. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
28c9195a57
commit
906e8d9792
|
@ -1531,7 +1531,12 @@ s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
|
||||||
*/
|
*/
|
||||||
ret_val = e1e_rphy(hw, PHY_STATUS, &phy_status);
|
ret_val = e1e_rphy(hw, PHY_STATUS, &phy_status);
|
||||||
if (ret_val)
|
if (ret_val)
|
||||||
break;
|
/*
|
||||||
|
* If the first read fails, another entity may have
|
||||||
|
* ownership of the resources, wait and try again to
|
||||||
|
* see if they have relinquished the resources yet.
|
||||||
|
*/
|
||||||
|
udelay(usec_interval);
|
||||||
ret_val = e1e_rphy(hw, PHY_STATUS, &phy_status);
|
ret_val = e1e_rphy(hw, PHY_STATUS, &phy_status);
|
||||||
if (ret_val)
|
if (ret_val)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue