[net,2/2] igb: Fix constant media auto sense switching when no cable is connected.
diff mbox series

Message ID 20190815205520.22475-2-jeffrey.t.kirsher@intel.com
State Under Review
Delegated to: Jeff Kirsher
Headers show
Series
  • [net,1/2] igb: Enable media autosense for the i350.
Related show

Commit Message

Jeff Kirsher Aug. 15, 2019, 8:55 p.m. UTC
From: Manfred Rudigier <manfred.rudigier@omicronenergy.com>

At least on the i350 there is an annoying behavior that is maybe also
present on 82580 devices, but was probably not noticed yet as MAS is not
widely used.

If no cable is connected on both fiber/copper ports the media auto sense
code will constantly swap between them as part of the watchdog task and
produce many unnecessary kernel log messages.

The swap code responsible for this behavior (switching to fiber) should
not be executed if the current media type is copper and there is no signal
detected on the fiber port. In this case we can safely wait until the
AUTOSENSE_EN bit is cleared.

Signed-off-by: Manfred Rudigier <manfred.rudigier@omicronenergy.com>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Brown, Aaron F Sept. 11, 2019, 9:36 p.m. UTC | #1
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@osuosl.org] On
> Behalf Of Jeff Kirsher
> Sent: Thursday, August 15, 2019 1:55 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: Manfred Rudigier <manfred.rudigier@omicronenergy.com>
> Subject: [Intel-wired-lan] [PATCH net 2/2] igb: Fix constant media auto sense
> switching when no cable is connected.
> 
> From: Manfred Rudigier <manfred.rudigier@omicronenergy.com>
> 
> At least on the i350 there is an annoying behavior that is maybe also
> present on 82580 devices, but was probably not noticed yet as MAS is not
> widely used.
> 
> If no cable is connected on both fiber/copper ports the media auto sense
> code will constantly swap between them as part of the watchdog task and
> produce many unnecessary kernel log messages.
> 
> The swap code responsible for this behavior (switching to fiber) should
> not be executed if the current media type is copper and there is no signal
> detected on the fiber port. In this case we can safely wait until the
> AUTOSENSE_EN bit is cleared.
> 
> Signed-off-by: Manfred Rudigier <manfred.rudigier@omicronenergy.com>
> ---
>  drivers/net/ethernet/intel/igb/igb_main.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 

Tested-by: Aaron Brown <aaron.f.brown@intel.com>

Patch
diff mbox series

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 95fc1a178ff3..891cd072d4dd 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -2064,7 +2064,8 @@  static void igb_check_swap_media(struct igb_adapter *adapter)
 	if ((hw->phy.media_type == e1000_media_type_copper) &&
 	    (!(connsw & E1000_CONNSW_AUTOSENSE_EN))) {
 		swap_now = true;
-	} else if (!(connsw & E1000_CONNSW_SERDESD)) {
+	} else if ((hw->phy.media_type != e1000_media_type_copper) &&
+	    !(connsw & E1000_CONNSW_SERDESD)) {
 		/* copper signal takes time to appear */
 		if (adapter->copper_tries < 4) {
 			adapter->copper_tries++;