mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 03:27:30 -04:00
net: ethtool: add KSZ87xx low-loss cable PHY tunables
Introduce vendor-specific PHY tunable identifiers to control the KSZ87xx low-loss cable erratum handling through the ethtool PHY tunable interface. The following tunables are added: - a boolean "short-cable" tunable, applying a documented and conservative preset intended for short or low-loss Ethernet cables; - an integer LPF bandwidth tunable, allowing advanced adjustment of the receiver low-pass filter bandwidth; - an integer DSP EQ initial value tunable, allowing advanced tuning of the PHY equalizer initialization. The actual behavior is implemented by the corresponding PHY and switch drivers. Reviewed-by: Marek Vasut <marex@nabladev.com> Reviewed-by: Nicolai Buchwitz <nb@tipi-net.de> Signed-off-by: Fidelio Lawson <fidelio.lawson@exotec.com> Link: https://patch.msgid.link/20260609-ksz87xx_errata_low_loss_connections-v10-2-9ba4418cf3db@exotec.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
014f0c98cf
commit
13655144dd
@@ -291,6 +291,9 @@ enum phy_tunable_id {
|
||||
ETHTOOL_PHY_DOWNSHIFT,
|
||||
ETHTOOL_PHY_FAST_LINK_DOWN,
|
||||
ETHTOOL_PHY_EDPD,
|
||||
ETHTOOL_PHY_SHORT_CABLE_PRESET,
|
||||
ETHTOOL_PHY_LPF_BW,
|
||||
ETHTOOL_PHY_DSP_EQ_INIT_VALUE,
|
||||
/*
|
||||
* Add your fresh new phy tunable attribute above and remember to update
|
||||
* phy_tunable_strings[] in net/ethtool/common.c
|
||||
|
||||
@@ -101,6 +101,9 @@ phy_tunable_strings[__ETHTOOL_PHY_TUNABLE_COUNT][ETH_GSTRING_LEN] = {
|
||||
[ETHTOOL_PHY_DOWNSHIFT] = "phy-downshift",
|
||||
[ETHTOOL_PHY_FAST_LINK_DOWN] = "phy-fast-link-down",
|
||||
[ETHTOOL_PHY_EDPD] = "phy-energy-detect-power-down",
|
||||
[ETHTOOL_PHY_SHORT_CABLE_PRESET] = "phy-short-cable-preset",
|
||||
[ETHTOOL_PHY_LPF_BW] = "phy-lpf-bandwidth",
|
||||
[ETHTOOL_PHY_DSP_EQ_INIT_VALUE] = "phy-dsp-eq-init-value",
|
||||
};
|
||||
|
||||
#define __LINK_MODE_NAME(speed, type, duplex) \
|
||||
|
||||
@@ -3133,6 +3133,7 @@ static int ethtool_phy_tunable_valid(const struct ethtool_tunable *tuna)
|
||||
switch (tuna->id) {
|
||||
case ETHTOOL_PHY_DOWNSHIFT:
|
||||
case ETHTOOL_PHY_FAST_LINK_DOWN:
|
||||
case ETHTOOL_PHY_SHORT_CABLE_PRESET:
|
||||
if (tuna->len != sizeof(u8) ||
|
||||
tuna->type_id != ETHTOOL_TUNABLE_U8)
|
||||
return -EINVAL;
|
||||
@@ -3142,6 +3143,12 @@ static int ethtool_phy_tunable_valid(const struct ethtool_tunable *tuna)
|
||||
tuna->type_id != ETHTOOL_TUNABLE_U16)
|
||||
return -EINVAL;
|
||||
break;
|
||||
case ETHTOOL_PHY_LPF_BW:
|
||||
case ETHTOOL_PHY_DSP_EQ_INIT_VALUE:
|
||||
if (tuna->len != sizeof(u32) ||
|
||||
tuna->type_id != ETHTOOL_TUNABLE_U32)
|
||||
return -EINVAL;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user