Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

doc: phy: document some PHY_INTERFACE_MODE_xxx settings

There seems to be some confusion surrounding three PHY interface modes,
specifically 1000BASE-X, 2500BASE-X and SGMII. Add some documentation
to phylib detailing precisely what these interface modes refer to.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Russell King and committed by
David S. Miller
8c25c0cb 08003d0b

+44 -1
+44 -1
Documentation/networking/phy.rst
··· 202 202 203 203 *interface* is a u32 which specifies the connection type used 204 204 between the controller and the PHY. Examples are GMII, MII, 205 - RGMII, and SGMII. For a full list, see include/linux/phy.h 205 + RGMII, and SGMII. See "PHY interface mode" below. For a full 206 + list, see include/linux/phy.h 206 207 207 208 Now just make sure that phydev->supported and phydev->advertising have any 208 209 values pruned from them which don't make sense for your controller (a 10/100 ··· 225 224 When you want to disconnect from the network (even if just briefly), you call 226 225 phy_stop(phydev). This function also stops the phylib state machine and 227 226 disables PHY interrupts. 227 + 228 + PHY interface modes 229 + =================== 230 + 231 + The PHY interface mode supplied in the phy_connect() family of functions 232 + defines the initial operating mode of the PHY interface. This is not 233 + guaranteed to remain constant; there are PHYs which dynamically change 234 + their interface mode without software interaction depending on the 235 + negotiation results. 236 + 237 + Some of the interface modes are described below: 238 + 239 + ``PHY_INTERFACE_MODE_1000BASEX`` 240 + This defines the 1000BASE-X single-lane serdes link as defined by the 241 + 802.3 standard section 36. The link operates at a fixed bit rate of 242 + 1.25Gbaud using a 10B/8B encoding scheme, resulting in an underlying 243 + data rate of 1Gbps. Embedded in the data stream is a 16-bit control 244 + word which is used to negotiate the duplex and pause modes with the 245 + remote end. This does not include "up-clocked" variants such as 2.5Gbps 246 + speeds (see below.) 247 + 248 + ``PHY_INTERFACE_MODE_2500BASEX`` 249 + This defines a variant of 1000BASE-X which is clocked 2.5 times faster, 250 + than the 802.3 standard giving a fixed bit rate of 3.125Gbaud. 251 + 252 + ``PHY_INTERFACE_MODE_SGMII`` 253 + This is used for Cisco SGMII, which is a modification of 1000BASE-X 254 + as defined by the 802.3 standard. The SGMII link consists of a single 255 + serdes lane running at a fixed bit rate of 1.25Gbaud with 10B/8B 256 + encoding. The underlying data rate is 1Gbps, with the slower speeds of 257 + 100Mbps and 10Mbps being achieved through replication of each data symbol. 258 + The 802.3 control word is re-purposed to send the negotiated speed and 259 + duplex information from to the MAC, and for the MAC to acknowledge 260 + receipt. This does not include "up-clocked" variants such as 2.5Gbps 261 + speeds. 262 + 263 + Note: mismatched SGMII vs 1000BASE-X configuration on a link can 264 + successfully pass data in some circumstances, but the 16-bit control 265 + word will not be correctly interpreted, which may cause mismatches in 266 + duplex, pause or other settings. This is dependent on the MAC and/or 267 + PHY behaviour. 268 + 228 269 229 270 Pause frames / flow control 230 271 ===========================