This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM625:以太网交换机连接到 RGMII 2

Guru**** 2553260 points
Other Parts Discussed in Thread: AM625

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1500268/am625-ethernet-switch-connection-to-rgmii-2

器件型号:AM625


工具/软件:

您好:

我正在尝试将以太网交换机连接到 AM625 上的 RGMII2 接口。 相关开关是 Microchip LAN8374。

我面临的问题是能够将开关 RGMII 端口连接到 AM625 的 RGMII2 接口 — 具体而言,我无法将端口节点的`以太网`属性链接到 cpsw_port2 节点、因为它会导致开关初始化失败(最终因为它找不到主节点)。 如果我将交换机连接到 cpsw3g 节点、我可以成功初始化交换机、但这似乎是将其连接到 RGMII1 接口而不是 RGMII2。

CPSW 外设的器件树配置如下:

&cpsw3g {
	bootph-all;
	pinctrl-names = "default";
	status = "okay";
	pinctrl-0 = <&ethernettx_pins_default>, <&ethernett1internalswitch_pins_default>;

	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};

/* TX Ethernet */
&cpsw_port1 {
	bootph-all;
	phy-mode = "rmii";
	phy-handle = <&cpsw3g_phy0>;
	//ti,dual-emac-pvid = <1>;
	status = "okay";
};

/* T1 Ethernet Switch */
&cpsw_port2 {
	//phy-mode = "rgmii-id";
	phy-mode = "rgmii";
	#address-cells = <1>;
	#size-cells = <0>;
	//ti,dual-emac-pvid = <2>;
	status = "okay";
	
	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};

/* Ethernet MDIO */
&cpsw3g_mdio {
	bootph-all;
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&ethernetmdio_pins_default>;

	cpsw3g_phy0: ethernet-phy@7 {
		bootph-all;
		reg = <7>;
		rx-internal-delay-ps = <1>;
        tx-internal-delay-ps = <1>;
	};
};

我的开关配置为:

lan9374: switch@0 {
	compatible = "microchip,lan9374";
	reg = <0>;
	spi-max-frequency = <44000000>;
	power-supply = <&p1v1>;
	phy-mode = "rgmii-id";
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		t1phy2a: ethernet-phy@0{
				reg = <0x0>;
		};

		t1phy2b: ethernet-phy@1{
				reg = <0x1>;
		};

		t1phy2d: ethernet-phy@2{
				reg = <0x2>;
		};

		t1phy2f: ethernet-phy@3{
				reg = <0x3>;
		};

		t1phy2e: ethernet-phy@6{
				reg = <0x6>;
		};

		t1phy2c: ethernet-phy@7{
				reg = <0x7>;
		};
	};

	ethernet-ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
				reg = <0>;
				label = "t1port2a";
				phy-mode = "internal";
				phy-handle = <&t1phy2a>;
		};

		port@1 {
				reg = <1>;
				label = "t1port2b";
				phy-mode = "internal";
				phy-handle = <&t1phy2b>;
		};

		port@2 {
				reg = <2>;
				label = "t1port2d";
				phy-mode = "internal";
				phy-handle = <&t1phy2d>;
		};

		port@3 {
				reg = <3>;
				label = "t1port2f";
				phy-mode = "internal";
				phy-handle = <&t1phy2f>;
		};

		port@4 {
				reg = <4>;
				label = "othermicro";
				phy-mode = "rmii";
				tx-internal-delay-ps = <2000>;
				rx-internal-delay-ps = <2000>;								

				fixed-link {
						speed = <100>;
						full-duplex;
				};
		};

		/* Link to AM625 */
		port@5 {
				reg = <5>;
				label = "cpu";
				phy-mode = "rgmii-id";
				tx-internal-delay-ps = <2000>;
				rx-internal-delay-ps = <2000>;
				//ethernet = <&cpsw_port2>;
				ethernet = <&cpsw3g>;

				fixed-link {
						speed = <1000>;
						full-duplex;
				};
		};

		port@6 {
				reg = <6>;
				label = "t1port2e";
				phy-mode = "internal";
				phy-handle = <&t1phy2e>;
		};

		port@7 {
				reg = <7>;
				label = "t1port2c";
				phy-mode = "internal";
				phy-handle = <&t1phy2c>;
		};
	};		
};

您能否告知 DSA 交换机应如何连接到 RGMII2?

