• Yangbo Lu's avatar
    enetc: fix locking for one-step timestamping packet transfer · 7ce9c3d3
    Yangbo Lu authored
    The previous patch to support PTP Sync packet one-step timestamping
    described one-step timestamping packet handling logic as below in
    commit message:
    
    - 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.
    
    There was not problem of the description, but there was a mistake in
    implementation. The locking/test_and_set_bit_lock() should be put in
    enetc_start_xmit() which may be called by worker, rather than in
    enetc_xmit(). Otherwise, the worker calling enetc_start_xmit() after
    bit lock released is not able to lock again for transfer.
    
    Fixes: 7294380c ("enetc: support PTP Sync packet one-step timestamping")
    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>
    7ce9c3d3
enetc.c 63.9 KB