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.

[参考译文] Linux/am3352:使用 ALE 筛选和 VLAN 标记所需的 CPSW MAC 筛选文档

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593304/linux-am3352-cpsw-mac-filtering-documentation-needed-for-using-ale-filtering-and-vlan-tagging

器件型号:AM3352

工具/软件:Linux

在使用 TIDSK for Linux 03.02.00.05 (内核版本4.4.32)进行构建时、我已经阅读了文档:

  Linux_Core_NetCP_User's _Guide

  Linux_Core_CPSW_User's Guide

我发现、虽然文档描述了如何使用 ioctl、switch-config 工具或 ale sysfs 接口文件 ale_table、但它并未解释数据字段的含义以及为什么它们应该具有特定值。 因此、我知道我必须通过 sysfs、ioctl 或 switch-config 将值放入记录中、但我不知道要将哪些值放入哪个字段中才能实现特定的函数。

以下是上述 TI 文档的一个示例:

  通过 sysfs/ale_table 文件将 VLAN 添加到 ALE 表:

echo "v.vid=100.reg_fld_mask=0x7.unreg_fld_mask=0x2.mem_list=0x4 >... 

既不解释字段"reg_fld_mask"的作用、也不解释字段"unreg_fld_mask 或 mem_list"。
上面的示例中 VLAN 通过了哪些端口?上面的记录对数据包的影响是什么。

例如,如果要将 VLAN 100添加到端口2,并将其路由到端口1而不是端口0,值是什么(为什么)?
例如、如果我想将 van 从端口2中剥离、并让它在端口1的出口处注入不同的 VLAN、表条目是什么?

我找到的所有文档只是将记录描述为一个数字字段、您可以将信息放在其中、并使用什么机制(ioctl 等)、并且未能详细描述每个字段的用法。

在哪里可以找到描述如何使用 ALE 实现 Mac 过滤、VLAN 路由、数据包标记和取消标记等基本功能的数据?


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

    NetCP (网络协处理器)仅适用于 Keystone 器件、AM335x 器件中没有此类模块。 关于 AM335x 器件、应使用 CPSW 用户指南。

    如果您对 AM335x CPSW Linux 内核用户指南有任何疑问、敬请告知。

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

      关于 http://processors.wiki.ti.com/index.php/Linux_Core_CPSW_User%27s_Guide 上的 AM335x CPSW Linux 内核用户指南

    请告诉我本文档的哪一部分说明了如何筛选特定 MAC 地址?

    IE。 什么是 IOCTL 以及将哪些值放入 ioctl 参数中。

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

    [引用用户="Trevor Higgins"]

    请告诉我本文档的哪一部分说明了如何筛选特定 MAC 地址?

    IE。 什么是 IOCTL 以及将哪些值放入 ioctl 参数中。

    [/报价]

    我找不到任何部分(在 CPSW Linux 用户指南中)来解释如何过滤特定 MAC 地址、而是使用了 SIOCADDMULTI (添加多播 MAC 地址)和 SIOCDELMULTI (删除多播 MAC 地址)。

    查看以下指针是否将在有关 MAC 地址过滤的帮助中:

    AM335x TRM、第14章以太网子系统


    此致、
    帕维尔

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

    多播过滤与单播过滤不同、不能用于 MAC 过滤。

    从你的回答中,我想说我的问题的答案如下:

    Linux SDK 不允许使用 Mac 筛选。 我们必须阅读并理解 有关 ALE 操作的 TRM 文档、并编写我们自己的驱动程序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CPSW 驱动程序支持使用 ioctls、允许向 ALE 添加/删除条目。

    TI 在 SDK 中还编写了一个名为 switch-config 的工具、用于调试/实验添加/删除 ALE 条目。

    EVM 上控制台的"switch-config"将返回一个帮助、如如何使用该工具的列表。 "switch-config -d "将转储 ALE 的内容并显示每个条目字段的值。

    此链接指向 iotcl 命令的代码示例或框架。 下一节介绍如何添加具有或不具有 VLAN 标记的多播条目。

    processors.wiki.ti.com/.../Linux_Core_CPSW_User's_Guide

    此链接用于 switch-config 工具的 git 树:

    git.ti.com/.../switch-config