OSDN Git Service

net: phy: add PHY_INTERFACE_MODE_10GBASER
authorRussell King <rmk+kernel@armlinux.org.uk>
Fri, 3 Jan 2020 20:43:17 +0000 (20:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 5 Jan 2020 23:05:35 +0000 (15:05 -0800)
Recent discussion has revealed that the use of PHY_INTERFACE_MODE_10GKR
is incorrect. Add a 10GBASE-R definition, document both the -R and -KR
versions, and the fact that 10GKR was used incorrectly.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/phy.rst
include/linux/phy.h

index e0a7c7a..1e4735c 100644 (file)
@@ -267,6 +267,24 @@ Some of the interface modes are described below:
     duplex, pause or other settings.  This is dependent on the MAC and/or
     PHY behaviour.
 
+``PHY_INTERFACE_MODE_10GBASER``
+    This is the IEEE 802.3 Clause 49 defined 10GBASE-R protocol used with
+    various different mediums. Please refer to the IEEE standard for a
+    definition of this.
+
+    Note: 10GBASE-R is just one protocol that can be used with XFI and SFI.
+    XFI and SFI permit multiple protocols over a single SERDES lane, and
+    also defines the electrical characteristics of the signals with a host
+    compliance board plugged into the host XFP/SFP connector. Therefore,
+    XFI and SFI are not PHY interface types in their own right.
+
+``PHY_INTERFACE_MODE_10GKR``
+    This is the IEEE 802.3 Clause 49 defined 10GBASE-R with Clause 73
+    autonegotiation. Please refer to the IEEE standard for further
+    information.
+
+    Note: due to legacy usage, some 10GBASE-R usage incorrectly makes
+    use of this definition.
 
 Pause frames / flow control
 ===========================
index 30e599c..5932bb8 100644 (file)
@@ -100,9 +100,11 @@ typedef enum {
        PHY_INTERFACE_MODE_2500BASEX,
        PHY_INTERFACE_MODE_RXAUI,
        PHY_INTERFACE_MODE_XAUI,
-       /* 10GBASE-KR, XFI, SFI - single lane 10G Serdes */
-       PHY_INTERFACE_MODE_10GKR,
+       /* 10GBASE-R, XFI, SFI - single lane 10G Serdes */
+       PHY_INTERFACE_MODE_10GBASER,
        PHY_INTERFACE_MODE_USXGMII,
+       /* 10GBASE-KR - with Clause 73 AN */
+       PHY_INTERFACE_MODE_10GKR,
        PHY_INTERFACE_MODE_MAX,
 } phy_interface_t;
 
@@ -176,10 +178,12 @@ static inline const char *phy_modes(phy_interface_t interface)
                return "rxaui";
        case PHY_INTERFACE_MODE_XAUI:
                return "xaui";
-       case PHY_INTERFACE_MODE_10GKR:
-               return "10gbase-kr";
+       case PHY_INTERFACE_MODE_10GBASER:
+               return "10gbase-r";
        case PHY_INTERFACE_MODE_USXGMII:
                return "usxgmii";
+       case PHY_INTERFACE_MODE_10GKR:
+               return "10gbase-kr";
        default:
                return "unknown";
        }