Re: [PATCH net-next] r8152: Add 2500baseT EEE status/configuration support

From: Daniel Golle

Date: Mon Feb 23 2026 - 20:35:39 EST


On Mon, Feb 23, 2026 at 08:20:35PM +0100, Birger Koblitz wrote:
> The r8152 driver supports the RTL8156, which is a 2.5Gbit Ethernet controller for
> USB 3.0, for which support is added for configuring and displaying the EEE
> advertisement status for 2.5GBit connections.
>
> The patch also corrects the determination of whether EEE is active to include
> the 2.5GBit connection status and make the determination dependent not on the
> desired speed configuration (tp->speed), but on the actual speed used by
> the controller. For consistency, this is corrected also for the RTL8152/3.
>
> This was tested on an Edimax EU-4307 V1.0 USB-Ethernet adapter with RTL8156,
> and a SECOMP Value 12.99.1115 USB-C 3.1 Ethernet converter with RTL8153.
>
> Signed-off-by: Birger Koblitz <mail@xxxxxxxxxxxxxxxxx>
> ---
> drivers/net/usb/r8152.c | 42 +++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 37 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
> index 49433301e7b1d5c98fc32c72f821e31335bc3527..0bc3b1b93017c80e1761b00767904ff1c2e6ac87 100644
> --- a/drivers/net/usb/r8152.c
> +++ b/drivers/net/usb/r8152.c
> @@ -213,6 +213,7 @@
> #define OCP_EEE_LPABLE 0xa5d2
> #define OCP_10GBT_CTRL 0xa5d4
> #define OCP_10GBT_STAT 0xa5d6
> +#define OCP_EEE_LPABLE2 0xa6d0
> #define OCP_EEE_ADV2 0xa6d4
> #define OCP_PHY_STATE 0xa708 /* nway state for 8153 */
> #define OCP_PHY_PATCH_STAT 0xb800
> @@ -954,6 +955,7 @@ struct r8152 {
> u16 ocp_base;
> u16 speed;
> u16 eee_adv;
> + u16 eee_adv2;
> u8 *intr_buff;
> u8 version;
> u8 duplex;
> ...
> @@ -8953,7 +8962,10 @@ static int r8152_set_eee(struct r8152 *tp, struct ethtool_keee *eee)
>
> tp->eee_en = eee->eee_enabled;
> tp->eee_adv = val;
> -
> + if (tp->support_2500full) {
> + val = linkmode_to_mii_eee_cap2_t(eee->advertised);
> + tp->eee_adv2 = val;

eee_adv2 set here is never actually written to the hardware.
ie. you are never doing
ocp_reg_write(tp, OCP_EEE_ADV2, tp->eee_adv2);
for capable NICs.