• Yangbo Lu's avatar
    dpaa2-eth: support PTP Sync packet one-step timestamping · c5521189
    Yangbo Lu authored
    This patch is to add PTP sync packet one-step timestamping support.
    Before egress, one-step timestamping enablement needs,
    
    - Enabling timestamp and FAS (Frame Annotation Status) in
      dpni buffer layout.
    
    - Write timestamp to frame annotation and set PTP bit in
      FAS to mark as one-step timestamping event.
    
    - Enabling one-step timestamping by dpni_set_single_step_cfg()
      API, with offset provided to insert correction time on frame.
      The offset must respect all MAC headers, VLAN tags and other
      protocol headers accordingly. The correction field update can
      consider delays up to one second. So PTP frame needs to be
      filtered and parsed, and written timestamp into Sync frame
      originTimestamp field.
    
    The operation of API dpni_set_single_step_cfg() has to be done
    when no one-step timestamping frames are in flight. So we have
    to make sure the last one-step timestamping frame has already
    been transmitted on hardware before starting to send the current
    one. The resolution is,
    
    - Utilize skb->cb[0] to mark timestamping request per packet.
      If it is one-step timestamping PTP sync packet, queue to skb queue.
      If not, transmit immediately.
    
    - Schedule a work to transmit skbs in skb queue.
    
    - mutex lock is used to ensure the last one-step timestamping packet
      has already been transmitted on hardware through TX confirmation queue
      before transmitting current packet.
    Signed-off-by: default avatarYangbo Lu <yangbo.lu@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c5521189
dpaa2-ethtool.c 20.9 KB