]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: fec_mxc: Skip recv packet process when fec is halted
authorYe Li <ye.li@nxp.com>
Tue, 24 Sep 2024 07:32:00 +0000 (15:32 +0800)
committerFabio Estevam <festevam@gmail.com>
Tue, 24 Sep 2024 19:55:14 +0000 (16:55 -0300)
After FEC is halted by calling fec_halt callback, we should not continue
receiving packet. Otherwise it will process previous pending interrupts
on EIR register and uses wrong rbd index as this has been reset to 0.

The GRA interrupt which is triggered by issuing graceful stop command to
FEC transmitter in fec_halt is processed in this case. It causes wrong
receive buffer descriptors be used by FEC in next time.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/net/fec_mxc.c

index d0590fd137b54db4bfb14a514ef3dd29ee9ad067..50edeb4b5b64db0534b46ca6c128aee9622e359a 100644 (file)
@@ -818,6 +818,9 @@ static int fecmxc_recv(struct udevice *dev, int flags, uchar **packetp)
                return -ENOMEM;
        }
 
+       if (!(readl(&fec->eth->ecntrl) & FEC_ECNTRL_ETHER_EN))
+               return 0;
+
        /* Check if any critical events have happened */
        ievent = readl(&fec->eth->ievent);
        writel(ievent, &fec->eth->ievent);