Skip to content
  • Stefan Sørensen's avatar
    dp83640: Fix receive timestamp race condition · 63502b8d
    Stefan Sørensen authored
    
    
    When timestamping received packets, rx_timestamp_work may be scheduled
    before the timestamps is received from the hardware resulting in the
    packet beeing delivered without the timestamp.
    
    This is fixed by changing the receive timestamp path:
    
    On receiving a packet that need timestamping, the rxts list is
    traversed.  If a match is found, packet+timestamp are delivered,
    otherwise the packet is added to a rx_queue.
    
    When a timestamp arrives rx_queue is traversed and if a matching
    packet is found, it is delivered with the timestamp. Otherwise the
    timestamp is added to the rxts list for matching with packets arriving
    later.
    
    In case the hardware drops a timestamp, a workqueue regularly checks
    the queue for old packets and delivers them without a timestamp.
    
    Signed-off-by: default avatarStefan Sørensen <stefan.sorensen@spectralink.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    63502b8d