diff options
| author | Serge Semin <fancer.lancer@gmail.com> | 2023-07-05 23:36:48 +0300 |
|---|---|---|
| committer | Serge Semin <fancer.lancer@gmail.com> | 2026-08-13 20:37:50 +0300 |
| commit | 2d2e715278dffa7d4304ec780276761cdda90fea (patch) | |
| tree | bcfb5494aff3bd9cacd0550e36455e66a5c7e55c | |
| parent | a33ac36e1d9341cec1b66d6e07b6c78676bc0467 (diff) | |
| download | linux-2d2e715278dffa7d4304ec780276761cdda90fea.tar.gz linux-2d2e715278dffa7d4304ec780276761cdda90fea.zip | |
net: phy: add 10GBASE-X PHY connection types
The interface is defined by IEEE 802.3 Clause 48 as a PCS and PMA
sublayer. It is normally utilized to connect XGMII with the 10GBASE-CX4
(Clause 54), 10GBASE-KX4 (Clause 71), and 10GBASE-LX4 (Clause 53) PHYs.
It's an independent four Tx and Rx lanes interface with 8b/10b coding of
the full-duplex stream with constant 10Gb/s speed. 10GBASE-X PCS/PMA is
utlized by the XGXS/XAUI specifications (Clause 47).
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
| -rw-r--r-- | drivers/net/phy/phy-core.c | 1 | ||||
| -rw-r--r-- | drivers/net/phy/phy_caps.c | 1 | ||||
| -rw-r--r-- | drivers/net/phy/phylink.c | 3 | ||||
| -rw-r--r-- | include/linux/phy.h | 4 |
4 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c index d7a4a977fc8a..534abb0ab10a 100644 --- a/drivers/net/phy/phy-core.c +++ b/drivers/net/phy/phy-core.c @@ -183,6 +183,7 @@ int phy_interface_num_ports(phy_interface_t interface) case PHY_INTERFACE_MODE_SMII: case PHY_INTERFACE_MODE_1000BASEX: case PHY_INTERFACE_MODE_2500BASEX: + case PHY_INTERFACE_MODE_10GBASEX: case PHY_INTERFACE_MODE_5GBASER: case PHY_INTERFACE_MODE_10GBASER: case PHY_INTERFACE_MODE_25GBASER: diff --git a/drivers/net/phy/phy_caps.c b/drivers/net/phy/phy_caps.c index 942d43191561..ce79da372630 100644 --- a/drivers/net/phy/phy_caps.c +++ b/drivers/net/phy/phy_caps.c @@ -352,6 +352,7 @@ unsigned long phy_caps_from_interface(phy_interface_t interface) break; case PHY_INTERFACE_MODE_XGMII: + case PHY_INTERFACE_MODE_10GBASEX: case PHY_INTERFACE_MODE_RXAUI: case PHY_INTERFACE_MODE_XAUI: case PHY_INTERFACE_MODE_10GBASER: diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index c5119b54a4f8..e6cfdab4c5dc 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -272,6 +272,7 @@ static int phylink_interface_max_speed(phy_interface_t interface) return SPEED_5000; case PHY_INTERFACE_MODE_XGMII: + case PHY_INTERFACE_MODE_10GBASEX: case PHY_INTERFACE_MODE_RXAUI: case PHY_INTERFACE_MODE_XAUI: case PHY_INTERFACE_MODE_10GBASER: @@ -821,6 +822,7 @@ static int phylink_parse_mode(struct phylink *pl, case PHY_INTERFACE_MODE_XGMII: case PHY_INTERFACE_MODE_USXGMII: case PHY_INTERFACE_MODE_10G_QXGMII: + case PHY_INTERFACE_MODE_10GBASEX: case PHY_INTERFACE_MODE_10GKR: case PHY_INTERFACE_MODE_10GBASER: case PHY_INTERFACE_MODE_XLGMII: @@ -4352,6 +4354,7 @@ void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs, return; switch (state->interface) { + case PHY_INTERFACE_MODE_10GBASEX: case PHY_INTERFACE_MODE_10GBASER: state->speed = SPEED_10000; state->duplex = DUPLEX_FULL; diff --git a/include/linux/phy.h b/include/linux/phy.h index 6f9979a26892..ac225cdfe33a 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -93,6 +93,7 @@ extern const int phy_basic_ports_array[3]; * @PHY_INTERFACE_MODE_100BASEX: 100 BaseX * @PHY_INTERFACE_MODE_1000BASEX: 1000 BaseX * @PHY_INTERFACE_MODE_2500BASEX: 2500 BaseX + * @PHY_INTERFACE_MODE_10GBASEX: 10G BaseX * @PHY_INTERFACE_MODE_5GBASER: 5G BaseR * @PHY_INTERFACE_MODE_RXAUI: Reduced XAUI * @PHY_INTERFACE_MODE_XAUI: 10 Gigabit Attachment Unit Interface @@ -136,6 +137,7 @@ typedef enum { PHY_INTERFACE_MODE_100BASEX, PHY_INTERFACE_MODE_1000BASEX, PHY_INTERFACE_MODE_2500BASEX, + PHY_INTERFACE_MODE_10GBASEX, PHY_INTERFACE_MODE_5GBASER, PHY_INTERFACE_MODE_RXAUI, PHY_INTERFACE_MODE_XAUI, @@ -258,6 +260,8 @@ static inline const char *phy_modes(phy_interface_t interface) return "1000base-kx"; case PHY_INTERFACE_MODE_2500BASEX: return "2500base-x"; + case PHY_INTERFACE_MODE_10GBASEX: + return "10gbase-x"; case PHY_INTERFACE_MODE_5GBASER: return "5gbase-r"; case PHY_INTERFACE_MODE_RXAUI: |
