1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/ethernet/freescale
Joakim Zhang b5bd95d171 net: fec: only clear interrupt of handling queue in fec_enet_rx_queue()
Background:
We have a customer is running a Profinet stack on the 8MM which receives and
responds PNIO packets every 4ms and PNIO-CM packets every 40ms. However, from
time to time the received PNIO-CM package is "stock" and is only handled when
receiving a new PNIO-CM or DCERPC-Ping packet (tcpdump shows the PNIO-CM and
the DCERPC-Ping packet at the same time but the PNIO-CM HW timestamp is from
the expected 40 ms and not the 2s delay of the DCERPC-Ping).

After debugging, we noticed PNIO, PNIO-CM and DCERPC-Ping packets would
be handled by different RX queues.

The root cause should be driver ack all queues' interrupt when handle a
specific queue in fec_enet_rx_queue(). The blamed patch is introduced to
receive as much packets as possible once to avoid interrupt flooding.
But it's unreasonable to clear other queues'interrupt when handling one
queue, this patch tries to fix it.

Fixes: ed63f1dcd5 (net: fec: clear receive interrupts before processing a packet)
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Reported-by: Nicolas Diaz <nicolas.diaz@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Link: https://lore.kernel.org/r/20211206135457.15946-1-qiangqing.zhang@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-12-07 21:39:39 -08:00
..
dpaa ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
dpaa2 dpaa2-eth: destroy workqueue at the end of remove function 2021-11-30 12:14:33 +00:00
enetc net: convert users of bitmap_foo() to linkmode_foo() 2021-10-24 13:58:52 +01:00
fman ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
fs_enet ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
fec.h net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() 2021-12-07 21:39:39 -08:00
fec_main.c net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() 2021-12-07 21:39:39 -08:00
fec_mpc52xx.c ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
fec_mpc52xx.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
fec_mpc52xx_phy.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
fec_ptp.c net: fec_ptp: fix issue caused by refactor the fec_devtype 2021-06-16 12:39:03 -07:00
fsl_pq_mdio.c net: freescale: convert comma to semicolon 2020-12-09 16:23:08 -08:00
gianfar.c ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
gianfar.h net: gianfar: Implement rx_missed_errors counter 2021-06-17 11:39:48 -07:00
gianfar_ethtool.c ethtool: extend coalesce setting uAPI with CQE mode 2021-08-24 07:38:29 -07:00
Kconfig ethernet: fix PTP_1588_CLOCK dependencies 2021-08-13 17:49:05 -07:00
Makefile net: enetc: fix link error again 2021-04-22 13:23:07 -07:00
ucc_geth.c ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
ucc_geth.h ethernet: ucc_geth: simplify rx/tx allocations 2021-01-21 12:19:56 -08:00
ucc_geth_ethtool.c net/freescale: Don't set zero if FW not-available in ucc_geth 2020-03-03 17:54:55 -08:00
xgmac_mdio.c net: mdiobus: withdraw fwnode_mdbiobus_register 2021-06-25 11:46:29 -07:00