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.

[参考译文] TDA4VM:TDA4VM CPSW9G 千兆 PHY 与100M PHY 冲突、如何配置 CPSW9G Mac 学习

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/989487/tda4vm-tda4vm-cpsw9g-gigabit-phy-conflict-with-100m-phy-how-to-configure-cpsw9g-mac-learning

器件型号:TDA4VM

大家好

    我们使用 tda4vm (master) cpsw9g 交换机同时连接 千兆位 PHY 和 100m PHY。  千兆位 PHY 使用 RGMII 接口、100M PHY 使用 SGMII 接口。 当我们 仅 使用100m PHY 通过 UDP 数据包传输与另一个 tda4vm (从器件)和 MCU 进行通信时、可以不丢失 UDP 数据包、 但是、当我们同时使用  千兆位 PHY 与 PC 通信(使用 iperf 工具测试超过100Mbps 的比特率)时、它将导致主 tda4vm、从 tdas4vm 和 MCU 之间丢失 UDP 数据包。 当使用 iperf 工具的比特率降至约80Mbps 时、测试 与 PC 的千兆位 PHY 通信、 不会丢失 UDP 数据包就可以了。

   奇怪的是、cpsw9g 是千兆位接口、为什么会这样呢?  下面显示了连接图。

   现在我们发现、当我们使用 iperf 测试 千兆位接口时 、100M 接口还会从 eth1接收 UDP 数据包、因此我猜 cpsw9g 没有 Mac 学习功能、或者此时无法使用。 我们如何从连接100M PHY 的 SGMII 接口过滤 UDP 封包?  

此致、

