Skip to content
  • Sean Bruno's avatar
    Simplify hang detection by stealing the techniques used in ixl(4) and · b7a728aa
    Sean Bruno authored
    applying them to em(4).
    
    Rely on iterations through the local timer, and the tx queue state to
    determine if an actual hang has occurred. Any time a descriptor is used
    (packet sent), the tx queue is flagged as busy. Then when txeof runs, it
    either clears the flag when all is clean, or resets it to 1 if ANY are
    cleaned, if nothing is cleaned it increments the flag.
    
    Local timer simply checks to see if busy ever reaches MAX (10, which
    is compile time configurable), and then sets it as HUNG, at that point
    there is one more timer cycle in which to have any cleans, if not a
    watchdog reset will occur.
    
    Differential Revision:	https://reviews.freebsd.org/D2019
    Submitted by:	jfv
    Reviewed by:	hiren
    Obtained from:	Intel Corporation
    MFC after:	2 weeks
    Relnotes:	Yes
    Sponsored by:	Limelight Networks
    b7a728aa