[PATCH net v5 0/4] MAC-PHY interrupt changed to level triggered interrupt

From: Selvamani Rajagopal via B4 Relay

Date: Thu Jun 11 2026 - 17:57:29 EST


According to OPEN Alliance 10BASE-T1x MAC-PHY Serial Interface
specification, MAC-PHY interrupt is "active low, level triggered".
The specification mentions about the conditions in which the IRQ
is asserted and deasserted.

Bug is inadvertently introduced by treating the IRQ in the OA TC6
framework driver and in dt-binding YAML file as edge triggered.

With the changes to use level triggered interrupt, use of threaded
irq is more efficient than the current method that has interrupt hander
working with work queue.

This change of interrupt handler mechanism exposed couple of race
conditions due to the fact that interrupts were not masked on protocol
error. And pointers were not initialized with null after skbs are freed.

Changes are done in two files
- OA TC6 framework Ethernet driver
- YAML file for the vendor that already uses OA TC6 framework.

Maintainer for this driver is already informed and aware of these
changes. Testing for these changes was done in onsemi's setup and
found to be working.

Changes in v5:
- Removed the extraneous FCS that came with the frame before passing
to the stack
- Base commit was upadted on few patches to ensure that it is pointing
to the correct commit ID.
- Commit messages have been updated to be more descriptive and
gives more detail now.
- Couple of race conditions pointed out by AI review is fixed.

- Link to v4: https://lore.kernel.org/r/20260609-level-trigger-v4-0-6f389abdd192@xxxxxxxxxx

Changes in v4:

- IRQ handler is changed to interrupt handler + wake up thread
to interrupt handler + threaded irq. Threaded irq mechanism
is better suited for level triggered interrupt. Because it can
keep the interrupt disabled until interrupting conditions are
handled by a handler thread.
- SPI data handling function is called again on EAGAIN error code
as it indicates RX buffer overflow error, which requires draining
the bad data chunks.

- Changed wakeup thread to threaded IRQ
- RX buffer overflow is handled before threaded irq returns

- Link to v3: https://lore.kernel.org/r/20260601-level-trigger-v3-0-da73e7010532@xxxxxxxxxx

Signed-off-by: Selvamani Rajagopal <Selvamani.Rajagopal@xxxxxxxxxx>
---
Selvamani Rajagopal (4):
net: ethernet: oa_tc6: Interrupt is active low, level triggered.
net: ethernet: oa_tc6: mdiobus->parent initialized with NULL
net: ethernet: oa_tc6: Remove FCS size in RX frame
dt-bindings: net: updated interrupt type to be active low, level triggered

.../devicetree/bindings/net/microchip,lan8650.yaml | 2 +-
drivers/net/ethernet/oa_tc6.c | 140 +++++++++++++--------
2 files changed, 89 insertions(+), 53 deletions(-)
---
base-commit: 22e2036479cb77df6281ebbd376ae6c330774790
change-id: 20260531-level-trigger-8cb1a83af034

Best regards,
--
Selvamani Rajagopal <Selvamani.Rajagopal@xxxxxxxxxx>