• Jacob Keller's avatar
    ice: remove ptp_tx ring parameter flag · 0ffb08b1
    Jacob Keller authored
    Before performing a Tx timestamp in ice_stamp(), the driver checks a ptp_tx
    ring variable to see if timestamping is enabled on that ring. This value is
    set for all rings whenever userspace configures Tx timestamping.
    
    Ostensibly this was done to avoid wasting cycles checking other fields when
    timestamping has not been enabled. However, for Tx timestamps we already
    get an individual per-SKB flag indicating whether userspace wants to
    request a timestamp on that packet. We do not gain much by also having
    a separate flag to check for whether timestamping was enabled.
    
    In fact, the driver currently fails to restore the field after a PF reset.
    Because of this, if a PF reset occurs, timestamps will be disabled.
    
    Since this flag doesn't add value in the hotpath, remove it and always
    provide a timestamp if the SKB flag has been set.
    
    A following change will fix the reset path to properly restore user
    timestamping configuration completely.
    
    This went unnoticed for some time because one of the most common
    applications using Tx timestamps, ptp4l, will reconfigure the socket as
    part of its fault recovery logic.
    
    Fixes: ea9b847c ("ice: enable transmit timestamps for E810 devices")
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    0ffb08b1
ice_txrx.h 14 KB