Message ID | 20190815205520.22475-2-jeffrey.t.kirsher@intel.com |
---|---|
State | Accepted |
Delegated to: | Jeff Kirsher |
Headers | show |
Series | [net,1/2] igb: Enable media autosense for the i350. | expand |
> 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>
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++;