Jason

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

    您好!

    您能提供更多详细信息

    1.您使用的是哪个 SDK?

    在 A72和 R5上运行的是什么。 哪些内核正在接收数据? (如果您可以绘制具有数据路径的软件方框图、这将有所帮助)

    一定不会出现具有1G 端口的帧丢失。

    此致

    葡萄园

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

    您好 、Vineyet、

        感谢你的帮助。

        我们使用 sdk7.1。

        我们使用 iperf 工具在 A72上运行来测试千兆位 PHY、同时使用 A72上的套接字通信演示来测试 tda4a 和 MCU 之间的100m phy。 但 cpsw9g drvier 在 R5上运行。我们认为 R5首先接收数据、然后从传输到 A72。

        我们能否启用 cpsw9g VLAN 模块来解决此问题? 我们应该如何启用它?

    此致

    Jason

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

    具有如下数据路径的软件方框图:

    数据路径1:TDA4A 芯片 A72(eth1 172.16.0.100)->CPSW9G (TDA4A)端口2->100M PHY--> MCU(IP 172.16.0.1)

    数据路径2: TDA4A 芯片 A72(eth1:0 172.16.200.100)->CPSW9G (TDA4A)端口5-->Gigabit PHY--> PC(IP 172.16.200.190)

    在 Data Path2中、 我们在  TDA4A 芯片 A72 (__LW_AT__eth1:0 172.16.200.100)上使用 iperf runing 将 UDP 数据包发送到 PC(IP 172.16.200.190)、然后 CPSW9G (TDA4A)端口2将接收 UDP 数据包。我们如何过滤 来自 CPSW9G (TDA4A)端口5的数据包? 因为它会导致  数据包在数据路径1中丢失。

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

    1G 端口的帧降肯定不是预期的。--- 1G 端口没有帧丢失、但我认为100M 端口。

    此致

    Jason

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

    您好 、Vineyet、

       我们修改 CPSW9G 上端口的 vlanMemberList、如下所示:

    ----------------------------------------------------------------

    void EthHwInterVlan_setOpenPrms (Cpsw_Cfg * pCpswCfg)

    Enet_MacPort I;

    对于 VLAN 间,/* pCpswcfg->aleCfg.policerGlobalCfg.policingEn 应为 true。
    *设置为 false 可在 VLAN API 间执行驱动程序内部逻辑以自动启用策略器
    *被调用
    *
    pCpswCfg->aleCfg.policerGlobalCfg.policingEn = true;
    pCpswCfg->hostPortCfg.passPriorityTaggedUnchanged = true;

    pCpswCfg->aleCfg.modeFlags = CPSW_ALE_CFG_MODULE_EN;

    pCpswCfg->aleCfg.policerGlobalCfg.redDropEn = false;
    pCpswCfg->aleCfg.policerGlobalCfg.yellowDropEn = false;
    pCpswCfg->aleCfg.policerGlobalCfg.policerNoMatchMode = CPSW_ALE_policer_nomatch_mode_green;
    pCpswCfg->aleCfg.vlanCfg.aleVlanAwareMode = true;
    pCpswCfg->aleCfg.vlanCfg.cpswVlanAwareMode = true;
    pCpswCfg->aleCfg.vlanCfg.unknownVlanMemberListMask = 0;

    pCpswCfg->aleCfg.nwSecCfg.hostOuiNoMatchDeny = false;
    pCpswCfg->aleCfg.nwSecCfg.vid0ModeEn = true;
    pCpswCfg->aleCfg.nwSecCfg.ipPktCfg.dfltNxtHdrWhitelistEn = true;
    pCpswCfg->aleCfg.nwSecCfg.ipPktCfg.ipNxtHdrWhitelistCnt = 2U;
    pCpswCfg->aleCfg.nwSecCfg.ipPktCfg.ipNxtHdrWhitelet[0]= CPSW_TEST_IPV4_nxt_HDR_TCP;
    pCpswCfg->aleCfg.nwSecCfg.ipPktCfg.ipNxtHdrWhitelet[1]= CPSW_TEST_IPV4_nxt_HDR_UDP;

    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].learningCfg.noLearn = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].vlanCfg.dropUntagged = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.unregMcastFloodMask = 0x0;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.regMcastFloodMask = CPSW_ALE_ALL_PORT_MASK;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.forceUntaggedeEgessMask = CPSW_ALE_ALL_PORT_MASK;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.noLearnMask = 0x0;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.vidIngresCheck = 0x0;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.limitIPNxtHdr = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.disallowIPFrag = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.vlanIdInfo.tagType = ENET_VLAN_TAG_TYPE_INNER;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.vlanIdInfo.vlanid = CPSW_TEST_INTERVLAN_hostPort_PVID;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_HOST_PORT_NUM].pvidCfg.vlanMemberList = CPSW_ALE_ALL_PORT_MASK;//0x1fb;//

    对于(i = ENET_MAC_PORT_FIRST;i < CPSW_ALE_NUM_MAC_PORTS;i++)

    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].learningCfg.noLearn = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.unregMcastFloodMask = 0x0;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.regMcastFloodMask = CPSW_ALE_ALL_PORT_MASK;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.forceUntaggedessMask = CPSW_ALE_ALL_PORTS_MASK;//1<<(i+1);
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.noLearnMask = 0x0;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.vidIngresCheck = 0x0;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.limitIPNxtHdr = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.disallowIPFrag = false;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.vlanIdInfo.tagType = ENET_VLAN_TAG_TYPE_INNER;
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.vlanIdInfo.vlanid = CPSW_TEST_INTERVLAN_MACPORT_PVID_BASE + ENET_MACPORT_NORM (i);
    pCpswCfg->aleCfg.portCfg[CPSW_ALE_MACPORT_TO_ALEPORT(i)].pvidCfg.vlanMemberList = 0x1;// CPSW_ALE_ALL_PORT_MASK;

    pCpswCfg->hostPortCfg.vlanCfg.portPri = 7;
    pCpswCfg->hostPortCfg.vlanCfg.portCfi = 0;
    pCpswCfg->hostPortCfg.vlanCfg.portVID = CPSW_TEST_INTERVLAN_hostPort_PVID;
    pCpswCfg->vlanCfg.vlanAware = true;

    ----------------------------------------------------------------

    因此 、CPSW9G (TDA4A)端口2和 端口5只能与  CPSW9G (TDA4A) 主机端口通信、 但是、当我们使用 iperf 将 UDP 数据包从 CPSW9G (TDA4A) 主机端口发送到端口5时 、端口2仍然可以接收数据包。我们需要将数据包直接发送到端口5、同时主机端口可以正常与端口2通信。

    此致、

    Jason

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

    您好 Jason、

    很抱歉、一段时间后重新打开此主题。

    此问题是否仍然存在?

    此致

    葡萄园

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

    您好、Vineyet、

          问题仍然存在、我们最终使用 TCP 协议与 PORT5进行通信。

    此致、

    Jason

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

    您好!

    很抱歉耽误你的时间。 我正在为 TDA4编写 VLAN/ALE 用户指南、其中将介绍此主题。

    此致

    葡萄园

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

    您好、Vineyet、

        非常感谢。 如果可能、您能否向我发送相关的用户指南、我的电子邮件是 huangjiasheng@yihang.ai 

    此致、

    Jason

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

    您好!

    请查看此 常见问题解答

    此致

    葡萄园

x 出现错误。请重试或与管理员联系。