tsnep: Fix rotten packets
authorGerhard Engleder <gerhard@engleder-embedded.com>
Sat, 19 Nov 2022 21:18:25 +0000 (22:18 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 22 Nov 2022 14:47:17 +0000 (15:47 +0100)
commit2dc4ac91f845b690ddf2ad39172c3698b2769fa2
treea6b31e48b66ebc83818bdf2c6babe7a480a8a5f6
parentbb3cfbaf7c6416f3109fdb14f6fc0eb1a50361ad
tsnep: Fix rotten packets

If PTP synchronisation is done every second, then sporadic the interval
is higher than one second:

ptp4l[696.582]: master offset        -17 s2 freq   -1891 path delay 573
ptp4l[697.582]: master offset        -22 s2 freq   -1901 path delay 573
ptp4l[699.368]: master offset         -1 s2 freq   -1887 path delay 573
      ^^^^^^^ Should be 698.582!

This problem is caused by rotten packets, which are received after
polling but before interrupts are enabled again. This can be fixed by
checking for pending work and rescheduling if necessary after interrupts
has been enabled again.

Fixes: 403f69bbdbad ("tsnep: Add TSN endpoint Ethernet MAC driver")
Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
Link: https://lore.kernel.org/r/20221119211825.81805-1-gerhard@engleder-embedded.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/engleder/tsnep_main.c