All of lore.kernel.org
 help / color / mirror / Atom feed
From: netdev-bot+sashiko@kernel.org
To: mail@birger-koblitz.de
Cc: andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, linux@armlinux.org.uk,
	andrew@lunn.ch, hkallweit1@gmail.com, linux-usb@vger.kernel.org,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	neuromoments@gmail.com
Subject: Re: [PATCH net-next v12 08/15] ax88179_178a: Add EEE configuration support for AX88179A PHYs
Date: Thu, 17 Sep 2026 21:24:59 +0000	[thread overview]
Message-ID: <178968029951.22033.7295791968219633553@kernel.org> (raw)
In-Reply-To: <20260916-ax88179a-v12-8-60c04c9924a2@birger-koblitz.de>

Thank you for your contribution! Sashiko AI review found 2 potential
issue(s) to consider:

Critical: 0 · High: 0 · Medium: 0 · Low: 2

- [Low] The patch exposes .get_eee/.set_eee (ax88179a_devices.c:209-221,
  table entries at :232-233) and activates the LPI path by populating…
- [Low] The commit message contains a non-existent part number:
  "Configure phylink to work with the PHYs in the AX88197A controllers"…

--

ax88179_178a: Add EEE configuration support for AX88179A PHYs

This adds .get_eee/.set_eee to ax88179a_ethtool_ops, both forwarding to
phylink, and copies supported_interfaces into
phylink_config.lpi_interfaces in ax88179a_phylink_setup() so phylink
considers the MAC LPI capable.

>     ax88179_178a: Add EEE configuration support for AX88179A PHYs
>
>     Configure phylink to work with the PHYs in the AX88197A controllers
>     and provide ethtool get/set eee operations calling into phylink.

[Severity: Low]
Should "AX88197A" read "AX88179A" here?  The driver only knows
AX_VERSION_AX88179A, AX88772D and AX88279, so the part number in the
changelog does not match anything in the tree.

Also, would it help to spell out which variants are affected?
ax88179a_phylink_setup() and ax88179a_ethtool_ops are shared by all three
chips, and dev->net->ethtool_ops = &ax88179a_ethtool_ops is assigned in
ax88179a_bind() without a chip check, so AX88279 gains user-configurable
EEE too, while AX88772D stays unsupported because lpi_capabilities is left
at 0 for it:

	if (!data->is_ax88772d) {
		data->phylink_config.lpi_capabilities = MAC_100FD | MAC_1000FD;
		data->phylink_config.eee_enabled_default = false;
	}

and phylink_ethtool_get_eee()/phylink_ethtool_set_eee() then return
-EOPNOTSUPP for that variant.

Finally, the message says only "configure phylink to work with the PHYs",
which does not mention the actual mechanism being added, namely declaring
the MAC's LPI-capable interfaces so phylink_create() sets
mac_supports_eee.

> diff --git a/drivers/net/usb/ax88179a_devices.c b/drivers/net/usb/ax88179a_devices.c
> index 785919e14e861..6bf1ac17aa1d5 100644
> --- a/drivers/net/usb/ax88179a_devices.c
> +++ b/drivers/net/usb/ax88179a_devices.c
> @@ -206,6 +206,20 @@ static int ax88179a_get_eeprom_len(struct net_device *net)
>  		return AX88179A_EEPROM_LEN;
>  }
>  
> +static int ax88179a_get_eee(struct net_device *net, struct ethtool_keee *edata)
> +{
> +	struct ax88179_data *ax179_data = netdev2data(net);
> +
> +	return phylink_ethtool_get_eee(ax179_data->phylink, edata);
> +}
> +
> +static int ax88179a_set_eee(struct net_device *net, struct ethtool_keee *edata)
> +{
> +	struct ax88179_data *ax179_data = netdev2data(net);
> +
> +	return phylink_ethtool_set_eee(ax179_data->phylink, edata);
> +}
> +

[ ... ]

> @@ -440,6 +456,10 @@ static int ax88179a_phylink_setup(struct usbnet *dev)
>  		phy_if_mode = PHY_INTERFACE_MODE_SGMII;
>  	}
>  
> +	memcpy(data->phylink_config.lpi_interfaces,
> +	       data->phylink_config.supported_interfaces,
> +	       sizeof(data->phylink_config.lpi_interfaces));
> +

[Severity: Low]
This isn't a bug, but what does userspace see for the Tx LPI timer now?

ax88179a_phylink_setup() never assigns phylink_config.lpi_timer_default,
so phylink_create() leaves pl->eee_cfg.tx_lpi_timer at 0, and
ax88179a_get_eee() -> phylink_ethtool_get_eee() reports 0 us via
ethtool --show-eee.

In the other direction, ethtool --set-eee <dev> tx-lpi-timer N goes
through ax88179a_set_eee() -> phylink_ethtool_set_eee() -> eee_to_eeecfg()
which stores the value, but the MAC callback drops it:

	static int ax88179a_mac_enable_tx_lpi(struct phylink_config *config, u32 timer, bool tx_clk_stop)
	{
		struct usbnet *dev = netdev_priv(to_net_dev(config->dev));

		/* AX88179A does not provide LPI timer registers */
		return ax88179_write_cmd(dev, AX_GPHY_CTL, AX_GPHY_EEE_CTRL, true, 0, NULL);
	}

so the value is accepted and echoed back by get_eee without ever reaching
hardware.

For the record, this same combination already exists upstream:
ksz_phylink_get_caps() copies supported_interfaces into lpi_interfaces
without setting lpi_timer_default, and
ksz_phylink_mac_enable_tx_lpi() documents "@timer: timer value before
entering LPI (unused)" and just returns 0.  Would setting
lpi_timer_default to whatever fixed timeout the PHY uses still be worth
doing here, so --show-eee reports something meaningful?

>  	phylink = phylink_create(&data->phylink_config, dev->net->dev.fwnode,
>  				 phy_if_mode, &ax88179a_phylink_mac_ops);
>  	if (IS_ERR(phylink))

-- 
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260916-ax88179a-v12-0-60c04c9924a2%40birger-koblitz.de

  reply	other threads:[~2026-09-17 21:25 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-16  3:23 [PATCH net-next v12 00/15] ax88179_178a: Add support for AX88179A-based chips Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 01/15] phylink: Add phylink_mac_interrupt Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-27  9:03     ` Birger Koblitz
2026-09-27 14:18       ` Andrew Lunn
2026-09-28  4:48         ` Birger Koblitz
2026-09-28 15:27           ` Andrew Lunn
2026-09-16  3:24 ` [PATCH net-next v12 02/15] phylib: Add support for PHYs with broken forced mode Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-27  9:04     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 03/15] ax88179_178a: Fix endianness of pause watermark register Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-27  9:05     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 04/15] ax88179_178a: Split driver into library and device specific code Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-19 22:04     ` Jakub Kicinski
2026-09-27  9:01       ` Birger Koblitz
2026-09-27  9:08     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 05/15] ax88179_178a: Add netdev2data() convenience function Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-27  9:09     ` Birger Koblitz
2026-09-19 22:05   ` Jakub Kicinski
2026-09-27  8:17     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 06/15] ax88179_178a: Add HW support for AX179A-based chips Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-19 22:15     ` Jakub Kicinski
2026-09-19 23:22       ` Birger Koblitz
2026-09-19 23:32         ` Jakub Kicinski
2026-09-27  9:18     ` Birger Koblitz
2026-09-19 22:12   ` Jakub Kicinski
2026-09-27  8:20     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 07/15] ax88179_178a: Add EEE configuration support for AX88179A MACs Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko
2026-09-27  9:20     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 08/15] ax88179_178a: Add EEE configuration support for AX88179A PHYs Birger Koblitz
2026-09-17 21:24   ` netdev-bot+sashiko [this message]
2026-09-27  9:21     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 09/15] ax88179_178a: Add VLAN offload support for AX88179A Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:24     ` Birger Koblitz
2026-09-27 14:24       ` Andrew Lunn
2026-09-28  4:41         ` Birger Koblitz
2026-09-28 12:28           ` Andrew Lunn
2026-09-16  3:24 ` [PATCH net-next v12 10/15] ax88179_178a: Add AX179A/AX279 multicast configuration Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:25     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 11/15] ax88179_178a: Add Suspend/resume support for AX88179A/772D/279 Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:36     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 12/15] ax88179_178a: Add ethtool get_drvinfo Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:37     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 13/15] ax88179_178a: Update driver name and information Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:38     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 14/15] ax88179_178a: Add support for AX88179A/772D/279 EEPROM access Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:40     ` Birger Koblitz
2026-09-16  3:24 ` [PATCH net-next v12 15/15] ax88796b: Add support for AX88772D, AX88179A and AX88279 Birger Koblitz
2026-09-17 21:25   ` netdev-bot+sashiko
2026-09-27  9:42     ` Birger Koblitz
2026-09-19  5:28 ` [PATCH v12 0/15] ax88179_178a: Add support for AX88179A-based chips Jianhui Xu
2026-09-19 22:30 ` [PATCH net-next v12 00/15] " patchwork-bot+netdevbpf

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=178968029951.22033.7295791968219633553@kernel.org \
    --to=netdev-bot+sashiko@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mail@birger-koblitz.de \
    --cc=netdev@vger.kernel.org \
    --cc=neuromoments@gmail.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.