summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge Semin <fancer.lancer@gmail.com>2023-07-05 23:36:48 +0300
committerSerge Semin <fancer.lancer@gmail.com>2026-08-13 20:37:50 +0300
commit2d2e715278dffa7d4304ec780276761cdda90fea (patch)
treebcfb5494aff3bd9cacd0550e36455e66a5c7e55c
parenta33ac36e1d9341cec1b66d6e07b6c78676bc0467 (diff)
downloadlinux-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.c1
-rw-r--r--drivers/net/phy/phy_caps.c1
-rw-r--r--drivers/net/phy/phylink.c3
-rw-r--r--include/linux/phy.h4
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: