Message ID | 20211004191527.1610759-2-sean.anderson@seco.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Add support for Xilinx PCS | expand |
On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: > Add a property for associating PCS devices with ethernet controllers. > Because PCS has no generic analogue like PHY, I have left off the > -handle suffix. For PHYs, we used to have phy and phy-device as property names, but the modern name is "phy-handle". I think we should do the same here, so I would suggest using "pcs-handle". We actually already have LX2160A platforms using "pcs-handle", (see Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml) so we're in danger of ending up with multiple property names describing the same thing.
On 10/5/21 5:39 AM, Russell King (Oracle) wrote: > On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: >> Add a property for associating PCS devices with ethernet controllers. >> Because PCS has no generic analogue like PHY, I have left off the >> -handle suffix. > > For PHYs, we used to have phy and phy-device as property names, but the > modern name is "phy-handle". I think we should do the same here, so I > would suggest using "pcs-handle". > > We actually already have LX2160A platforms using "pcs-handle", (see > Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml) so we're > in danger of ending up with multiple property names describing the same > thing. > Either way is fine by me. --Sean
On Tue, Oct 05, 2021 at 10:39:36AM +0100, Russell King (Oracle) wrote: > On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: > > Add a property for associating PCS devices with ethernet controllers. > > Because PCS has no generic analogue like PHY, I have left off the > > -handle suffix. > > For PHYs, we used to have phy and phy-device as property names, but the > modern name is "phy-handle". I think we should do the same here, so I > would suggest using "pcs-handle". On 1G and up ethernet, we have 2 PHYs. There's the external (typically) ethernet PHY which is what the above properties are for. Then there's the on-chip serdes PHY similar to SATA, PCIe, etc. which includes the PCS part. For this part, we should use the generic PHY binding. I think we already have bindings doing that. Rob
Hi Rob, On 10/12/21 9:16 AM, Rob Herring wrote: > On Tue, Oct 05, 2021 at 10:39:36AM +0100, Russell King (Oracle) wrote: >> On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: >> > Add a property for associating PCS devices with ethernet controllers. >> > Because PCS has no generic analogue like PHY, I have left off the >> > -handle suffix. >> >> For PHYs, we used to have phy and phy-device as property names, but the >> modern name is "phy-handle". I think we should do the same here, so I >> would suggest using "pcs-handle". > > On 1G and up ethernet, we have 2 PHYs. There's the external (typically) > ethernet PHY which is what the above properties are for. Then there's > the on-chip serdes PHY similar to SATA, PCIe, etc. which includes the > PCS part. For this part, we should use the generic PHY binding. I think > we already have bindings doing that. In the 802.3 models, there are several components which convert between the MII (from the MAC) and the MDI (the physical protocol on the wire). These are the Physical Coding Sublayer (PCS), Physical Medium Attachment (PMA) sublayer, and Physical Medium Dependent (PMD) sublayer. The PMD converts between the physical layer signaling and the on-chip (or on-board) signalling. The PMA performs clock recovery and converts the serial data from the PMD into parallel data for the PCS. The PCS handles autonegotiation, CSMA/CD, and conversion to the apripriate MII for communicating with the MAC. In the above model, generic serdes devices generally correspond to the PMA/PMD sublayers. The PCS is generally a separate device, both on the hardware and software level. It provides an ethernet-specific layer on top of the more generic underlying encoding. For this reason, the PCS should be modeled as its own device, which may then contain a reference to the appropriate serdes. The above model describes physical layers such as 1000BASE-X or 10GBASE-X where the PCS/PMA/PMD is the last layer before the physical medium. In that case, the PCS could be modeled as a traditional PHY. However, when using (e.g.) SGMII, it is common for the "MDI" to be SGMII, and for another PHY to convert to 1000BASE-T. To model this correctly, the PCS/PMA/PMD layer must be considered independently from the PHY which will ultimately convert the MII to the MDI. --Sean
On Tue, Oct 12, 2021 at 11:18 AM Sean Anderson <sean.anderson@seco.com> wrote: > > Hi Rob, > > On 10/12/21 9:16 AM, Rob Herring wrote: > > On Tue, Oct 05, 2021 at 10:39:36AM +0100, Russell King (Oracle) wrote: > >> On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: > >> > Add a property for associating PCS devices with ethernet controllers. > >> > Because PCS has no generic analogue like PHY, I have left off the > >> > -handle suffix. > >> > >> For PHYs, we used to have phy and phy-device as property names, but the > >> modern name is "phy-handle". I think we should do the same here, so I > >> would suggest using "pcs-handle". > > > > On 1G and up ethernet, we have 2 PHYs. There's the external (typically) > > ethernet PHY which is what the above properties are for. Then there's > > the on-chip serdes PHY similar to SATA, PCIe, etc. which includes the > > PCS part. For this part, we should use the generic PHY binding. I think > > we already have bindings doing that. > > In the 802.3 models, there are several components which convert between > the MII (from the MAC) and the MDI (the physical protocol on the wire). > These are the Physical Coding Sublayer (PCS), Physical Medium Attachment > (PMA) sublayer, and Physical Medium Dependent (PMD) sublayer. The PMD > converts between the physical layer signaling and the on-chip (or > on-board) signalling. The PMA performs clock recovery and converts the > serial data from the PMD into parallel data for the PCS. The PCS handles > autonegotiation, CSMA/CD, and conversion to the apripriate MII for > communicating with the MAC. > > In the above model, generic serdes devices generally correspond to the > PMA/PMD sublayers. The PCS is generally a separate device, both > on the hardware and software level. It provides an ethernet-specific > layer on top of the more generic underlying encoding. For this reason, > the PCS should be modeled as its own device, which may then contain a > reference to the appropriate serdes. On the h/w I've worked on, PCS was an additional block instantiated within the PHY, so it looked like one block to s/w. But that's been almost 10 years ago now. If you do have 2 h/w blocks, one option is doing something like this: phys = <&pcs_phy>, <&sgmii_phy>; I'm okay with 'pcs-handle', but just want to make sure we're not using it where 'phys' would work. > The above model describes physical layers such as 1000BASE-X or > 10GBASE-X where the PCS/PMA/PMD is the last layer before the physical > medium. In that case, the PCS could be modeled as a traditional PHY. > However, when using (e.g.) SGMII, it is common for the "MDI" to be > SGMII, and for another PHY to convert to 1000BASE-T. To model this > correctly, the PCS/PMA/PMD layer must be considered independently from > the PHY which will ultimately convert the MII to the MDI.
On 10/12/21 12:44 PM, Rob Herring wrote: > On Tue, Oct 12, 2021 at 11:18 AM Sean Anderson <sean.anderson@seco.com> wrote: >> >> Hi Rob, >> >> On 10/12/21 9:16 AM, Rob Herring wrote: >> > On Tue, Oct 05, 2021 at 10:39:36AM +0100, Russell King (Oracle) wrote: >> >> On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: >> >> > Add a property for associating PCS devices with ethernet controllers. >> >> > Because PCS has no generic analogue like PHY, I have left off the >> >> > -handle suffix. >> >> >> >> For PHYs, we used to have phy and phy-device as property names, but the >> >> modern name is "phy-handle". I think we should do the same here, so I >> >> would suggest using "pcs-handle". >> > >> > On 1G and up ethernet, we have 2 PHYs. There's the external (typically) >> > ethernet PHY which is what the above properties are for. Then there's >> > the on-chip serdes PHY similar to SATA, PCIe, etc. which includes the >> > PCS part. For this part, we should use the generic PHY binding. I think >> > we already have bindings doing that. >> >> In the 802.3 models, there are several components which convert between >> the MII (from the MAC) and the MDI (the physical protocol on the wire). >> These are the Physical Coding Sublayer (PCS), Physical Medium Attachment >> (PMA) sublayer, and Physical Medium Dependent (PMD) sublayer. The PMD >> converts between the physical layer signaling and the on-chip (or >> on-board) signalling. The PMA performs clock recovery and converts the >> serial data from the PMD into parallel data for the PCS. The PCS handles >> autonegotiation, CSMA/CD, and conversion to the apripriate MII for >> communicating with the MAC. >> >> In the above model, generic serdes devices generally correspond to the >> PMA/PMD sublayers. The PCS is generally a separate device, both >> on the hardware and software level. It provides an ethernet-specific >> layer on top of the more generic underlying encoding. For this reason, >> the PCS should be modeled as its own device, which may then contain a >> reference to the appropriate serdes. > > On the h/w I've worked on, PCS was an additional block instantiated > within the PHY, so it looked like one block to s/w. But that's been > almost 10 years ago now. Well, perhaps the line is not as clear as I made it seem above. The PCS/PMA/PMD separation is mostly a logical one, so different platforms divide up the work differently. In addition, the naming may not align with ethernet's idea of what a PCS or PMA is. For example, on the ZynqMP, the serdes (GTH) contains its own PCS and PMD (as shown on the datasheet). However, these blocks both correspond to the PMA layer from ethernet's POV. The ethernet PCS is a block controlled via registers within the MAC's address space. > If you do have 2 h/w blocks, one option is doing something like this: > > phys = <&pcs_phy>, <&sgmii_phy>; Generally, PCSs don't export the same interface as PHYs (see e.g. drivers/net/pcs and include/linux/phylink.h). IMO it would be an abuse of the phys property to use it for a PCS as well. > I'm okay with 'pcs-handle', but just want to make sure we're not using > it where 'phys' would work. > >> The above model describes physical layers such as 1000BASE-X or >> 10GBASE-X where the PCS/PMA/PMD is the last layer before the physical >> medium. In that case, the PCS could be modeled as a traditional PHY. >> However, when using (e.g.) SGMII, it is common for the "MDI" to be >> SGMII, and for another PHY to convert to 1000BASE-T. To model this >> correctly, the PCS/PMA/PMD layer must be considered independently from >> the PHY which will ultimately convert the MII to the MDI. >
diff --git a/Documentation/devicetree/bindings/net/ethernet-controller.yaml b/Documentation/devicetree/bindings/net/ethernet-controller.yaml index b0933a8c295a..def95fa6a315 100644 --- a/Documentation/devicetree/bindings/net/ethernet-controller.yaml +++ b/Documentation/devicetree/bindings/net/ethernet-controller.yaml @@ -116,6 +116,11 @@ properties: $ref: "#/properties/phy-handle" deprecated: true + pcs: + $ref: /schemas/types.yaml#definitions/phandle + description: + Specifies a reference to a node representing a PCS device. + rx-fifo-depth: $ref: /schemas/types.yaml#/definitions/uint32 description:
Add a property for associating PCS devices with ethernet controllers. Because PCS has no generic analogue like PHY, I have left off the -handle suffix. Signed-off-by: Sean Anderson <sean.anderson@seco.com> --- .../devicetree/bindings/net/ethernet-controller.yaml | 5 +++++ 1 file changed, 5 insertions(+)