]> www.infradead.org Git - users/jedix/linux-maple.git/commit
e1000e: Avoid missed interrupts following ICR read
authorBenjamin Poirier <bpoirier@suse.com>
Thu, 8 Feb 2018 06:47:14 +0000 (15:47 +0900)
committerBrian Maly <brian.maly@oracle.com>
Tue, 30 Oct 2018 17:20:29 +0000 (13:20 -0400)
commit5e5582ceed6f8d6c6239b1049b9dfaa945f15bfc
tree9396d5c9e1c5a83e338d43ba3287782f6c03f97d
parent7a3dca46b23b76c5bdb8f1f34701d944e108c9ad
e1000e: Avoid missed interrupts following ICR read

Orabug: 28716958

The 82574 specification update errata 12 states that interrupts may be
missed if ICR is read while INT_ASSERTED is not set. Avoid that problem by
setting all bits related to events that can trigger the Other interrupt in
IMS.

The Other interrupt is raised for such events regardless of whether or not
they are set in IMS. However, only when they are set is the INT_ASSERTED
bit also set in ICR.

By doing this, we ensure that INT_ASSERTED is always set when we read ICR
in e1000_msix_other() and steer clear of the errata. This also ensures that
ICR will automatically be cleared on read, therefore we no longer need to
clear bits explicitly.

Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 116f4a640b3197401bc93b8adc6c35040308ceff)
Signed-off-by: Dan Duval <dan.duval@oracle.com>
Reviewed-by: Shannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/e1000e/defines.h
drivers/net/ethernet/intel/e1000e/netdev.c