• Yangbo Lu's avatar
    enetc: support PTP Sync packet one-step timestamping · 7294380c
    Yangbo Lu authored
    This patch is to add support for PTP Sync packet one-step timestamping.
    Since ENETC single-step register has to be configured dynamically per
    packet for correctionField offeset and UDP checksum update, current
    one-step timestamping packet has to be sent only when the last one
    completes transmitting on hardware. So, on the TX, this patch handles
    one-step timestamping packet as below:
    
    - Trasmit packet immediately if no other one in transfer, or queue to
      skb queue if there is already one in transfer.
      The test_and_set_bit_lock() is used here to lock and check state.
    - Start a work when complete transfer on hardware, to release the bit
      lock and to send one skb in skb queue if has.
    
    And the configuration for one-step timestamping on ENETC before
    transmitting is,
    
    - Set one-step timestamping flag in extension BD.
    - Write 30 bits current timestamp in tstamp field of extension BD.
    - Update PTP Sync packet originTimestamp field with current timestamp.
    - Configure single-step register for correctionField offeset and UDP
      checksum update.
    Signed-off-by: default avatarYangbo Lu <yangbo.lu@nxp.com>
    Reviewed-by: default avatarClaudiu Manoil <claudiu.manoil@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7294380c
enetc_hw.h 24.9 KB