Skip to content
  • Kevin Bowling's avatar
    e1000: Rework em_msi_link interrupt filter · eea55de7
    Kevin Bowling authored
    * Fix 82574 Link Status Changes, carrying the OTHER mask bit around as
      needed.
    * Move igb-class LSC re-arming out of FAST back into the handler.
    * Clarify spurious/other interrupt re-arms in FAST.
    
    In MSI-X mode, 82574 and igb-class devices use an interrupt filter to
    handle Link Status Changes. We want to do LSC re-arms in the handler
    to take advantage of autoclear (EIAC) single shot behavior.
    
    82574 uses 'Other' in ICR and IMS for LSC interrupt types when in MSI-X
    mode, so we need to set and re-arm the 'Other' bit during attach and
    after ICR reads in the FAST handler if not an LSC or after handling on
    LSC due to autoclearing.
    
    This work was primarily done to address the referenced PR, but inspired
    some clarification and improvement for igb-class devices once the
    intentions of previous bug fix attempts became clearer.
    
    PR:		211219
    Reported by:	Alexey <aserp3@gmail.com>
    Tested by:	kbowling (I210 lagg), markj (I210)
    Approved by:	markj
    MFC after:	1 month
    Differential Revision:	https://reviews.freebsd.org/D29943
    eea55de7