Commit 1176978e authored by Kory Maincent (Dent Project)'s avatar Kory Maincent (Dent Project) Committed by Jakub Kicinski
Browse files

net: ethtool: Add support for new power domains index description



Report the index of the newly introduced PSE power domain to the user,
enabling improved management of the power budget for PSE devices.

Signed-off-by: default avatarKory Maincent (Dent Project) <kory.maincent@bootlin.com>
Reviewed-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/20250617-feature_poe_port_prio-v14-5-78a1a645e2ee@bootlin.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 50f8b341
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1406,6 +1406,10 @@ attribute-sets:
        type: nest
        multi-attr: true
        nested-attributes: c33-pse-pw-limit
      -
        name: pse-pw-d-id
        type: u32
        name-prefix: ethtool-a-
  -
    name: rss
    attr-cnt-name: __ethtool-a-rss-cnt
@@ -2229,6 +2233,7 @@ operations:
            - c33-pse-ext-substate
            - c33-pse-avail-pw-limit
            - c33-pse-pw-limit-ranges
            - pse-pw-d-id
      dump: *pse-get-op
    -
      name: pse-set
+4 −0
Original line number Diff line number Diff line
@@ -1789,6 +1789,7 @@ Kernel response contents:
                                                      limit of the PoE PSE.
  ``ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES``       nested  Supported power limit
                                                      configuration ranges.
  ``ETHTOOL_A_PSE_PW_D_ID``                      u32  Index of the PSE power domain
  ==========================================  ======  =============================

When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` attribute identifies
@@ -1862,6 +1863,9 @@ identifies the C33 PSE power limit ranges through
If the controller works with fixed classes, the min and max values will be
equal.

The ``ETHTOOL_A_PSE_PW_D_ID`` attribute identifies the index of PSE power
domain.

PSE_SET
=======

+3 −0
Original line number Diff line number Diff line
@@ -1098,6 +1098,9 @@ int pse_ethtool_get_status(struct pse_control *psec,
	pcdev = psec->pcdev;
	ops = pcdev->ops;
	mutex_lock(&pcdev->lock);
	if (pcdev->pi[psec->id].pw_d)
		status->pw_d_id = pcdev->pi[psec->id].pw_d->id;

	ret = ops->pi_get_admin_state(pcdev, psec->id, &admin_state);
	if (ret)
		goto out;
+2 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ struct pse_pw_limit_ranges {
/**
 * struct ethtool_pse_control_status - PSE control/channel status.
 *
 * @pw_d_id: PSE power domain index.
 * @podl_admin_state: operational state of the PoDL PSE
 *	functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
 * @podl_pw_status: power detection status of the PoDL PSE.
@@ -135,6 +136,7 @@ struct pse_pw_limit_ranges {
 *	ranges
 */
struct ethtool_pse_control_status {
	u32 pw_d_id;
	enum ethtool_podl_pse_admin_state podl_admin_state;
	enum ethtool_podl_pse_pw_d_status podl_pw_status;
	enum ethtool_c33_pse_admin_state c33_admin_state;
+1 −0
Original line number Diff line number Diff line
@@ -652,6 +652,7 @@ enum {
	ETHTOOL_A_C33_PSE_EXT_SUBSTATE,
	ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT,
	ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES,
	ETHTOOL_A_PSE_PW_D_ID,

	__ETHTOOL_A_PSE_CNT,
	ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
Loading