谢谢、
Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    请注意、TI 无法支持外部交换机 、 对于如何集成 Microchip 以太网交换机、我们不能提供合适的联系人。  因为没有任何带有外部开关的 TI EVM、我们根本无法查看或测试。 此外、Microchip 是外部供应商、我们不能提供有关集成 Microchip 器件的建议。

    话虽如此、我们的客户以前已经成功集成了外部开关。 例如、其他客户的以下设备树可作为指南、说明如何格式化设备树以集成外部交换机: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1159207/am6442-issues-with-dsa-switch-at-cpsw3g-port/4379028#4379028

    如果您有后续问题、敬请告知。

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Daolin、

    我遇到的问题并不是与 Microchip 以太网交换机(看起来工作正常)有关、而是与如何将任何内部以太网交换机连接到 RGMII 2 端口有关、因为 TI 决定将两个以太网接口作为交换机来实现、而不是两个专用接口。 由于 CPSW 不支持正确的 DSA 标记协议、而是依靠 802.1q VLAN 标识符(根据文档资料 kernel.org/doc/Documentation/networking/dsa/dsa.txt,标识符具有限制)  来确定源端口和目标端口(在我看来,这是一个糟糕的设计选择)、这似乎变得更加困难。 我建议将内部开关连接到 AM625 RGMII 2 端口是一个完全有效的用例、因此我希望在如何实现这一点上获得一些支持。

    TI 是否有关于应如何实现此目标的参考资料? 我的要求是交换机的每个端口都可以在不同的 VLAN 中运行、但我不确定在连接到 CPSW 时如何对齐、CPSW 将在入口/出口上添加/删除 VLAN 标记。 DSA 交换机树是否可用于支持此功能? 如果是、您能否提供有关如何在开关树方面设置 CPSW 的任何详细信息? 或者、如果这不是解决此问题的正确方法、我能否更改 CPSW 添加/删除 VLAN 标签的行为? 我知道 CPSW 可以在开关模式下运行(我认为这会禁用 VLANing?) 但我不清楚如何在设备树中启用它。 如果我启用了它、是否仍然可以确保 RGMII 1 和 RGMII 2 保持分离、而不会交叉污染流量?

    谢谢、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    我想我在上一个答复中可能没有作出正确的解释。 我的意思是、对于如何将任何以太网交换机直接连接到 CPSW 端口、我们没有任何具体示例。 我知道将交换机连接到 CPSW RGMII 端口是有效的用例、但很遗憾、我要解释的是、我们目前没有任何 TI 特定的示例/参考、仅提供其他客户用例成功启动交换机连接的示例。  

    也就是说、我们以前已经让客户成功地集成了外部交换机。 例如、其他客户的以下设备树可作为指南、说明如何格式化设备树以集成外部交换机: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1159207/am6442-issues-with-dsa-switch-at-cpsw3g-port/4379028#4379028

    我可以问、这份参考文件是否提供了一些指导?

    >>我遇到的问题不是与 Microchip 以太网交换机(看起来工作正常)有关、而是与如何将任何内部以太网交换机连接到 RGMII 2 端口有关、因为 TI 决定将两个以太网接口实现为交换机、而不是两个专用接口

    您能解释一下“内部开关“的含义吗? 您所指的“内部开关“不是 Microchip 以太网交换机?

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    您是否让它正常工作? 我们还在系统中使用同一开关。 我已经在 SPI 下添加了 LAN9374、我们可以在引导日志中获得 LAN9374 检测到的消息、但我们仍然得到延迟探测、并且在 ifconfig 下也没有添加 LAN 端口。

    查看此票证:

    e2e.ti.com/.../am625-ethernet-switch-with-am625

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    LAN9374 是否适合您?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Daolin、

    对我迟来的回应表示歉意;过去几周我不得不处理其他一些优先事项。

    是的、“内部开关“是 Microchip LAN9374。 我们的设置如下:

    由于 cpsw_port1 和  cpsw_port2 不是 MAC、我只能将 LAN9374 CPU 端口绑定到根 cpsw3g 节点。 在 dsa.c 中、调用 of_find_net_device_by_node() 以查找交换机 CPU 端口的上游 MAC;它最终使用 class_find_device()、它查找正确类的第一个节点并停止。 这意味着我的 LAN9374 交换机最终“逻辑“连接到 RGMII1 而不是 RGMII2、这是不正确的。 我尝试通过一个快速破解来解决这个问题,让它使用第二个匹配节点而不是第一个节点;在这种情况下,交换机最终按预期从 RGMII2 逻辑降下,但不起作用(即不传递流量)。

    我可以在链接到的设备树中看到的唯一区别是 DSA,member 属性的使用。 这是合理的、因为我的 LAN9374 实际上是树中的第二个交换机、而 AM625 是根交换机、但我不明白为什么它的值设置为 0 0。 这是您所期望的吗?

    您是否能够就如何正确设置此设置提供建议? 如图所示、产品端口 P1 是一个连接到 RGMII1(作为 RMII)的 TX PHY (TI DP83826)。 P2.1-P2.4 是连接至 LAN9374 交换机的 T1 端口、而后者又连接至 RGMII2。 P1 将不使用 802.1q VLAN、但我需要 P2.1-P2.4 才能位于不同的 VLAN 中。

    此致、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Naveenkumar

    否、我们的开关虽然探测成功、但不幸仍无法正常工作。 您的驱动程序是否设置为内置或模块? 如果是后者、它们是否都已装入? 如果探头被推迟、通常意味着并非驱动程序链的所有元素都尚未加载(即交换机驱动程序,DSA 子系统的相关内核模块和 SPI 外设驱动程序)。

    谢谢、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    我的驱动程序被 添加为模块本身、而我的内核版本是 6.1.80、其中我只能选择加载为模块。

    对于 LAN9374、我必须使用 cpsw3g 作为 ethenet 端口、如果我使用 cpsw_port2、它就可以正常工作

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    在您链接到的设备树中、我能看到的唯一区别是 DSA,member 属性的使用。 这是合理的、因为我的 LAN9374 实际上是树中的第二个交换机、而 AM625 是根交换机、但我不明白为什么它的值设置为 0 0。 您预计会这样吗?

    此 DSA,成员属性似乎更多地是交换机配置属性、而不是 CPSW 属性。 在引用的设备树中、客户将 DSA,成员属性添加到他们正在使用的交换机节点、因此我无法评论他们为什么选择设置 0 0。 由于您使用的开关不是 TI 器件、因此我无法对此 DSA 成员属性提供任何官方评论。 话虽如此, https://www.kernel.org/doc/Documentation/devicetree/bindings/net/dsa/dsa.yaml 中的描述是否 有助于解释 DSA,member 属性?

    您是否能够提供有关如何正确设置此设置的建议? 如图所示、产品端口 P1 是一个连接到 RGMII1(作为 RMII)的 TX PHY (TI DP83826)。 P2.1-P2.4 是连接至 LAN9374 交换机的 T1 端口、而后者又连接至 RGMII2。 P1 将不使用 802.1q VLAN、但我需要 P2.1-P2.4 才能位于不同的 VLAN 中。
    在 dsa.c 中、调用 of_find_net_device_by_node () 以查找交换机 cpu 端口的上游 MAC、并最终使用正确的 class ()。 这意味着我的 LAN9374 交换机最终“逻辑“连接到 RGMII1 而不是 RGMII2、这是不正确的。

    让我们首先关注为什么交换机没有逻辑连接到 RGMII2,它似乎是与 Naveenkumar 的线程类似的行为。 我需要一些时间在内部讨论这个问题。 我计划使用更新星期三进行回复、如果您届时没有收到回复、请通过 ping 此主题。

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    这对您有用吗? 通过更改修补驱动程序后、我也没有任何通信。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    您能否分享解析的 DTS(即从 DTB 解析)?

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Daolin、

    很抱歉我迟来才答复这个问题;很遗憾我不得不处理其他优先事项、但现在我能够再次集中精力处理这个问题。

    请  根据请求找到已解压缩的器件树(扩展名为.txt、将无法上传.dts)、并找到随附的 e2e.ti.com/.../5327.dt.txt。

    如果您可以看一看、让我知道接下来要尝试什么、那么我们将不胜感激。

    此致、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    没问题、感谢您分享解压缩的 DTS。 我目前因业务外出、下周又回到办公室、所以我想让大家知道、下周我将能够更深入地了解情况。  

    尝试一下、能否尝试在 dts 的 aliases 属性中更改 cpsw_port1 和 cpsw_port2 交换? 其目的是尝试查看我们是否可以“欺骗“内核、将 cpsw_port2 视为 eth0。 这可能不起作用、但我认为这是一项快速测试。  

    我们不是 DSA 驱动器方面的专家、因此有关 DSA 配置的详细信息、我们需要一些时间进行进一步研究。 为实现完全透明、我还想告诉您、由于遗憾的是、我们无法物理验证 MAC 到 MAC(我们的 EVM 上没有可用硬件来测试此情况)、因此我们的支持能力也有限。 我会尽我最大的努力给你的建议,因为我认为他们。

    如果您在 NEXT 星期二之前没有收到我的回复、请发送此主题。

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    您是否让它在您的系统中工作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Daolin、

    感谢您的建议;我尝试了一下、但遗憾的是、似乎没有任何区别。 我临时在 k3-am62-main.dtsi 中进行了更改(希望这与您建议的一致):

    我们的 TX 以太网(物理连接到 RGMII 1)仍可应对此更改。

    除了在 Linux 中正确设置此项时遇到的问题外、您是否希望我们的设计能够正常工作? 我担心的是、我们计划使用 802.1q VLAN 将 LAN9374 交换机的每个端口放入一个单独的 VLAN 中、以及考虑到 TI 使用 VLAN 标签在 AM625 内部交换机的端口之间路由帧、这将如何实现。

    您的内部讨论是否就我们接下来可以尝试的内容提出了任何建议?

    此致、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    感谢您的建议;我尝试了一下、但遗憾的是它似乎没有任何区别。 我临时在 k3-am62-main.dtsi 中进行了更改(希望这与您建议的一致):

    实际上、我指的是可以添加到设备树的不同属性。 以下面的 k3-am642-evm.dts(适用于 TI AM64x EVM)为例。

    // SPDX-License-Identifier: GPL-2.0-only OR MIT
    /*
     * Copyright (C) 2020-2024 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include "k3-am642.dtsi"
    
    #include "k3-serdes.h"
    #include "k3-timesync-router.h"
    
    / {
    	compatible = "ti,am642-evm", "ti,am642";
    	model = "Texas Instruments AM642 EVM";
    
    	chosen {
    		stdout-path = &main_uart0;
    	};
    
    	aliases {
    		serial0 = &mcu_uart0;
    		serial1 = &main_uart1;
    		serial2 = &main_uart0;
    		serial3 = &main_uart3;
    		i2c0 = &main_i2c0;
    		i2c1 = &main_i2c1;
    		mmc0 = &sdhci0;
    		mmc1 = &sdhci1;
    		ethernet0 = &cpsw_port2; <----changed from &cpsw_port1 to &cpsw_port2
    		ethernet1 = &cpsw_port1; <----changed from &cpsw_port2 to &cpsw_port1
    		ethernet2 = &icssg1_emac0;
    	};

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am642-evm.dts?h=ti-linux-6.12.y#n25 

    除了在 Linux 中正确设置此设置时遇到的问题外、您希望我们的设计能够正常运行吗? 我担心的是、我们计划使用 802.1q VLAN 将 LAN9374 交换机的每个端口放入一个单独的 VLAN 中、以及考虑到 TI 使用 VLAN 标记在 AM625 内部交换机的端口之间路由帧、这将如何工作。

    让我就有关 VLAN 标记问题的问题咨询团队成员。 我模糊地记得、有一些特殊的修补程序可能已接受或未接受外部交换机上与上游相关的 VLAN 标记。 如果您没有收到星期五的回复、请 Ping 此主题。

    您的内部讨论是否就我们接下来可以尝试的内容提出了任何建议?

    遗憾的是、我们仍然非常有限、因为缺少硬件来测试外部交换机配置以提供具体建议。 如果没有办法重现问题、很难提供明确的解决方案/想法尝试...

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    让我向团队成员咨询有关 VLAN 标记问题的问题。 我模糊地记得、有一些特殊的修补程序可能已接受或未接受外部交换机上与上游相关的 VLAN 标记。 如果您尚未收到星期五的回复、请仔细阅读此主题。

    好的、我理解的是、每个 CPSW 外部端口都使用了不同的 VLAN ID、以确定需要退出来自内部主机端口的端口帧。 此外、一旦在外部端口上、就不再需要 VLAN ID、因此它会从以太网数据包中去除。

    这意味着、如果您为外部 LAN9374 交换机的每个端口使用用于 CPSW 外部端口的相同 VLAN ID、则可能会出现问题。

    例如、假设您的外部交换机连接到 eth1、CPSW eth0 使用 VLAN ID 0、CPSW eth1 使用 VLAN ID 1、此外、您的一个外部交换机端口还具有 VLAN ID 0、另一个外部交换机端口具有 VLAN ID 1。 您正在尝试让以太网帧从 CPSW 内部主机退出、通过 eth1 (VLAN ID 1) 到达 VLAN ID 为 1 的 LAN9374 端口、然后在以太网帧达到 eth1 时、VLAN ID 1 将从帧中去除、帧将无法再通过 VLAN ID 为 1 的 LAN9374 端口。 此外、如果您希望以太网帧转至 VLAN ID 0 LAN9374 端口、则该帧将无法到达外部交换机端口、因为它将通过具有 VLAN ID 0 的 eth0 退出。  

    建议确保您为外部交换机选择的 VLAN ID 与用于 CPSW 端口的 VLAN ID 不匹配。

    如果您需要进一步说明我的解释、请告诉我。  

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请忽略我之前关于 VLAN 使用情况的回答。 我仍在努力进一步了解 CPSW 使用 VLAN 的具体方式。 具体来说、关于“TI 正在使用 VLAN 标签在 AM625 内部交换机的端口之间路由帧“的声明、我需要仔细检查。

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daolin:

    感谢您的更新。

    我对 VLAN 的担心与跨越 CPSW 时如何处理标记帧有关。 例如、我可以在 Linux 下设置一个桥接器、其中包含 LAN9374 上的两个 T1 接口;两个端口都已置于 VLAN 10 中(分别将 eth0 和 eth1 的 ti、dual-emac-pvid 设置为 1 和 2) 、并且可以在两个交换机端口之间传递流量、因此交换机端口和交换机的管理接口都正常工作。

    但是、如果我将 IP 地址(与连接到交换机端口的两台设备位于同一子网中)添加到网桥接口、则无法从 AM625 ping 其中任何一台设备(我知道这台设备可以正常工作,因为它们可以相互 ping 通)。

    MIB 计数器提示流量不会跨越交换机的 CPU 端口。

    我怀疑 CPSW 不允许 eth1 进入(因为 VLAN 标签 10 与 eth1 的 PVID (2) 不匹配)、并且出口数据包在退出时会被 CPSW 剥离其 VLAN 标签。 这似乎在 MIB 计数器中得到确认:

    p0_ale_vid_ingress_drop: 48

    我还尝试了在开关模式(而非通过的双 emac 模式)下运行 CPSW  

    devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime

    但无济于事。

    您是否设法确认 CPSW 是如何处理此场景的?

    此致、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    例如、我可以在 Linux 下设置一个桥接器、其中包含 LAN9374 上的两个 T1 接口;两个端口都已置于 VLAN 10 中 ( Eth0 和 eth1 的 ti、dual-emac-pvid 分别设置为 1 和 2)、并可在两个交换机端口之间传递流量、因此交换机端口的报价管理接口起作用[/]。

    我对你在这里的发言有点困惑。 您的网络拓扑是什么? 当您说可以在两个交换机端口之间传递流量时、我假设您所说的是 LAN9374 上的两个端口? 但是、您还提到了 eth0 和 eth1、我假设它们是 AM625 CPSW 端口。 我之前的理解是、只有 eth1 (RGMII2) 通过 MAC 到 MAC 连接到 LAN9374。 您所说的是通过 eth1 在 AM625 上、您的 LAN9374 上有两个端口配置为交换机、具有可从 Linux 看到的桥接接口吗? 如果是、您是否说在 LAN9374 的两个端口上连接了两个完全独立的设备、每个设备一个? 您是如何验证流量是否成功通过的? 我假设您在没有设置 IP 地址的情况下进行验证、因为您稍后提到、当 IP 地址配置在与连接的设备相同的子网上时、ping 不会失败。

    [引述 userid=“612467" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1500268/am625-ethernet-switch-connection-to-rgmii-2/5937971

    MIB 计数器提示流量不会跨越交换机的 CPU 端口。

    我怀疑 CPSW 不允许 eth1 进入(因为 VLAN 标签 10 与 eth1 的 PVID (2) 不匹配)、并且出口数据包在退出时会被 CPSW 剥离其 VLAN 标签。 这似乎在 MIB 计数器中得到确认:

    、因为 TI 正在使用 VLAN 标签在 AM625
    内部交换机的端口之间路由帧

    在仔细检查 CPSW VLAN 使用情况后、我了解到 VLAN ID 并未专门用于内部主机端口、以区分入口数据包来自哪个外部端口。

    在中配置了 CPSW 时会发生什么情况  开关模式 是如果传入数据包没有 VLAN 标记、则默认情况下为 未标记的数据包 通过内部 CPSW 主机端口或两个外部 CPSW 端口接收数据包、将用端口 VID 标记为 0。 如果需要不同的 VID、用户可以配置此端口 VID。 然后、这些数据包将在任何端口(内部端口或 2 个外部端口)的出口上取消标记。   

    如果传入数据包具有 VLAN 标记、则作为标记的数据包、它应保留其原始标记、而不管它在哪个端口上接收。 需要注意的是、确保端口 VID(如果用户修改)与传入标记数据包的 VLAN ID 不匹配、否则在出口处、标记数据包的 VLAN ID 将被去除。 如果未修改端口 VID、则其应为默认值 0。 因此、端口 VID 应该是保留的 VLAN、或者不是连接网络中的有效 VLAN。

    如果有 CPSW  EMAC 模式 、DMA 描述符将包含接收数据包的端口的索引。  

    根据您共享的信息、您似乎需要使用 VLAN 10 标记数据包。 如果您将 CPSW 配置为交换机模式、能否检查端口 VID 是否可能配置为相同的 VLAN 10? 我认为这应该是 CPSW_PN_PORT_VLAN_REG_k 寄存器中的 PORT_VID 字段。  

    您打算将 CPSW 配置为开关模式还是 EMAC 模式?  

    如果您对我的解释还有其他疑问、请告诉我。

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daolin:

    感谢您的解释。 这是很好的知道,标记的框架,在理论上,应该通过与他们的原始 VID ,因为这应该适用于我们的用例.

    拓扑如下:

    关于我的测试、我有一台 PC 连接到 P2.1、另一台 PC 连接到 P2.2。 它们都在同一子网中分配了 IP 地址、并且可以相互 ping 通。 P2.1 和 P2.2 已添加到 VLAN 10 中的网桥接口。 AM625 具有分配给该桥接接口的 IP 地址(也在该子网中)、但无法 ping 这些设备中的任何一个。 我将使用以下命令进行设置:

    VLAN=10
    
    ip link set address aa:bb:cc:dd:ee:ff dev eth1
    
    ip link add name br0 type bridge vlan_filtering 1
    ip addr add dev br0 10.1.1.101/24
    ip link set br0 up
    
    ip link set t1port2b master br0
    ip link set t1port2a master br0
    
    bridge vlan add dev t1port2b vid ${VLAN} pvid untagged
    bridge vlan add dev t1port2a vid ${VLAN} pvid untagged
    
    ip link set t1port2b up
    ip link set t1port2a up
    
    ethtool -s t1port2b master-slave forced-master
    ethtool -s t1port2a master-slave forced-master

    (请注意,图中的 t1port2a = P2.1、而 t1port2b = P2.2)

    从昨天开始,我设法现在成功地将数据包发送到出口 — 当尝试从 AM625 在 P2.1 或 P2.2 上 ping PC 时、我可以在 Wireshark 中看到 ARP 请求(在任一台 PC 上运行)。 两台 PC 都对 ARP 做出响应、但该响应似乎并未发送到 AM625 上的 Linux 中、相反、我看到 eth1 (AM625 RGMII 2) 的 p0_ale_vid_negry_drop MIB 计数器增加。 我是否可以查看任何其他 CPSW 寄存器以了解可能发生这种情况的原因? 我假设 CPSW 器件上发生了此下降、无法在 Linux 中进行调试?

    我更倾向于在双 emac 模式下运行 CPSW、因为我需要将 eth0 (AM625 的 RGMII 1) 上的流量与 eth1 分开。 我将 按照您建议检查 CPSW_PN_PORT_VLAN_REG_k 寄存器、但我假设 EMAC 模式中未使用该寄存器?

    编辑:只是快速更新;我刚刚注意到、 仅当 CPSW 处于开关模式时 p0_ale_vid_entry_drop 才会递增。 在 emac 模式下不会递增(但数据包在任一模式下仍然无法完成)。

    感谢迄今为止的支持。

    此致、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    感谢您澄清测试结构。  

    请参阅 AM62x TRM 中的第 14.8.3.1.270 节、以查找您可以读取的寄存器、以验证它是否与您使用 p0_ale_vid_negoti_drop 看到的寄存器相匹配。

      

    您也可以转至    TRM 中的 12.3.1.4.6.18.1.19 ALE VLAN 入口检查丢弃(偏移= 3A094h)以查找该统计量代表的说明。

    我对该寄存器有一个疑问、那就是它是否向您显示了 ALE_vid_negotion_drop 或  P0 ALE_VID_ENGLISION_DROP。 有一个差异,因为  P0 表示 CPSW 的 eth0 和 eth1(外部端口)之间共享的内部主机端口。 更好的解决方案  P0 、“Rx"表示“表示从 CPU 端而不是外部端口端接收的流量。 “TX"也“也是如此、其中表示传输到 CPU 的流量、而不是从外部端口传输的流量。 我猜中的“入口“是指来自 CPU 端且正在进入内部主机端口的数据包(我将仔细检查这一点)。

    P2.1 和 P2.2 已添加到 VLAN 10 中的桥接接口。

    我有点担心您的设置的以下部分。 我的理解是、网桥 (br0) 应该是配置 VLAN 10 的网桥、而不是交换机上单独配置的 P2.1 和 P2.2。  我正在使用 https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components /Kernel/Network/CPSW3g.html#bridge-setup 中的示例 Kernel_Drivers 作为参考。

    根据示例、当 br0 配置为所需的 VLAN(在示例中,它们使用 VLAN 1)时、它将添加“CPU 端口至 VLAN 1“。 我将“CPU 端口“解释为 CPSW 的内部主机端口。 如果没有这样做、我不确定内部主机端口是否也能够使用所需的 VLAN ID 标记从 CPU 端接收到的任何未标记数据包。 也许这可能是 p0_ale_vid_negoti_drop 递增的原因(只是我本人的猜测)。

     

    bridge vlan add dev t1port2b vid ${VLAN} pvid untagged
    bridge vlan add dev t1port2a vid ${VLAN} pvid untagged

    至于 CPSW 处于双 emac 模式时 p0_ale_vid_entry_drop 为何不递增、我有几个问题

    1. 测试时、CPSW 上的 eth0(未连接到交换机的端口)是否连接到另一台设备?

    2.是否有其他 ethtool 统计数据在递增? 可能是 ALE_VID_ENTRY_DROP? (不同于  P0 ALE_VID_INGATIWAY_DROP)

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Daolin、

    我只是想提供一个快速更新来完成这一操作、因为现在开关正常工作。 剩下的问题与开关器件配置有关、而不是 TI 方面的问题。 TI 端唯一需要的修改是内核补丁、允许交换机逻辑连接到第一个可用节点以外的以太网 MAC 器件(在本例中选择 RGMII 2)。 完成该设置并更正交换机配置后、交换机将按预期运行、包括 802.1Q VLAN 功能(请注意,在我们的配置中,CPSW 处于双 EMAC 模式)。

    感谢您的支持和建议,我们在处理这个问题。

    此致、
    Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    剩余的问题与开关器件配置有关、而不是在 TI 方面。 [/报价]

    感谢对该问题进行了更新、很高兴知道 VLAN 相关问题是由交换机配置引起的、而不是由 TI 引起的。 我假设这与一些特定于设置的问题有关。

    TI 端唯一需要的修改是内核补丁、允许交换机逻辑连接到第一个可用节点以外的以太网 MAC 器件(即在本例中选择 RGMII 2)。

    是的、我仍在尝试让内部团队研究这种情况、但如果没有适当的硬件来重现问题(即我们没有在 TI EVM 上实施外部开关)、情况就很困难。

    此时、您是否仍被此问题阻止、或者您是否能够解决此问题?

    -道林

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben

    我们仍然面临使 LAN9374 与 RGMII2 配合使用的问题、需要对设备树进行任何更改或者需要对内核驱动程序进行任何更改?

    请告诉我

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Ben 和@ 你可以帮助我和 naveenkumar Muthusamy 让它工作,因为这是唯一的事情不工作在我们的硬件和具有最高优先级. 您能帮助我们进行必要的步骤明智的更改,使它发挥作用,因为我们面临许多问题,使它发挥作用. 期待中感谢您。 期待您的帮助。