From: sashiko-bot@kernel.org
To: "Ciprian Regus via B4 Relay"
<devnull+ciprian.regus.analog.com@kernel.org>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH net-next v3 04/13] net: ethernet: oa_tc6: Export the C45 access functions
Date: Fri, 05 Jun 2026 16:33:12 +0000 [thread overview]
Message-ID: <20260605163312.C20EB1F00899@smtp.kernel.org> (raw)
In-Reply-To: <20260604-adin1140-driver-v3-4-5debdb3173c4@analog.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
New issues:
- [Low] Missing forward declaration of `struct mii_bus` in `include/linux/oa_tc6.h` makes the header not self-contained.
Pre-existing issues:
- [High] Lockless check in `oa_tc6_start_xmit` races with the SPI thread, leaving the network transmit queue permanently stopped (TX deadlock).
--
commit 03dcdcc6f016c85b284a9ab34918acf9f00e484a
Author: Ciprian Regus <ciprian.regus@analog.com>
net: ethernet: oa_tc6: Export the C45 access functions
This commit exports the C45 MDIO bus access functions from the oa_tc6
driver. It modifies the function signatures to be non-static and adds
their declarations to the driver header file.
> diff --git a/include/linux/oa_tc6.h b/include/linux/oa_tc6.h
> index 62e3d89f80ed0..2660eefa35043 100644
> --- a/include/linux/oa_tc6.h
> +++ b/include/linux/oa_tc6.h
> @@ -31,3 +31,7 @@ int oa_tc6_read_registers(struct oa_tc6 *tc6, u32 address, u32 value[],
> u8 length);
> netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb);
> int oa_tc6_zero_align_receive_frame_enable(struct oa_tc6 *tc6);
> +int oa_tc6_mdiobus_read_c45(struct mii_bus *bus, int addr, int devnum,
> + int regnum);
> +int oa_tc6_mdiobus_write_c45(struct mii_bus *bus, int addr, int devnum,
> + int regnum, u16 val);
[Severity: Low]
Is a forward declaration for struct mii_bus missing in this header?
Since struct mii_bus is used in the parameter list but not declared, it is
scoped to the function prototype. Any file including this header before
declaring struct mii_bus will produce a warning about it not being visible
outside of this declaration.
[Severity: High]
This is a pre-existing issue, but could the lockless check in
oa_tc6_start_xmit() race with the SPI thread and cause a TX deadlock?
Looking at oa_tc6_start_xmit() in drivers/net/ethernet/oa_tc6.c:
if (tc6->waiting_tx_skb) {
netif_stop_queue(tc6->netdev);
return NETDEV_TX_BUSY;
}
If this evaluates to true, but concurrently the SPI kthread running
oa_tc6_try_spi_transfer() takes tx_skb_lock, moves waiting_tx_skb to
ongoing_tx_skb, and sets waiting_tx_skb to NULL, could the queue wake up be
missed?
oa_tc6_try_spi_transfer() evaluates the queue status:
if (!tc6->waiting_tx_skb && netif_queue_stopped(tc6->netdev))
netif_wake_queue(tc6->netdev);
If the kthread evaluates netif_queue_stopped() as false before
oa_tc6_start_xmit() calls netif_stop_queue(), start_xmit will then
unconditionally stop the queue. Since waiting_tx_skb is now NULL, the SPI
thread will not process TX packets and wake the queue again, potentially
deadlocking the TX path permanently unless RX traffic generates an interrupt.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260604-adin1140-driver-v3-0-5debdb3173c4@analog.com?part=4
next prev parent reply other threads:[~2026-06-05 16:33 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-04 16:32 [PATCH net-next v3 00/13] net: Add ADIN1140 support Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 16:32 ` [PATCH net-next v3 01/13] dt-bindings: net: Add ADIN1140 Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 16:39 ` Conor Dooley
2026-06-04 16:32 ` [PATCH net-next v3 02/13] net: ethernet: oa_tc6: Handle the OA TC6 SPI protected mode Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-05 16:33 ` sashiko-bot
2026-06-04 16:32 ` [PATCH net-next v3 03/13] net: ethernet: oa_tc6: add OA_TC6_BROKEN_PHY quirk flag Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-05 16:33 ` sashiko-bot
2026-06-04 16:32 ` [PATCH net-next v3 04/13] net: ethernet: oa_tc6: Export the C45 access functions Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-05 16:33 ` sashiko-bot [this message]
2026-06-04 16:32 ` [PATCH net-next v3 05/13] net: ethernet: oa_tc6: Export standard defined registers Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 22:13 ` Andrew Lunn
2026-06-05 16:33 ` sashiko-bot
2026-06-04 16:32 ` [PATCH net-next v3 06/13] net: ethernet: oa_tc6: Add the OA_TC6_ prefix to standard registers Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 22:14 ` Andrew Lunn
2026-06-04 16:32 ` [PATCH net-next v3 07/13] net: ethernet: oa_tc6: Add read_mms/write_mms register access functions Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 22:19 ` Andrew Lunn
2026-06-04 22:21 ` Andrew Lunn
2026-06-04 16:32 ` [PATCH net-next v3 08/13] net: ethernet: oa_tc6: Use the read_mms/write_mms functions for C45 Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 22:23 ` Andrew Lunn
2026-06-04 16:32 ` [PATCH net-next v3 09/13] net: ethernet: oa_tc6: Add new register address defines Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 22:31 ` Andrew Lunn
2026-06-04 16:32 ` [PATCH net-next v3 10/13] net: phy: add generic helpers for direct C45 MMD access Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 16:32 ` [PATCH net-next v3 11/13] net: phy: microchip-t1s: use generic C45 MMD access helpers Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 16:32 ` [PATCH net-next v3 12/13] net: phy: Add support for the ADIN1140 PHY Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 16:32 ` [PATCH net-next v3 13/13] net: ethernet: adi: Add a driver for the ADIN1140 MACPHY Ciprian Regus via B4 Relay
2026-06-04 16:32 ` Ciprian Regus
2026-06-04 22:36 ` Andrew Lunn
2026-06-05 16:33 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260605163312.C20EB1F00899@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=devnull+ciprian.regus.analog.com@kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.