• Karol Kolacinski's avatar
    ice: handle extts in the miscellaneous interrupt thread · 6e8b2c88
    Karol Kolacinski authored
    The ice_ptp_extts_work() and ice_ptp_periodic_work() functions are both
    scheduled on the same kthread worker, pf.ptp.kworker. The
    ice_ptp_periodic_work() function sends to the firmware to interact with the
    PHY, and must block to wait for responses.
    
    This can cause delay in responding to the PFINT_OICR_TSYN_EVNT interrupt
    cause, ultimately resulting in disruption to processing an input signal of
    the frequency is high enough. In our testing, even 100 Hz signals get
    disrupted.
    
    Fix this by instead processing the signal inside the miscellaneous
    interrupt thread prior to handling Tx timestamps.
    
    Use atomic bits in a new pf->misc_thread bitmap in order to safely
    communicate which tasks require processing within the
    ice_misc_intr_thread_fn(). This ensures the communication of desired tasks
    from the ice_misc_intr() are correctly processed without racing even in the
    event that the interrupt triggers again before the thread function exits.
    
    Fixes: 172db5f9 ("ice: add support for auxiliary input/output pins")
    Signed-off-by: default avatarKarol Kolacinski <karol.kolacinski@intel.com>
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: Arpana Arland <arpanax.arland@intel.com> (A Contingent worker at Intel)
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    6e8b2c88
ice.h 27.9 KB