Message ID | 20230203-dt-bindings-network-class-v1-0-452e0375200d@jannau.net |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp868166wrn; Fri, 3 Feb 2023 06:27:13 -0800 (PST) X-Google-Smtp-Source: AK7set9anVfPjQ2Bb5GbkXT5Gd7x1EY74PB4YOmLoyvhArQtXEC1IrBqm8DuOebuoItLxhVAoUhy X-Received: by 2002:aa7:8dd2:0:b0:593:3ab1:a144 with SMTP id j18-20020aa78dd2000000b005933ab1a144mr8890505pfr.12.1675434432971; Fri, 03 Feb 2023 06:27:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675434432; cv=none; d=google.com; s=arc-20160816; b=aW5RT5wLGFXG+0slTtjbhnllySql/J5Yw7wBfUmuNqKIPHo59U6zPTKneHjCeeJGxn LL/OPGTCIXCnANrxYOgasj7vQuhBo7UE+PrhoXv/T9qGiUJu0owNkvhmRSyth0QhmHrD zAmB2FCw3bjfYYAVvbYDcheWjWn0zCQSeER8oZ11HfO2Q87OipabjYkcQMwdlFQFMyCU UcRn3lKqpK/NzbppkXfP2OJKeVZ699nUT6QW/em6IeRSkJRtFFmC+o3FKdFKxjj2wHSl +Y1wtEzOi6+Wi3dofFJxF8TEUuL/uB1ssZP2H1F1R7luj0YbgszZKtY2tkgXQkRxzA/H z5Pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:content-transfer-encoding:mime-version :message-id:date:subject:from; bh=luFtRGk2YNm3+5VQdtG2Gfwh9Jc5EwIWP/ByEOTAULc=; b=DtG+L2NQgtTeyrbfiExyDe7V0LvbVpplF+y3H9vikbTeoqyhe3fLSmoCpRNCyt8agw egz57UVylQMqMAggPo+yvzSUlzeIZsCXZsaEQOQQe8bsB9lmhI36VMI9mMzULQ2ycilQ U50HU2HrYS/gIPSoPmnbPukPNfnMLJQ3Q+tPG7Ef/c9xyVF/gNgPKwLwROhBtlD6iSqc Mqr2jqzv3FHIDURXKY+CdqkjoseOZfcfWICBDSI2EVNVpeG8eKWEoMqfB6gUGycgjJxP xNGk63y226wrXmFVgQvXPBr7Px5OPDNHATsosceHXQOuR7JXnBOhhBFPSGtD7vnzB+o4 8AVA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z7-20020aa79487000000b005615ef4cfccsi2531190pfk.185.2023.02.03.06.27.00; Fri, 03 Feb 2023 06:27:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233310AbjBCORA (ORCPT <rfc822;il.mystafa@gmail.com> + 99 others); Fri, 3 Feb 2023 09:17:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233209AbjBCOQg (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 3 Feb 2023 09:16:36 -0500 Received: from soltyk.jannau.net (soltyk.jannau.net [144.76.91.90]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87DDC1E5C8; Fri, 3 Feb 2023 06:15:52 -0800 (PST) Received: from robin.home.jannau.net (p579ad32f.dip0.t-ipconnect.de [87.154.211.47]) by soltyk.jannau.net (Postfix) with ESMTPSA id 1EA7626F702; Fri, 3 Feb 2023 14:56:33 +0100 (CET) From: Janne Grunau <j@jannau.net> Subject: [PATCH RFC 0/3] dt-bindings: net: Add network-class.yaml schema Date: Fri, 03 Feb 2023 14:56:25 +0100 Message-Id: <20230203-dt-bindings-network-class-v1-0-452e0375200d@jannau.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAIkS3WMC/x2OzQrCMBCEX6Xs2YX8QFu9Cj6AV/GQZtd2UdKSD SqUvrupxw9mvpkVlLOwwqlZIfNbVOZUwR4aiFNII6NQZXDGeeOMRyo4SCJJo2Li8pnzE+MrqGL v246J2u5IDmp/CMo45JDitBuMMUh1IXLJzFh6a1217ckl80O+/xc3uF7OcN+2H67Qr46aAAAA To: "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Mailing List <devicetree-spec@vger.kernel.org>, Kalle Valo <kvalo@kernel.org>, van Spriel <arend@broadcom.com>, =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= <jerome.pouiller@silabs.com> Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org, Janne Grunau <j@jannau.net> X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2135; i=j@jannau.net; h=from:subject:message-id; bh=OyjiYcL5gloli8dGEKyGMwu4GJoVIhGXxdEvMCrHIM8=; b=owGbwMvMwCG2UNrmdq9+ahrjabUkhuS7QhOif7TdVFU9tO/djdrEmQq6x5wmCdx6MtPlFD/3a q9Vk4w0OkpZGMQ4GGTFFFmStF92MKyuUYypfRAGM4eVCWQIAxenAEzkVD4jw7zZ86qao5f/2Lf/ +/veuqt3f0qs45jLyL2+o/k/R6Lcp2iG/ynl5d1Vuh3rJnmf7eT5cb1W+b3WhXtZW6vbU2ZtlOY O4AEA X-Developer-Key: i=j@jannau.net; a=openpgp; fpr=8B336A6BE4E5695E89B8532B81E806F586338419 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756820335827374716?= X-GMAIL-MSGID: =?utf-8?q?1756820335827374716?= |
Series |
dt-bindings: net: Add network-class.yaml schema
|
|
Message
Janne Grunau
Feb. 3, 2023, 1:56 p.m. UTC
The Devicetree Specification, Release v0.3 specifies in section 4.3.1
a "Network Class Binding". This covers MAC address and maximal frame
size properties. "local-mac-address" and "mac-address" with a fixed
address-size of 48 bits is already in the ethernet-controller.yaml
schema so move those over.
I think the only commonly used values for address-size are 48 and 64
bits (EUI-48 and EUI-64). Unfortunately I was not able to restrict the
mac-address size based on the address-size. This seems to be an side
effect of the array definition and I was not able to restrict "minItems"
or "maxItems" based on the address-size value in an "if"-"then"-"else"
block.
An easy way out would be to restrict address-size to 48-bits for now.
I've ignored "max-frame-size" since the description in
ethernet-controller.yaml claims there is a contradiction in the
Devicetree specification. I suppose it is describing the property
"max-frame-size" with "Specifies maximum packet length ...".
My understanding from the dt-schema README is that network-class.yaml
should live in the dt-schema repository since it describes properties
from the Devicetree specification. How is the synchronization handled in
this case? The motivation for this series is to fix dtbs_check failures
for Apple silicon devices both in the tree and upcoming ones.
Signed-off-by: Janne Grunau <j@jannau.net>
---
Janne Grunau (3):
dt-bindings: net: Add network-class schema for mac-address properties
dt-bindings: wireless: bcm4329-fmac: Use network-class.yaml schema
dt-bindings: wireless: silabs,wfx: Use network-class.yaml
.../bindings/net/ethernet-controller.yaml | 18 +---------
.../devicetree/bindings/net/network-class.yaml | 40 ++++++++++++++++++++++
.../bindings/net/wireless/brcm,bcm4329-fmac.yaml | 5 ++-
.../bindings/net/wireless/silabs,wfx.yaml | 5 +--
4 files changed, 46 insertions(+), 22 deletions(-)
---
base-commit: 1b929c02afd37871d5afb9d498426f83432e71c2
change-id: 20230203-dt-bindings-network-class-8367edd679d2
Best regards,
Comments
On Fri, Feb 3, 2023 at 7:56 AM Janne Grunau <j@jannau.net> wrote: > > The Devicetree Specification, Release v0.3 specifies in section 4.3.1 > a "Network Class Binding". This covers MAC address and maximal frame > size properties. "local-mac-address" and "mac-address" with a fixed > address-size of 48 bits is already in the ethernet-controller.yaml > schema so move those over. > I think the only commonly used values for address-size are 48 and 64 > bits (EUI-48 and EUI-64). Unfortunately I was not able to restrict the > mac-address size based on the address-size. This seems to be an side > effect of the array definition and I was not able to restrict "minItems" > or "maxItems" based on the address-size value in an "if"-"then"-"else" > block. > An easy way out would be to restrict address-size to 48-bits for now. I've never seen 64-bits used... > I've ignored "max-frame-size" since the description in > ethernet-controller.yaml claims there is a contradiction in the > Devicetree specification. I suppose it is describing the property > "max-frame-size" with "Specifies maximum packet length ...". Please include it and we'll fix the spec. It is clearly wrong. 2 nios boards use 1518 and the consumer for them says it is MTU. Everything else clearly uses mtu with 1500 or 9000. > My understanding from the dt-schema README is that network-class.yaml > should live in the dt-schema repository since it describes properties > from the Devicetree specification. How is the synchronization handled in > this case? The motivation for this series is to fix dtbs_check failures > for Apple silicon devices both in the tree and upcoming ones. Let's add it to the kernel, then later we can copy it to dtschema, bump the minimum version the kernel requires, and delete the kernel copy. Rob
On 2023-02-03 08:41:28 -0600, Rob Herring wrote: > On Fri, Feb 3, 2023 at 7:56 AM Janne Grunau <j@jannau.net> wrote: > > > > The Devicetree Specification, Release v0.3 specifies in section 4.3.1 > > a "Network Class Binding". This covers MAC address and maximal frame > > size properties. "local-mac-address" and "mac-address" with a fixed > > address-size of 48 bits is already in the ethernet-controller.yaml > > schema so move those over. > > I think the only commonly used values for address-size are 48 and 64 > > bits (EUI-48 and EUI-64). Unfortunately I was not able to restrict the > > mac-address size based on the address-size. This seems to be an side > > effect of the array definition and I was not able to restrict "minItems" > > or "maxItems" based on the address-size value in an "if"-"then"-"else" > > block. > > An easy way out would be to restrict address-size to 48-bits for now. > > I've never seen 64-bits used... ZigBee and 6LoWPAN use 64-bits for example. Let's hardcode 48 bits for now as that's what all in-tree devicetrees implicitly use. If needed it can be changed later. > > I've ignored "max-frame-size" since the description in > > ethernet-controller.yaml claims there is a contradiction in the > > Devicetree specification. I suppose it is describing the property > > "max-frame-size" with "Specifies maximum packet length ...". > > Please include it and we'll fix the spec. It is clearly wrong. 2 nios > boards use 1518 and the consumer for them says it is MTU. Everything > else clearly uses mtu with 1500 or 9000. Ok, the example in the pdf is 'max-frame-size = <1518>;'. I'll include it with the description of ethernet-controller.yaml which specifies it as MTU. Janne
> > > I've ignored "max-frame-size" since the description in > > > ethernet-controller.yaml claims there is a contradiction in the > > > Devicetree specification. I suppose it is describing the property > > > "max-frame-size" with "Specifies maximum packet length ...". > > > > Please include it and we'll fix the spec. It is clearly wrong. 2 nios > > boards use 1518 and the consumer for them says it is MTU. Everything > > else clearly uses mtu with 1500 or 9000. > > Ok, the example in the pdf is 'max-frame-size = <1518>;'. I'll include > it with the description of ethernet-controller.yaml which specifies it > as MTU. You need to be careful here. Frame and MTU are different things. The IEEE 802.3 standard says nothing about MTU. I believe MTU is an IP concept. It is the size of the SDU an Ethernet PDU can carry. This is typically 1500. Historically, the max Ethernet frame size was 1518. But with 802.1Q which added the VLAN header, all modern hardware actual uses 1522 to accommodate the extra 4 bytes VLAN header. So i would not actually put max-frame-size = <1518> anywhere, because it will get copy/pasted and break VLAN setups. It looks like the ibm,emac.txt makes this error, max-frame-size = <5dc>; 0x5dc is 1500. And there are a few powerpc .dtc using 1500/0x5dc, which are probably broken. Andrew
On 2023-02-07 02:34:41 +0100, Andrew Lunn wrote: > > > > I've ignored "max-frame-size" since the description in > > > > ethernet-controller.yaml claims there is a contradiction in the > > > > Devicetree specification. I suppose it is describing the property > > > > "max-frame-size" with "Specifies maximum packet length ...". > > > > > > Please include it and we'll fix the spec. It is clearly wrong. 2 nios > > > boards use 1518 and the consumer for them says it is MTU. Everything > > > else clearly uses mtu with 1500 or 9000. > > > > Ok, the example in the pdf is 'max-frame-size = <1518>;'. I'll include > > it with the description of ethernet-controller.yaml which specifies it > > as MTU. > > You need to be careful here. Frame and MTU are different things. yes, we are aware. The description in of the property in Documentation/devicetree/bindings/net/ethernet-controller.yaml is: | Maximum transfer unit (IEEE defined MTU), rather than the | maximum frame size (there\'s contradiction in the Devicetree | Specification). The description for the property in the Devicetree is: | Specifies maximum packet length in bytes that the physical interface | can send and receive. While the "packet length" in the description is a little confusing this seems to refer to the ethernet frame size. > The IEEE 802.3 standard says nothing about MTU. I believe MTU is an IP > concept. It is the size of the SDU an Ethernet PDU can carry. This is > typically 1500. > > Historically, the max Ethernet frame size was 1518. But with 802.1Q > which added the VLAN header, all modern hardware actual uses 1522 to > accommodate the extra 4 bytes VLAN header. So i would not actually put > max-frame-size = <1518> anywhere, because it will get copy/pasted and > break VLAN setups. > > It looks like the ibm,emac.txt makes this error, max-frame-size = > <5dc>; 0x5dc is 1500. And there are a few powerpc .dtc using > 1500/0x5dc, which are probably broken. I would not say it is an error. The specification/name and use of "max-frame-size" has clearly diverged. All 4 in-tree users of this property interpret it as MTU. With the exception of the 2 nios2 boards Rob found all device trees use either 1500, 3800 or 9000 as 'max-frame-size'. I think Rob's plan to deal with this conflict between specification and actual use is to accept the use and update the description in the specification. This results in a "max-frame-size" property which describes the maximal payload / MTU. The upside of this is that we can leave all devicetrees and drivers unchanged and avoid breaking out-of-tree users. I'll fix the 2 nios2 boards since those currently end up with a MTU of 1518 in altera_tse_main.c. Janne