Re: [RFC PATCH net-next v2 0/2] net: pse-pd: Add LTC4266 PSE controller driver

From: Kory Maincent

Date: Mon Aug 24 2026 - 08:49:48 EST


Hello Kyle,

Sadly, we won't present together at the next ELCE, but well, we still can drink a beer together. Are you going anyway?

On 8/20/26 16:25, Kyle Swenson wrote:
This RFC series intends to continue discussion around the support for
the LTC4266, an older PSE controller that supports powering Type 1 and
Type 2 PDs.

This chip has four individually controllable ports, each with its own
detection, classification and current-limiting abilities. The driver
declares the static power budgeting strategy.

The LTC4266 only enforces a current limit (I_CUT and I_LIM), not a power
limit, so an admin power limit has to be turned into a current limit.
There are two problems that fall out of this I don't feel like I've got
a great solution to either and would welcome feedback, hence the 2nd RFC
version.

Of course every controller is doing it on its own way ...
I have taken a look at your driver, it would be more precise to use the voltage used on each ports instead of the constant LTC4266_VPORT_MIN_MV.
I don't have the datasheet of the registers but does a read voltage return a value even with no PD plugged?
BTW I don't understand why in ltc4266_pi_set_pw_limit you are using the detected class for power comparison. If the user wants to set a power above the current detected class, well lets allow him to do so. Also this will prevent any power limit set if no PD is plugged which is not good.

The first problem is programming the current limit from the
admin-specified power limit for power limits other than a specific PD
class. For this, I replaced the linear regression in the first RFC with
the minimum port voltage for a Type 2 PSE (50V, from Table 33-11 in the
IEEE 802.3 spec) to convert power to current.

See above, please use a measured voltage for more precision.
> The second problem is that when the admin does something like

ethtool --set-pse eth1 c33-pse-avail-pw-limit 10000

the command fails with:

netlink error: Can't calculate the current, PSE voltage read is 0
netlink error: Result not representable

unless the PSE port has been enabled first, and the PSE has detected and
classified a PD on that port. I'm hopeful I'm just missing something I
can do differently in this driver, but if not I'm open to adjusting
things at other layers to support this.

To have this working the pi_get_voltage should return some value even with no PD plugged.

I am replying only here for now. I will take a look more deeply on your code when this is solved. Is it ok for you?

Also I think your code is rather ready, so you could remove the RFC prefix. With it, the nedev check are not triggered.

Also in the 2nd patch you should add yourself in the MAINTAINERS file for this new driver.

Regards,
--
Köry Maincent, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com