]> git.baikalelectronics.ru Git - kernel.git/commit
e1000e: Remove Other from EIAC
authorBenjamin Poirier <bpoirier@suse.com>
Wed, 31 Jan 2018 07:26:27 +0000 (16:26 +0900)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 5 Mar 2018 17:30:14 +0000 (09:30 -0800)
commitc8165eed380bf824c00f957b30401f144ecc843c
treee45d04f8c9cab10bb57ebf98b11ba88e2cecfcb9
parentb1b947605a3138a30bb9530d61a906b981e795b2
e1000e: Remove Other from EIAC

It was reported that emulated e1000e devices in vmware esxi 6.5 Build
7526125 do not link up after commit 7787cd116c75 ("e1000e: Avoid receiver
overrun interrupt bursts", v4.15-rc1). Some tracing shows that after
e1000e_trigger_lsc() is called, ICR reads out as 0x0 in e1000_msix_other()
on emulated e1000e devices. In comparison, on real e1000e 82574 hardware,
icr=0x80000004 (_INT_ASSERTED | _LSC) in the same situation.

Some experimentation showed that this flaw in vmware e1000e emulation can
be worked around by not setting Other in EIAC. This is how it was before
93410865bad2 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1).

Fixes: 7787cd116c75 ("e1000e: Avoid receiver overrun interrupt bursts")
Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/e1000e/netdev.c