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.

[参考译文] TDA2EXEVM:使用 Linux SDK 设置 VLAN prio 参数、无法生效。 [Vision SDK 3.06 ][(TI-Linux)][kernel 4.4.4.84+]

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1015490/tda2exevm-use-the-linux-sdk-to-set-the-vlan-prio-parameter-it-cannot-take-effect-vision-sdk-3-06-ti-linux-kernel-4-4-84

器件型号:TDA2EXEVM

第一个:

ip link add link eth0 name eth0.6 type vlan id 6.
ifconfig eth0.6 198.19.24.96 netmask 255.255.0.0 broadcast 198.19.255.255 up

对于 VLAN 协议的 primo 字段,我使用以下方法:
1.vconfig set_forse_map 命令
ioctl 函数 SIOCSIFVLAN
3.使用 setsockopt 配置 SO_priority
上述3种方法提示 VLAN primo 提示成功、但使用独木舟接收 UDP 广播数据、发现 PRIO 始终为0。

代码:

1。

 vconfig set_foreting_map eth0.6 6

2.  

struct vlan_ioctl_args arg;
ARG.cmd = SET_VLAN_DE出_PRIORY_CMD;
arg.U.skb_priority = prio;
memcpy (arg.device1、"eth0.6"、strlen ("eth0.6"));
if (ioctl (socketfd、sIOCSIFVLAN、&arg)< 0){
 printf ("[%s][%d]设置 SIOCSIFVLAN 错误\n");

3.

int prio = 6;

if (setsockopt (socketfd、SOL_socket、SO_priority、&prio、sizeof (prio))< 0)

{}

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

    您好!

    我不熟悉独木舟。 您是否可以通过 ETH 接口发送 L2数据包并发送捕获?

    还提供所使用的所有命令和所使用的测试应用程序

    此致

    葡萄园

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

    您好、Vineyet Roy,

    该器件使用 VLAN 标签发送 UDP 广播数据、并通过 Canoe 器件上的以太网接口直接捕获原始以太网数据、无需任何过滤。 在8021q 数据中、只有 vlanid 有数据、而 prio 始终为0。

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

    您好、Vineyet Roy,

    例如:

    代码:

    socketfd = socket (AF_iNet、SOCK_DGRAM、0);

    struct ifreq IFR;
    struct sockaddr_in broadcast_addr;
    int 选项= 1;

    strcpy (IFR->IFR_name、"eth0.6");
    int ret = 0;
    RET = ioctl (socketfd、SIOCGIFBRDADDR、&IFR);

    broadcast_addr.sin 系列= AF_iNet;
    broadcast_addr.sin 端口= htons (40000);
    broadcast_addr.sin_addr.s_addr =(struct sockaddr_in*)&(IFR.IFR_broadaddr)->sin_addr.s_addr;
    setsockopt (socketfd、SOL_socket、SO_broadcast、&option、sizeof (option));


    ioctl (socketfd、SIOCGIFINDEX、&IFR);
    if (setsockopt (socketfd、SOL_socket、SO_BINDTODEVICE、(char *)&IFR、sizeof (IFR))< 0)


    #endif

    struct vlan_ioctl_args arg;
    短 QoS = 2;
    ARG.cmd = SET_VLAN_DE出_PRIORY_CMD;
    arg.U.skb_priority = 5;
    ARG.VLAN_QoS = QoS;
    #arg.u.name_type = VLAN_name_type_raW_PLUS_VID_NO_PAD;
    memcpy (arg.device1、"eth0.6"、strlen ("eth0.6"));

    if (ioctl (socketfd、SIOCSIFVLAN、&arg)< 0)






    SendTo(){}

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

    您好!

    这是一个 Linux 以太网堆栈问题。 您必须参考 Linux 文档。

    它与 TDA2x GMACSW 硬件无关。

    此致、
    斯坦利