aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/ti/cpsw_ale.h
diff options
context:
space:
mode:
authorStefan Sørensen <stefan.sorensen@spectralink.com>2014-07-22 15:20:45 +0200
committerDavid S. Miller <davem@davemloft.net>2014-07-22 19:56:18 -0700
commit63502b8d01631bd41778a64c9f6b72ea409bf97b (patch)
tree157d94a877a55474fec8f4bd3bf01fa05203fbe4 /drivers/net/ethernet/ti/cpsw_ale.h
parentsfc: Add support for busy polling (diff)
downloadlinux-dev-63502b8d01631bd41778a64c9f6b72ea409bf97b.tar.xz
linux-dev-63502b8d01631bd41778a64c9f6b72ea409bf97b.zip
dp83640: Fix receive timestamp race condition
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: Stefan Sørensen <stefan.sorensen@spectralink.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions