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.

[参考译文] AM6548:Linux 中支持 SR 2.0 PRU-ICSSG 多播地址过滤器

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1373893/am6548-sr-2-0-pru-icssg-multicast-address-filter-support-in-linux

器件型号:AM6548

工具与软件:

继续先前的相关主题...

...我看到 Linux 驱动程序提供当前的 AM65x 平台 SDK(09.01.00.01)现在使用 FDB 实现多播地址过滤。  但是、查看该驱动程序中的代码并未回答(所有)上一主题中未解决的问题。

请您澄清以下几点:

1:驱动程序 将(在 icssg_switch_map.h 中)  number_of_FDB_Bucket_entries 定义为4。  我是否可以假设这必须与 ICSSG_FDB_GEN_CFG1寄存器中 FDB_Bucket_SIZE 字段的配置相匹配(默认为4 (字段值0b10))?  如果不是、如何 选择 NUMBER_OF_FDB_Bucket_ENTRIES 的正确值?

2:驱动程序还将 PRUETH_SWITCH_FDB_MASK 定义为((size_of_FDB/number_of_FDB_Bucket_entries)- 1)、并且 size_of_FDB 固定为2048。  这个屏蔽选择[0..512)范围内的值。  此掩码是否需要 与 FDB CFG1寄存器中 FDB_HASH_SIZE 字段的配置相对应?  默认情况下、我认为它看起来似乎不是、因为 FDB_HASH_SIZE 字段默认为0b100、选择1024而不是512的哈希大小。  这是缺陷还是两种配置不相关?

3: 从我的上一个主题:

您是否还能准确解释 MII G RT FDB CFG1寄存器中以下字段的含义:

  • FDB_HASH_SIZE -这与宽边时隙条目数是否相关?  它是否必须匹配用于将基于多播地址和滤波器 ID 的 CRC 转换为宽边时隙索引的掩码(例如0x1ff)?  否则、它指的是什么?
  • FDB_Bucket_size -这是否指可以 "附加"到相同哈希值/宽边时隙索引的 FDB 条目数?  否则、它指的是什么?

如果多播地址和过滤器 ID 哈希的两种不同组合为相同的值(宽边时隙索引)、FDB 将如何管理此冲突?  是否将相同的 FDB 条目应用于哈希值相同的所有此类组合?

4:在 icssg_prueth.c 中定义的驱动程序函数 EMAC_nDO_SET_RX_MODE_WORK() 似乎会擦除所有 FDB 条目。  我可以看到、这意味着更改一个 EMAC 接口的接收配置会干扰同一 ICSSG 上另一个 EMAC 接口的当前多播地址过滤器配置-是这样吗?  如果是这样,它似乎是一个缺陷的驱动程序。  执行此操作的正确方法是否是读取-修改-写入每个 FDB 条目、以复位与要初始化的端口对应的 FID_C2位、同时使与另一个端口对应的位保持不变?

5:从我的上一个主题:

  • 在我的实验中、似乎 当 同一  ICSSG 上的对等端口  直接连接时、入站多播帧的过滤方式与直接连接不同 ICSSG 上的端口时发生的情况不同。  特别是、在第一种情况下、FDB 条目中的端口0和端口1位似乎都需要设置。  是这样吗?  请您解释一下为什么会这样。

提前感谢您的帮助。

Ian

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

    你好、Ian、

    请查看以下问题的答案:

    1.是的,这是正确的。

    2.掩码必须与 FDB_HASH_SIZE (=  size_of_FDB/number_of_FDB_Bucket_entries)匹配。 是的、默认情况下、这是一个缺陷  FDB_HASH_SIZE  当 FDB_Bucket_size 默认为4时、应为512。  因为 SIZE_OF_FDB 固定为2048。 这将在 AM64x 10.0版本中解决、并且我们未计划 AM65x 版本。

    3.  fdb_hash_size -这是宽边时隙的数量。 是的、掩码应匹配(FDB_HASH_SIZE -1)。
     FDB_Bucket_size -  正确。 这是 具有相同哈希值/宽边时隙索引的 FDB 条目数。

    通过示例进行澄清:FDB_HASH_SIZE = 512和 FDB_BuckER_SIZE =4
    这意味着我们有512个宽边插槽。 每个插槽有4个 FDB 条目。

    因此、当发生冲突时、最多可将4个唯一 FDB 条目哈希化为相同的哈希值。 如果有超过4个具有相同哈希值(
    或槽索引)的组合、  则在该条目为非静态时将替换最后一个 FDB 桶。

    4.是的、它会擦除所有 FDB 条目、但也会从 netdev 维护的地址列表中逐个添加 FDB 条目。  例如、当链路发生更改时、此驱动程序函数将删除整个 FDB 表、然后将修改后的条目值重新添加到 FDB 中。 是的、读取-修改-写入是更新 FDB 条目的正确方式。

    5.这是对您的问题的正确理解吗? - 从端口 A 传输多播帧,环回到端口 B 并将被接收。 在相同不同的 ICSSG 情况下、这是相同的。 您还可以解释流量的方向(例如、出站 ICSSG0 MAC2 ->入站 ICSSG 0 MAC1)以及在所有情况下相应地设置的位吗?

    在双 MAC 模式下、如果要在端口1 (MAC1)上接收入站多播帧、则需要设置 P1位、类似地 、对于端口2 (MAC2)、需要设置 P2位。


    谢谢。此致、
    Miriam

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

    您好、Miriam:

    感谢您的答复、非常有帮助。  后续步骤:

    4:"它擦除所有 FDB 条目、但也从 netdev 维护的地址列表中逐个将 FDB 条目添加回"

    但不是擦除所有 FDB 条目会影响同一 ICSSG 上/OTHER/ EMAC 的多播滤波、并且在为/CURRENT/ EMAC 添加多播地址时不会恢复这种情况吗?  换句话说、我认为这将禁止在/OTHER/ EMAC 上接收任何多播帧、这是不希望看到的行为。  我缺少什么吗?

    5:"多播帧从端口 A 传输、环回到端口 B 并将被接收" 是。  如果 A 和 B 位于不同的 ICSSG 上、这将按预期工作:对应于目标多播地址的 FDB 条目必须设置端口 B 位才能接收它。  但是、如果 A 和 B 位于同一 ICSSG 上、则不会接收到帧、除非该 MAC 地址的 FDB 条目设置了/BOTH/端口 B 和端口 A 位(即使该帧 不应由端口 A 接收)。  这种行为是不希望看到的、至少从我的角度来看、这是因为从原则上讲、接收滤波肯定应该独立于帧的来源运行。

    Ian

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

    你好、Ian、

    4.是的,我理解您的观点,我将与我们的 Linux 驱动程序专家澄清,并回到这里。

    5.是的、正确的理解是、不必设置端口 A 的位即可在同一 ICSSG 的端口 B 上接收多播帧。 从您的上一主题"(意外地、我的实验使用了 AM65x Processor SDK v08.06.00.047随附的 EMAC 固件 v02.02.12.01。)" 我们将检查这一点,并在下周返回。

    谢谢。此致、
    Miriam

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

    谢谢 Miriam、感激。

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

    您好、Ian、

    但擦除所有 FDB 条目是否会影响同一 ICSSG 上/Other/ EMAC 的多播滤波、并且当为/current/ EMAC 添加多播地址时、此设置不会恢复?  换句话说、我认为这将禁止在/OTHER/ EMAC 上接收任何多播帧、这是不希望看到的行为。  我缺少什么吗?

    是的、这是正确的理解。

    关于 澄清 5)这将  尽早测试,因为 自从我离岗几天以来,有一些延迟。

    谢谢。此致、
    Miriam

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

    你好、Ian、

    对于查询4)、已在此处的驱动程序中进行了修复:
    net:ti:icssg-prueth:添加多播滤波支持- ti-linux-kernel/ti-linux-kernel -此 repo 包含一个 Linux 内核、该内核已与基于 kernel.org 中的开放源码 Linux 内核的出色 TI 开放源码补丁集成。 需要将对此内核的贡献发送到开源社区以供审核。

    请告知我们是否 对此有任何澄清。

    谢谢。此致、
    Miriam

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

    您好、Miriam:

    感谢您的留言、很抱歉我需要一段时间才能回复。

    如果我正确理解、相关的更改将发生在驱动程序的 EMAC_nDOW_SET_RX_MODE_Work 函数 中、该函数现在调用_DEV_MC_SYNC、而不是擦除 FDB 中的所有条目。

    但是、我认为这不能实现确保 FDB 中没有"随机"条目的;据我所见、__DEV_MC_SYNC 只会删除 设备多播地址列表中被视为过时的 MAC 地址的条目、但不会删除设备多播地址列表中没有 MAC 地址的条目。

    我认为驱动程序需要 将 FDB 条目初始化为已知的干净状态、但只有在启动与 PRU ICSSG 关联的第一个接口时才能执行此操作。  反过来、我认为这要求 驱动程序的关闭例程 从 FDB 中删除其当前多播地址、并且要求驱动程序保持运行接口的计数(以便它可以在从无运行接口转换到一个运行接口时擦除所有 FDB 条目)。

    或者更好的是、固件应通用"ERASE ALL FDB entry"命令、以便可以指定此选项应仅适用于设置了特定端口位的条目。

    我错过了什么吗?

    Ian

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

    你好、Ian、

    感谢您的查询、下面我再把它转给 Linux 驱动程序专家。 我们将通过驱动程序和固件查看此场景并回复给您。

    此致、
    Miriam

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

    你好、Ian、

    相关更改发生在驱动程序的 emac_ndo_set_rx_mode_work 函数 中、该函数现在调用__dev_mc_sync、而不是删除 FDB 中的所有条目。

    是的、这是正确的。

    我与 Linux 专家进行了讨论、我们有以下问题:

    a)这些"随机"条目究竟是什么意思?它们是如何/何时添加到 FDB 中的? 所有条目都是由内核在启动期间或运行时添加的、因此会手动添加条目。

    b)当前 _DEV_MC_SYNC 将删除 netdev 列表中的所有条目。 你可以详细说明你是什么意思"陈旧"条目这里?
      此外、添加到 FDB 中的所有 MAC 地址也将出现在 netdev 列表中。  您能否解释 netdev 列表中不包含哪些 MAC 地址?  

    c)__dev_mc_unsync(ndev, icssg_prueth_del_mcast) in emac_ndo_stop 正在从 FDB 中删除多播地址、此处有运行接口的计数。 请检查此 h ere: git.ti.com/.../icssg_prueth.c

    谢谢。此致、
    Miriam

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

    >>  a)这些"随机"条目的具体含义是什么?它们是如何/何时添加到 FDB 中的? 所有条目都是由内核在启动期间或运行时添加的、因此会手动添加条目。

    我指的是 FDB 可能包含 EMAC 驱动程序未故意添加的条目-例如、重置后 FDB 的内容不可预测、或者某些其他代理(硬件或软件)先前在驱动程序启动第一个 EMAC 接口之前写入 FDB。  换句话说,我假设原始代码的目的,清除整个 FDB 的目的是确保它是一个"干净"的状态,然后驱动程序添加多播条目-我认为是正确的 ,和良好的做法-虽然原始实现是不正确的,正如我们已经讨论和同意。

    即使在系统复位后 FDB 保证可以由硬件清零、 我认为如果在 EMAC 接口启动前 FDB 已被软件写入的话、EMAC 驱动程序仍然需要执行这个初始化。  例如、如果系统在没有系统复位的情况下重新启动、则在重新启动后、FDB 可能包含在上次运行期间添加的条目。

    >>  b)当前 __DEV_MC_SYNC 将删除  netdev 列表中的所有条目。 你可以详细说明你是什么意思"陈旧"条目这里?
      此外、添加到 FDB 中的所有 MAC 地址也将出现在 netdev 列表中。  您能否解释 netdev 列表中不包含哪些 MAC 地址?  

    如上所述、我担心 FDB 可能包含 EMAC 驱动程序未将其放在该位置的条目、因此可能指的是驱动程序不知道的 MAC 地址。  根据我的理解、当前代码不会通过调用__DEV_MC_SYNC 来清除这些位。  也许我错过了什么?

    >>  c)__dev_mc_unsync(ndev, icssg_prueth_del_mcast) in emac_ndo_stop 正在从 FDB 中删除多播地址、此处有运行接口的计数。 请检查此 h ere: git.ti.com/.../icssg_prueth.c

    也许是这样,但出于上述原因,我认为 FDB 没有被适当地清除到一个已知的状态。

    谢谢!

    Ian

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

    你好、Ian、

    例如、如果系统在未重置系统的情况下重新启动、则在重新启动后、FDB 可能包含在上次运行期间添加的条目。

    如果重新加载了 ICSSG 固件、则会清除 FDB 内容。 在双 MAC 模式下、不存在硬件在驱动程序启动接口之前向 FDB 添加条目的情况。
    我们不希望任何软件代理添加条目、而且该条目不 会出现在 netdev 列表中。 因此、在这种情况下可能不需要擦除 FDB。

    但是、如果您认为可能存在某些情况、即离散/过时的 FDB 条目是持久的、并且需要擦除 FDB、那么我们可以在此处和/或在会议上讨论此问题。

    谢谢。此致、
    Miriam

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

    你好 Miriam

    如果重新加载了 ICSSG 固件、则将清除 FDB 内容

    严格地说、我想当启动(而不是加载) ICSSG 固件时、FDB 会被清除、对吧?

    在任何情况下、如果我理解正确、我认为这将在以下情况下导致问题、假设同一 ICSSG 上有两个 EMAC 接口:

    *启动接口0 (将在片0的 PRU 上加载和启动固件、根据 上述情况将清除 FDB 内容)

    *为接口0添加多播地址(将配置 FDB 条目)

    *启动接口1 (将在片1的 PRU 上加载和启动固件,这将再次清除 FDB 内容)

    此时、为接口0多播地址配置的 FDB 条目将丢失、这是不正确的行为。

    我错过了什么吗?  如何  正确支持该序列(启动第一个接口、为第一个接口添加多播地址、启动第二个接口)?

    谢谢!

    Ian

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

    你好、Ian、

    [报价 userid="134458" url="~/support/processors-group/processors/f/processors-forum/1373893/am6548-sr-2-0-pru-icssg-multicast-address-filter-support-in-linux/5358937 #5358937"]

    此时、为接口0多播地址配置的 FDB 条目将丢失、这是不正确的行为。

    我错过了什么吗?  如何  正确支持该序列(启动第一个接口、为第一个接口添加多播地址、启动第二个接口)?

    [报价]

    是的、上述序列的问题是切片1固件在序列中加载并稍后启动、从而导致 FDB 被清除。  
    通过在启动第一个接口时(即运行接口计数从0变为非零时)加载两个切片的固件、可以正确支持上述序列。

    因此、顺序为:

    *启动接口0 (将装载和启动片0和切片1的 PRU 上的固件,根据 上述将清除 FDB 内容)

    *为接口0添加多播地址(将配置 FDB 条目)

    *启动界面1.

    有关 Linux 驱动程序实施的参考: git.ti.com/.../icssg_prueth.c

    In emac_ndo_open()

    	if (!prueth->emacs_initialized) {
    		if (prueth->emac[ICSS_SLICE0]) {
    			ret = prueth_emac_start(prueth, prueth->emac[ICSS_SLICE0]);
    			if (ret) {
    				netdev_err(ndev, "unable to start fw for slice %d", ICSS_SLICE0);
    				goto free_rx_irq;
    			}
    		}
    		if (prueth->emac[ICSS_SLICE1]) {
    			ret = prueth_emac_start(prueth, prueth->emac[ICSS_SLICE1]);
    			if (ret) {
    				netdev_err(ndev, "unable to start fw for slice %d", ICSS_SLICE1);
    				goto halt_slice0_prus;
    			}
    		}
    	}


    谢谢。此致、
    Miriam

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

    您好、Miriam:

    再次感谢您的评论。  我看到最近对 Linux 驱动程序进行更改的目的、以及 EMAC_nDO_STOP 中相应的更改、但我对 EMAC 设备打开之前和关闭之后运行的 PRU 固件的影响感到紧张、这种情况现在很可能发生。  在您的示例中、PRU 固件将在接口1调用 emac_ndo_open 之前在接口1上运行; 如果 两个接口已打开、PRU 固件将在关闭后继续在一个接口上运行、直到第二个接口也关闭。

    鉴于我们正在就 PRU-ICSSG 启动和关断序列进行其他讨论、对于将看似是重要的事件序列更改(如示例中的接口1所示)、 尤其是关于 DMA 通道的初始化和最终确定的更改、我感到非常不舒服。

     请您提供进一步的信息、以便向我保证启动和关断序列的这些更改能够正常运行。

    换句话说、在启动 PRU 固件之前必须满足哪些先决条件、以及在 PRU 固件运行时可以/无法更改哪些条件?  有没有用于记录此类内容的 PRU EMAC 固件的用户指南?

    Ian

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

    你好、Ian、

    如果我正确理解、您会担心的是、如果固件运行时接口1的 DMA 通道尚未初始化、如果存在一些传入数据包、可能会导致问题?

    但是、如果在打开期间初始化 DMA 通道之前禁用端口、这不会是问题。 同样、如果   在关闭期间 DMA 通道停止运行之前已禁用端口、也是如此。

    另外、 有必要将两个切片的固件加载在一起的原因是、我们在两个切片之间共享了一些功能实现、例如时间同步、并且 FDB 是两个切片之间的单个共享资源。

    不过、我们亦会 在内部讨论所涉及的问题、并回复所要求的细节/资料。

    谢谢。此致、
    Miriam

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

    再次感谢 Miriam。

    一个后续问题是、如果可以的话:是否需要使用新的固件版本才能配合此修订后的启动序列?如果需要、是什么版本?

    Ian

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

    你好、Ian、

    是的、您可以使用适用于 AM64x 的10.0 MCU+ SDK 版本中存在的最新固件。

    谢谢。此致、
    Miriam

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

    您好、Miriam:

    回到我之前的一个问题:

    5:"多播帧从端口 A 传出、环回到端口 B 并将被接收" 是。  如果 A 和 B 位于不同的 ICSSG 上、这将按预期工作:对应于目标多播地址的 FDB 条目必须设置端口 B 位才能接收它。  但是、如果 A 和 B 位于同一 ICSSG 上、则不会接收到帧、除非该 MAC 地址的 FDB 条目设置了/BOTH/端口 B 和端口 A 位(即使该帧 不应由端口 A 接收)。  至少从我的角度来看、这是不希望出现的行为、因为原则上、接收滤波肯定应该独立于帧的起源位置工作。
    5。 是的、正确的理解是、不必设置端口 A 的位即可在同一 ICSSG 的端口 B 上接收多播帧。 从您的上一主题"(意外地、我的实验使用了 AM65x Processor SDK v08.06.00.047随附的 EMAC 固件 v02.02.12.01。)" 我们将在我们这边检查并在下周返回。[/报价 userid="538813" url="~/support/processors-group/processors/f/processors-forum/1373893/am6548-sr-2-0-pru-icssg-multicast-address-filter-support-in-linux/5329591 #5329591"]关于 澄清 5)这将  尽早测试,因为 我离岗几天也有一些延迟。[/报价]

    您能告诉我有关此主题的当前状态吗?

    谢谢!

    Ian

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

    你好、Ian、

    正如会议上所讨论的那样、我们将在下周重复这一情况并提供情况。
     如果仍然可以重现相同问题(如果还没有)、您是否还可以尝试使用可用的最新固件?

    谢谢。此致、
    Miriam

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

    要确认:我在使用 EMAC 固件 v02.02.14.03进行测试时看到相同(错误)的行为。

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

    你好、Ian、

    5:"多播帧从端口 A 传输、环回到端口 B 并将被接收" [/报价]

    关于上述查询、您能否就以下内容提供更多详细信息:

    1. 设备是否处于 VLAN 感知模式或不知道模式?
    2. 发送的 MC 帧是已标记还是未标记?
    3. 如果已标记且能够识别 VLAN、那么应用程序/驱动程序添加的 VLAN-FID 条目是什么-特别是 VLAN-ID、VID、FID_C1详细信息? (使用的相关 IOCTL:ICSSG_PER_IOCTL_VLAN_SET_ENTRY)
    4. 如果未标记且能够识别 VLAN、则此寄存器中配置的默认 VLAN 是什么? (6.5.14.12.20 MII_G_RT_FDB_DF_VLAN 寄存器)。 以及为这些 VLAN ID 创建的相应 FID、FIDC1条目?
    5. 对于使用 IOCTL 创建的 FDB 条目(ICSSG_FDB_IOCTL_ADD_ENTRY)、
      1. 为 FID_C2设置了所有位?
      2. 作为输入参数提供的 VLAN ID 是什么?
      3. 此外、为 FID=0配置了哪些 FID_C1值?

    注意:
    FID: 过滤 ID 值。  始终 使用 IOCTL ICSSG_PER_IOCTL_VLAN_SET_ENTRY 映射 VLAN-ID 条目  
    FID_C1:是8位值(hostMember、 p1Member、p2Member 、 hostTagged、p1Tagged、   p2Tagged、 streamVid、 floodToHost)
    FID_C2:  是8位 FDB 条目值(hostMember、 p1Member、 p2Member、ageable、blocked、 安全、接触、有效)  

    谢谢。此致、
    Miriam

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

    您好、Miriam:

    1:MII_G_RT_FDB_GEN_CFG1.SMEM_VLAN_OFFSET 为零、 MII_G_RT_FDB_GEN_CFG2.FDB_VLAN_EN 为零、因此我认为这是"不知道 VLAN "模式。

    2:我的测试用例中的多播帧不包含 VLAN 标记。

    3:不适用

    4:不适用

    5:A:对于 EMAC #1 (将接收的帧)、FID_C2被设置为0x82;对于 p1Member 或 p2Member、分别为0x84

      B:VLAN_ID 始终为零

      C: 我不知道 fid_c1的值是多少;只要我能看到、它不是直接由主机设置的、除非这 只是滤波器 ID、在这种情况下、它始终为0。

    我希望这对您有所帮助、但如果您有任何其他需要、请告知我。

    Ian

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

    感谢您发送编修。

    此致、
    Miriam

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

    你好、Ian、

    您能否在两种情况下共享 ICSSG0转储:
    a)仅设置 Rx 端口位(未接收多播帧的情况)
    b)设置 Rx 端口和 Tx 端口位(  接收多播帧的情况)

    ICSSG0地址范围: 0x0B000000至0x0B03C100

    谢谢。此致、
    Miriam

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

    你好 Miriam -我刚刚通过电子邮件发送了请求的日志

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

    你好、Ian、  

    我们已经确定了报告的多播过滤问题的解决方法。 包含修复程序和相关详细信息的固件补丁通过电子邮件发送 测试此补丁后、请告知我们结果。

    谢谢。此致、
    Miriam

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

    您好、Miriam:

    如电子邮件所述、更新的固件可能已经解决了问题、但似乎引入了另一个阻止将接收到的帧传送到主机驱动程序的固件。

    Ian

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

    你好、Ian、

    感谢您对测试结果的更新、我们将进一步研究并恢复。

    谢谢。此致、
    Miriam

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

    你好、Ian、

    感谢您通过电子邮件进行的更新:使用固件补丁2、同一 ICSSG 的 EMAC 端口之间的多播测试现在已通过。  

    [报价用户 id="134458" url="~/support/processors-group/processors/f/processors-forum/1373893/am6548-sr-2-0-pru-icssg-multicast-address-filter-support-in-linux "]

    5:从我的上一个主题:

    • 在我的实验中、似乎 当 同一  ICSSG 上的对等端口  直接连接时、入站多播帧的过滤方式与直接连接不同 ICSSG 上的端口时发生的情况不同。  特别是、在第一种情况下、FDB 条目中的端口0和端口1位似乎都需要设置。  是这样吗?  请您解释一下为什么会这样。
    [报价]

    您能否确认这是否 澄清/解决了您在此主题中的所有问题? 如果是、我们可以继续、将该线程标记为已解决、然后关闭它。

    谢谢。此致、
    Miriam

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

    您好、Miriam:

    是的、我认为这回答了我所有的问题。  我想做一些更彻底的测试,以确保一切工作正常,但我建议你关闭这个线程,我将打开一个新的,如果任何意外作物。

    再次感谢您的帮助、

    Ian