From: netdev-bot+sashiko@kernel.org
To: kyle.switch@motor-comm.com
Cc: andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, andrew@lunn.ch,
hkallweit1@gmail.com, linux@armlinux.org.uk,
Frank.Sae@motor-comm.com, netdev@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
ming.xu@motor-comm.com, xiaolin.xu@motor-comm.com,
jianmin.wang@motor-comm.com
Subject: Re: [PATCH net-next v23 2/3] net: phy: Add support for Template Control register for PMA
Date: Sun, 04 Oct 2026 21:10:22 +0000 [thread overview]
Message-ID: <179114822219.434549.6284648991914161094@kernel.org> (raw)
In-Reply-To: <20260930194513.663575-3-kyle.switch@motor-comm.com>
Thank you for your contribution! Sashiko AI review found more severe
issue(s) in other patches of this series. This mail is only an FYI, in case
you want to address the nit picks below when you respin.
Low priority / nit picks for your consideration:
- [Low] The patch adds MDIO_PMA_10GBT_TESTMODE_MASK to the exported uAPI
header include/uapi/linux/mdio.h as GENMASK(15, 13).
- [Low] phy: genphy_c45_template_testmode returns -EOPNOTSUPP instead of
-EINVAL
- [Low] phy: vendor-specific 'Template' terminology pollutes generic API
--
net: phy: Add support for Template Control register for PMA
This commit adds the genphy_c45_template_testmode() helper. The helper
writes the 10GBASE-T PMA test mode field in register 132. The commit
also adds the register and field definitions to the uapi mdio.h header.
> diff --git a/include/uapi/linux/mdio.h b/include/uapi/linux/mdio.h
> index 06f4bc3c20c71..353ca13c64fca 100644
> --- a/include/uapi/linux/mdio.h
> +++ b/include/uapi/linux/mdio.h
[ ... ]
> @@ -320,6 +321,17 @@
> /* PMA 10GBASE-R Fast Retrain status and control register. */
> #define MDIO_PMA_10GBR_FSRT_ENABLE 0x0001 /* Fast retrain enable */
>
> +/* PMA 10GBASE-T Template Test Mode Register*/
> +#define MDIO_PMA_10GBT_TESTMODE_MASK GENMASK(15, 13) /* Template test mode */
[Severity: Low]
Will this build in userspace? include/uapi/linux/mdio.h is an exported
header, and GENMASK() isn't defined for userspace.
The uapi header only includes these:
include/uapi/linux/mdio.h:
#include <linux/types.h>
#include <linux/mii.h>
Neither of them, nor anything they pull in (ethtool.h, const.h,
if_ether.h, ...), defines GENMASK(). The uapi <linux/bits.h> only
provides __GENMASK(), __GENMASK_ULL() and __GENMASK_U128().
In the kernel this only works because the internal wrapper includes
bitfield.h right after the uapi header:
include/linux/mdio.h:
#include <uapi/linux/mdio.h>
#include <linux/bitfield.h>
So a userspace program that includes <linux/mdio.h> and uses
MDIO_PMA_10GBT_TESTMODE_MASK would fail to compile with an undefined
GENMASK.
This file already has the same problem in MDIO_AN_C73_0_S_MASK,
MDIO_AN_C73_0_E_MASK and MDIO_AN_C73_1_T_MASK. This patch adds one more
exported constant with it.
Could this use a literal (0xe000) or a uapi-safe form such as
__GENMASK()? Another option is to move the mask into
include/linux/mdio.h.
> +#define MDIO_PMA_10GBT_TESTMODE_NORMAL 0x0 /* Template Normal */
> +#define MDIO_PMA_10GBT_TESTMODE_1 0x1 /* Template TestMode1 */
[ ... ]
> diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c
> --- a/drivers/net/phy/phy-c45.c
> +++ b/drivers/net/phy/phy-c45.c
> @@ -1408,6 +1408,29 @@ int genphy_c45_fast_retrain(struct phy_device *phydev, bool enable)
> }
> EXPORT_SYMBOL_GPL(genphy_c45_fast_retrain);
>
> +/**
> + * genphy_c45_template_testmode - configure template testmode registers
> + * @phydev: target phy_device struct
> + * @test_mode: testmode includes Normal to Test mode 7
> + *
> + * Description: Set template testmode include Normal to Test mode 7
> + *
> + * Return: 0 on success, or a negative error code on failure (e.g. register
> + * read/write error).
> + */
> +int genphy_c45_template_testmode(struct phy_device *phydev, u16 test_mode)
> +{
> + u16 ctrl;
> +
> + if (test_mode > MDIO_PMA_10GBT_TESTMODE_7)
> + return -EOPNOTSUPP;
> +
> + ctrl = FIELD_PREP(MDIO_PMA_10GBT_TESTMODE_MASK, test_mode);
> + return phy_modify_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_10GBT_TESTMODE,
> + MDIO_PMA_10GBT_TESTMODE_MASK, ctrl);
> +}
> +EXPORT_SYMBOL_GPL(genphy_c45_template_testmode);
> +
> /**
> * genphy_c45_plca_get_cfg - get PLCA configuration from standard registers
> * @phydev: target phy_device struct
[Severity: Low]
Where does the term "Template" come from? IEEE 802.3 calls register
1.132 the 10GBASE-T test mode register, and bits 15:13 are the test
mode control field. "Template" is not part of either name. Is it taken
from the Motorcomm datasheet?
The genphy_c45_* helpers and the uapi mdio.h definitions are generic
and should follow the naming in the standard. A vendor term here could
make other driver authors think the standard has a separate "template"
test mode.
The new defines already leave the term out
(MDIO_PMA_10GBT_TESTMODE, MDIO_PMA_10GBT_TESTMODE_MASK). Only the
function name, its kernel-doc and the uapi section comment use it,
which is also inconsistent.
Would a name like genphy_c45_pma_10gbt_test_mode() work for you? The
kernel-doc, the mdio.h comment ("PMA 10GBASE-T test mode register")
and the commit subject could be updated to match.
[Severity: Low]
Is -EOPNOTSUPP the right error code here? A test_mode above
MDIO_PMA_10GBT_TESTMODE_7 means the caller passed a bad argument. It
doesn't mean the operation is unsupported, so -EINVAL seems to fit
better.
genphy_c45_template_testmode() is an exported genphy helper, and PHY
drivers will usually return its value unchanged to their caller.
By convention, -EOPNOTSUPP means the PHY doesn't implement the
operation. Code further up may then report the feature as unsupported
or fall back to something else. It would not tell the user that the
requested mode was out of range.
Could the out-of-range case return -EINVAL instead? -EOPNOTSUPP could
then be kept for a PHY that really lacks register 1.132, if you plan
to check for that.
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260930194513.663575-1-kyle.switch%40motor-comm.com
next prev parent reply other threads:[~2026-10-04 21:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 19:45 [PATCH net-next v23 0/3] net: phy: Add driver for Motorcomm Quad 2.5GbE phy Kyle Switch
2026-09-30 19:45 ` [PATCH net-next v23 1/3] dt-bindings: net: Document Motorcomm YT8824 PHY package Kyle Switch
2026-10-04 21:10 ` netdev-bot+sashiko
2026-09-30 19:45 ` [PATCH net-next v23 2/3] net: phy: Add support for Template Control register for PMA Kyle Switch
2026-10-04 21:10 ` netdev-bot+sashiko [this message]
2026-09-30 19:45 ` [PATCH net-next v23 3/3] net: phy: Add driver for Motorcomm Quad 2.5GbE phy Kyle Switch
2026-10-01 15:33 ` Jakub Kicinski
2026-10-04 21:10 ` netdev-bot+sashiko
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=179114822219.434549.6284648991914161094@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=Frank.Sae@motor-comm.com \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=jianmin.wang@motor-comm.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=kyle.switch@motor-comm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=ming.xu@motor-comm.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=xiaolin.xu@motor-comm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®