From: Heiner Kallweit <hkallweit1@gmail.com>
To: javen <javen_xu@realsil.com.cn>,
nic_swsd@realtek.com, andrew+netdev@lunn.ch, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
horms@kernel.org
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v1 3/3] r8169: add support for chip RTL9151AS
Date: Mon, 12 Jan 2026 23:20:48 +0100 [thread overview]
Message-ID: <02c00a95-34c6-4b01-8f0a-7dbd113e26ba@gmail.com> (raw)
In-Reply-To: <20260112024541.1847-4-javen_xu@realsil.com.cn>
On 1/12/2026 3:45 AM, javen wrote:
> From: Javen Xu <javen_xu@realsil.com.cn>
>
> This patch adds support for chip RTL9151AS. Since lacking of Hardware
> version IDs, we use TX_CONFIG_V2 to recognize RTL9151AS and coming chips.
> rtl_chip_infos_extend is used to store IC information for RTL9151AS and
> coming chips. The TxConfig value between RTL9151AS and RTL9151A is
>
> different.
>
> Signed-off-by: Javen Xu <javen_xu@realsil.com.cn>
> ---
> drivers/net/ethernet/realtek/r8169.h | 3 ++-
> drivers/net/ethernet/realtek/r8169_main.c | 28 +++++++++++++++++++++--
> 2 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
> index 2c1a0c21af8d..f66c279cbee6 100644
> --- a/drivers/net/ethernet/realtek/r8169.h
> +++ b/drivers/net/ethernet/realtek/r8169.h
> @@ -72,7 +72,8 @@ enum mac_version {
> RTL_GIGA_MAC_VER_70,
> RTL_GIGA_MAC_VER_80,
> RTL_GIGA_MAC_NONE,
> - RTL_GIGA_MAC_VER_LAST = RTL_GIGA_MAC_NONE - 1
> + RTL_GIGA_MAC_VER_LAST = RTL_GIGA_MAC_NONE - 1,
> + RTL_GIGA_MAC_VER_CHECK_EXTEND
> };
>
> struct rtl8169_private;
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 9b89bbf67198..164ad6570059 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -95,8 +95,8 @@
> #define JUMBO_16K (SZ_16K - VLAN_ETH_HLEN - ETH_FCS_LEN)
>
> static const struct rtl_chip_info {
> - u16 mask;
> - u16 val;
> + u32 mask;
> + u32 val;
> enum mac_version mac_version;
> const char *name;
> const char *fw_name;
> @@ -205,10 +205,20 @@ static const struct rtl_chip_info {
> { 0xfc8, 0x040, RTL_GIGA_MAC_VER_03, "RTL8110s" },
> { 0xfc8, 0x008, RTL_GIGA_MAC_VER_02, "RTL8169s" },
>
> + /* extend chip version*/
> + { 0x7cf, 0x7c8, RTL_GIGA_MAC_VER_CHECK_EXTEND },
> +
> /* Catch-all */
> { 0x000, 0x000, RTL_GIGA_MAC_NONE }
> };
>
> +static const struct rtl_chip_info rtl_chip_infos_extend[] = {
> + { 0x7fffffff, 0x00000000, RTL_GIGA_MAC_VER_64, "RTL9151AS", FIRMWARE_9151A_1},
> +
Seems all bits except bit 31 are used for chip detection. However register is
named TX_CONFIG_V2, even though only bit 31 is left for actual tx configuration.
Is the register name misleading, or is the mask incorrect?
> + /* Catch-all */
> + { 0x00000000, 0x00000000, RTL_GIGA_MAC_NONE }
> +};
> +
> static const struct pci_device_id rtl8169_pci_tbl[] = {
> { PCI_VDEVICE(REALTEK, 0x2502) },
> { PCI_VDEVICE(REALTEK, 0x2600) },
> @@ -255,6 +265,8 @@ enum rtl_registers {
> IntrStatus = 0x3e,
>
> TxConfig = 0x40,
> + /* Extend version register */
> + TX_CONFIG_V2 = 0x60b0,
> #define TXCFG_AUTO_FIFO (1 << 7) /* 8111e-vl */
> #define TXCFG_EMPTY (1 << 11) /* 8111e-vl */
>
> @@ -2351,6 +2363,15 @@ static const struct ethtool_ops rtl8169_ethtool_ops = {
> .get_eth_ctrl_stats = rtl8169_get_eth_ctrl_stats,
> };
>
> +static const struct rtl_chip_info *rtl8169_get_extend_chip_version(u32 txconfigv2)
> +{
> + const struct rtl_chip_info *p = rtl_chip_infos_extend;
> +
> + while ((txconfigv2 & p->mask) != p->val)
> + p++;
> + return p;
> +}
> +
> static const struct rtl_chip_info *rtl8169_get_chip_version(u16 xid, bool gmii)
> {
> /* Chips combining a 1Gbps MAC with a 100Mbps PHY */
> @@ -5543,6 +5564,9 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>
> /* Identify chip attached to board */
> chip = rtl8169_get_chip_version(xid, tp->supports_gmii);
> +
> + if (chip->mac_version == RTL_GIGA_MAC_VER_CHECK_EXTEND)
> + chip = rtl8169_get_extend_chip_version(RTL_R32(tp, TX_CONFIG_V2));
> if (chip->mac_version == RTL_GIGA_MAC_NONE)
> return dev_err_probe(&pdev->dev, -ENODEV,
> "unknown chip XID %03x, contact r8169 maintainers (see MAINTAINERS file)\n",
next prev parent reply other threads:[~2026-01-12 22:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-12 2:45 [PATCH net-next v1 0/3] r8169: add dash/LTR/RTL9151AS support javen
2026-01-12 2:45 ` [PATCH net-next v1 1/3] r8169: add DASH support for RTL8127AP javen
2026-01-12 2:45 ` [PATCH net-next v1 2/3] r8169: enable LTR support javen
2026-01-12 2:45 ` [PATCH net-next v1 3/3] r8169: add support for chip RTL9151AS javen
2026-01-12 22:20 ` Heiner Kallweit [this message]
2026-01-13 2:18 ` javen
2026-01-15 10:51 ` Paolo Abeni
2026-01-15 20:15 ` Heiner Kallweit
2026-01-22 1:42 ` 许俊伟
2026-01-24 21:24 ` Heiner Kallweit
2026-01-13 10:00 ` [PATCH net-next v1 0/3] r8169: add dash/LTR/RTL9151AS support patchwork-bot+netdevbpf
2026-01-13 10:01 ` Paolo Abeni
2026-01-13 17:15 ` Heiner Kallweit
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=02c00a95-34c6-4b01-8f0a-7dbd113e26ba@gmail.com \
--to=hkallweit1@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=javen_xu@realsil.com.cn \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.com \
--cc=pabeni@redhat.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 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.