From: Eric Dumazet > Sent: 12 November 2020 10:42 > > On 11/12/20 7:52 AM, Kegl Rohit wrote: > > On Wed, Nov 11, 2020 at 11:18 PM Fabio Estevam <feste...@gmail.com> wrote: > >> > >> On Wed, Nov 11, 2020 at 11:27 AM Kegl Rohit <keglro...@gmail.com> wrote: > >>> > >>> Hello! > >>> > >>> We are using a imx6q platform. > >>> The fec interface is used to receive a continuous stream of custom / > >>> raw ethernet packets. The packet size is fixed ~132 bytes and they get > >>> sent every 250µs. > >>> > >>> While testing I observed spontaneous packet delays from time to time. > >>> After digging down deeper I think that the fec peripheral does not > >>> update the rx descriptor status correctly. > >> > >> What is the kernel version that you are using? > > > > Sadly stuck at 3.10.108.
If you build a newer kernel it should work with your existing userspace. > > https://github.com/gregkh/linux/blob/v3.10.108/drivers/net/ethernet/freescale/fec_main.c > > The rx queue status handling did not change much compared to 5.x. Only > > the NAPI handling / clearing IRQs was changed more than once. > > I also backported the newer NAPI handling style / clearing irqs not in > > the irq handler but in napi_poll() => same issue. > > The issue is pretty rare => To reproduce i have to reboot the system > > every 3 min. Sometimes after 1~2min on the first, sometimes on the > > ~10th reboot it will happen. > > > > Is seems some rmb() & wmb() are missing. They are unlikely to make any difference since the 'bad' rx status persists between calls to the receive function. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)