marius 02751cbaa9 o Avoid determining the MAC class (LEM/EM or IGB) - possibly even multiple
times - on every interrupt by using an own set of device methods for the
  IGB class. This translates to introducing igb_if_intr_{disable,enable}()
  and igb_if_{rx,tx}_queue_intr_enable() with that IGB-specific code moved
  out of their EM counterparts and otherwise continuing to use the EM IFDI
  methods also for IGB.
  Note that igb_if_intr_{disable,enable}() also issue E1000_WRITE_FLUSH as
  lost with the conversion of igb(4) to iflib(4).
  Also note, that the em_if_{disable,enable}_intr() methods are renamed to
  em_if_intr_{disable,enable}() for consistency with the names used in the
  interface declaration.
o In em_intr():
  - Don't bother to bail out if the interrupt type is "legacy", i. e. INTx
    or MSI, as iflib(4) doesn't use ift_legacy_intr methods for MSI-X. All
    other iflib(4)-based drivers avoid this check, too.
  - Given that only the MSI-X interrupts have one-shot behavior (by taking
    advantage of the EIAC register), explicitly disable interrupts. Hence,
    em_intr() now matches what {em,igb}_irq_fast() previously did (in case
    of igb(4) supposedly also to work around MSI message reordering errata
    on certain systems).
o In em_if_intr_disable():
  - Clear the EIAC register unconditionally for 82574 and not just in case
    of MSI-X, matching em_if_intr_enable() and bringing back the last hunk
    of r206437 lost with the iflib(4) conversion.
  - Write to EM_EIAC for clearing said register instead of to the IGB-only
    E1000_EIAC used ever since the iflib(4) conversion.

Reviewed by:	shurd
Differential Revision:	https://reviews.freebsd.org/D20176
2019-05-07 08:31:54 +00:00
..
2019-03-20 17:27:00 +00:00
2018-07-07 15:55:52 +00:00
2019-02-25 21:59:01 +00:00
2019-01-25 21:38:28 +00:00
2018-10-15 18:39:33 +00:00
2018-06-15 02:28:36 +00:00
2019-03-19 14:34:53 +00:00
2019-02-19 19:37:02 +00:00
2019-02-04 21:28:25 +00:00
2018-12-17 21:34:09 +00:00
2019-03-20 17:27:00 +00:00
2019-04-02 04:12:06 +00:00
2018-03-14 18:27:06 +00:00
2018-08-07 17:13:42 +00:00
2018-08-21 10:08:12 +00:00
2019-04-10 20:44:54 +00:00
2019-01-08 05:41:04 +00:00
2019-02-05 21:37:34 +00:00
2019-03-11 14:26:45 +00:00
2018-04-13 20:30:49 +00:00
2019-02-05 21:37:34 +00:00
2018-09-26 19:41:00 +00:00
2019-02-05 21:37:34 +00:00
2018-07-27 10:40:48 +00:00
2019-03-20 17:21:17 +00:00
2019-02-04 21:28:25 +00:00
2019-04-16 02:46:21 +00:00
2019-04-25 02:16:48 +00:00
2019-04-15 17:32:38 +00:00
2019-04-12 18:54:09 +00:00
2018-01-03 00:56:30 +00:00
2018-01-13 16:31:07 +00:00
2019-02-26 19:55:03 +00:00