• S
    dp83640: Fix receive timestamp race condition · 63502b8d
    Stefan Sørensen 提交于
    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: NStefan Sørensen <stefan.sorensen@spectralink.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    63502b8d
dp83640.c 36.2 KB