12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- From patchwork Fri Jul 21 18:36:23 2017
- Content-Type: text/plain; charset="utf-8"
- MIME-Version: 1.0
- Content-Transfer-Encoding: 7bit
- Subject: [1/5] e1000e: Fix error path in link detection
- From: Benjamin Poirier <[email protected]>
- X-Patchwork-Id: 9857487
- Message-Id: <[email protected]>
- To: Jeff Kirsher <[email protected]>
- Cc: Lennart Sorensen <[email protected]>,
- [email protected], [email protected],
- [email protected]
- Date: Fri, 21 Jul 2017 11:36:23 -0700
- In case of error from e1e_rphy(), the loop will exit early and "success"
- will be set to true erroneously.
- Signed-off-by: Benjamin Poirier <[email protected]>
- ---
- drivers/net/ethernet/intel/e1000e/phy.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
- --- a/drivers/net/ethernet/intel/e1000e/phy.c
- +++ b/drivers/net/ethernet/intel/e1000e/phy.c
- @@ -1744,6 +1744,7 @@ s32 e1000e_phy_has_link_generic(struct e
- s32 ret_val = 0;
- u16 i, phy_status;
-
- + *success = false;
- for (i = 0; i < iterations; i++) {
- /* Some PHYs require the MII_BMSR register to be read
- * twice due to the link bit being sticky. No harm doing
- @@ -1763,16 +1764,16 @@ s32 e1000e_phy_has_link_generic(struct e
- ret_val = e1e_rphy(hw, MII_BMSR, &phy_status);
- if (ret_val)
- break;
- - if (phy_status & BMSR_LSTATUS)
- + if (phy_status & BMSR_LSTATUS) {
- + *success = true;
- break;
- + }
- if (usec_interval >= 1000)
- msleep(usec_interval / 1000);
- else
- udelay(usec_interval);
- }
-
- - *success = (i < iterations);
- -
- return ret_val;
- }
-
|