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.

[参考译文] DRA829V:[EP2000] Main2_1正在从 CPSW-9G 接收损坏的帧

Guru**** 2482105 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1454932/dra829v-ep2000-main2_1-is-receiving-corrupted-frame-from-cpsw-9g

器件型号:DRA829V

工具与软件:

尊敬的 TI 团队:

我们使用的是 PSDK7.3

下面是我们的 SW 架构、其中来自外部开关(端口7)的数据复制到内部开关的端口7。

用例:

在外部交换机中启用端口1和2的入口端口镜像、  
入口监控目标端口是外部交换机的端口7。

CPSW9G 端口7将接收数据并传递到 Main2_1内核。

端口1正在网络上发送 ARP 请求(广播)。
端口7和端口2将接收数据。

端口7已成功将此请求转发到 Main2_1。
端口2回复单播数据包、这将进入端口1和端口7 (由于端口镜像功能)。

问题:  
CPSW-9G 正在将 损坏的有效载荷传递到 Main2_1。

有效载荷中缺少突出显示的数据、Ethertype 也错误

请拨打电话以了解问题并找出根本原因。

谢谢!
Venu H.

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

    您好!

    在外部交换机中为端口1和2启用入口端口镜像、  
    入口监控目标端口是外部交换机的端口7。

    正如我先前所述、端口7只能出口端口01的镜像流量、即端口2入口数据。
    即端口7具有 Tx 和 Rx FIFO、只有 Rx FIFO 数据只能到达内部主机(CPPI)端口。 如果是来自端口1的镜像数据包、端口2将放置在端口7的 Tx FIFO 中。 因此、这些镜像流量将无法到达主机(CPPI)端口。

    Unknown 说:
    ]端口2使用单播数据包回复、这将转到端口1和端口7 (由于端口镜像功能)。

    如上所述、如果存在/可用带有单播 MAC 的 ALE 条目、则单播数据包仅从一个端口出口。

    [报价 userid="462694" url="~/support/processors-group/processors/f/processors-forum/1454932/dra829v-ep2000-main2_1-is-receiving-corrupted-frame-from-cpsw-9g "]

    有效载荷中缺少突出显示的数据、Ethertype 也错误

    [报价]

    您似乎正在应用程序中打印此内容、因为我在 SDK 中找不到 Eth_Rx 4073中的 API。
    如果您不介意、可以共享打印数据的代码段。

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    下面的函数我们在 Ethernet.c 文件中修改、将 Eth_Priv 帧传递给我们的应用函数  36404.12.24_ If_Rx 客户尽职调查 ()

    Eth_Rx 8.54类型 Eth_processRxPkt(EthDrv *drv, uint8 ctrlIdx)

    Eth_Pkt *pkt;
    Eth_Frame *FRAME;
    Eth_Frame 联络方式;
    无效*有效载荷;
    布尔 isBroadcast;
    uint16长度;
    Eth_Rx 4.70类型状态;

    PKT = EthPktQ_dequeue (&drv->rxReadyQ);
    if (空!= pkt)

    FRAME =(Eth_Frame *) pkt->buf;
    Ethertype = ntohs (FRAME->HDR.EtherType);
    len = pkt->userLen -(uint16) sizeof (Eth_Frame);
    有效载荷=帧->有效载荷;

    /*要求:MCAL-1640 */
    isBroadcast = Eth_isBcastMacAddr (frame->HDR.dstMac);

    /*要求:MCAL-1593、MCAL-4826 */
    36404.12.24_ If_Rx 客户尽职调查 (ctrlIdx、
    以太网类型、
    isBroadcast、
    frame->hdr.srcMac、
    frame->hdr.dstMac、
    (Eth_Data *)有效载荷、
    长度);

    /*4.12.454(ctrlIdx, If_Rx
    以太网类型、
    isBroadcast、
    frame->hdr.srcMac、
    (Eth_Data *)有效载荷、
    len);*/

    EthPktQ_queue (&drv->rxFreeQ、pkt);

    PKT = EthPktQ_peek (&drv->rxReadyQ);
    如果(NULL == pkt)

    STATUS = ETH_RECEIVED;
    }
    设计

    STATUS = ETH_Received_More_data_available;
    }
    }
    设计

    STATUS = ETH_NOT_RECEIVED;
    }

    返回状态;
    }

    FUNC (void、ETHIF_CODE)、4024IC_CDD If_Rx
    (
    var (uint8、自动) CtrlIdx、
    VAR(4.54, Eth_Frame 自动)帧类型,
    var (布尔值、自动) IsBroadcast、
    P2CONST (uint8、自动、ETHIF_APPL_DATA) SrcPhysAddrPtr、
    P2CONST (uint8、自动、ETHIF_APPL_DATA) DestPhysAddrPtr、
    #if (ETHIF_AR_VERSION_431 = ETHIF_ETH_AR_VERSION)
    P2CONST (Eth_Data 名片、自动、ETHIF_APPL_CONST) DataPtr、
    #else
    P2VAR (Eth_Data、自动、ETHIF_APPL_DATA) DataPtr、
    #endif
    var (uint16、自动) LenByte
    )

    uint8 * buf =(uint8 *) DataPtr;


    UART_printf ("[Main2_1]3874 Eth_Rx:len:%d、bcast:%s、EtherType:0x%04x\n"、 LenByte、 IsBroadcast? "是":"否"、 FrameType 和0xFFFFU);
    UART_printf ("[Main2_1] src_MAC_addr:%x:%x:%x:%x:%x、dst_MAC_addr:%x:%x:%x:%x:%x:%x:%x:%x \n"、
    SrcPhysAddrPtr[0]、SrcPhysAddrPtr[1]、SrcPhysAddrPtr[2]、SrcPhysAddrPtr[3]、SrcPhysAddrPtr[4]、SrcPhysAddrPtr[5]、
    DestPhysAddrPtr[0]、DestPhysAddrPtr[1]、DestPhysAddrPtr[2]、DestPhysAddrPtr[3]、DestPhysAddrPtr[4]、DestPhysAddrPtr[5]);


    UART_printf ("[Main2_1]EthApp:Eth_Rx 在线内容低于\n");
    for (i = 1;i <= LenByte;i++)

    UART_printf ("0x%x "、buf[I-1]);
    if ((i % 10)=0)
    UART_printf ("\n");
    }
    }

    谢谢!
    Venu H.

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

    您好!

    您是否可以从 IRQ 打印数据包信息(pkt->buf)并检查它是否指向正确的信息?

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    对于下面的帧、我们期望 Main2_1中有3个帧、这是正确的。
    但是长度信息不正确、
    有效载荷在前几个字节中也不正确。

    代码: 我在 ISR 中没有找到正确的位置来打印数据,所以在 Ethh_processRxPkt()中添加了

    Eth_Rx 8.54类型 Eth_processRxPkt(EthDrv *drv, uint8 ctrlIdx)

    Eth_Pkt *pkt;
    Eth_Frame *FRAME;
    Eth_Frame 联络方式;
    无效*有效载荷;
    布尔 isBroadcast;
    uint16长度;
    Eth_Rx 4.70类型状态;
    UINT8 I = 0;

    PKT = EthPktQ_dequeue (&drv->rxReadyQ);
    if (空!= pkt)

    FRAME =(Eth_Frame *) pkt->buf;
    Ethertype = ntohs (FRAME->HDR.EtherType);
    len = pkt->userLen -(uint16) sizeof (Eth_Frame);
    有效载荷=帧->有效载荷;

    UART_printf ("[Main2_1]ethertype:0x%04x、len:%d \n"、etherType、len);
    UART_printf ("[Main2_1] src_MAC_addr:%x:%x:%x:%x:%x、dst_MAC_addr:%x:%x:%x:%x:%x:%x:%x:%x \n"、
    FRAME->HDR.srcMAC[0]、FRAME->HDR.srcMAC[1]、FRAME->HDR.srcMAC[2]、FRAME->HDR.srcMAC[3]、FRAME->HDR.srcMAC[4]、FRAME->HDR.srcMAC[5]、
    frame->hdr.dstMac[0]、frame->hdr.dstMac[1]、frame->hdr.dstMac[2]、frame->hdr.dstMac[3]、frame->hdr.dstMac[4]、frame->hdr.dstMac[5]);
    UART_printf ("[Main2_1]ISR 有效负载内容低于\n");
    for (i = 1;i <= len;i++)

    UART_printf ("0x%x "、frame->payload[i-1]);
    if ((i % 10)=0)
    UART_printf ("\n");
    }
    UART_printf ("\n");

    /*要求:MCAL-1640 */
    isBroadcast = Eth_isBcastMacAddr (frame->HDR.dstMac);

    /*要求:MCAL-1593、MCAL-4826 */
    38404.12.ication_cdd If_Rx (ctrlIdx、
    以太网类型、
    isBroadcast、
    frame->hdr.srcMac、
    frame->hdr.dstMac、
    (Eth_Data *)有效载荷、
    长度);

    /*4.12.454(ctrlIdx, If_Rx
    以太网类型、
    isBroadcast、
    frame->hdr.srcMac、
    (Eth_Data *)有效载荷、
    len);*/

    EthPktQ_queue (&drv->rxFreeQ、pkt);

    PKT = EthPktQ_peek (&drv->rxReadyQ);
    如果(NULL == pkt)

    STATUS = ETH_RECEIVED;
    }
    设计

    STATUS = ETH_Received_More_data_available;
    }
    }
    设计

    STATUS = ETH_NOT_RECEIVED;
    }

    返回状态;
    }

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

    您好!

    您是否仅观察特定数据包或所有数据包的这些行为?

    您能否安排在2024年12月26日中午12点至下午12点30分举行 IST 会议、以讨论该问题。

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    所有数据包都有问题。

    抱歉、我上周休假了、
    您能否就本周的会议时间提出建议?

    谢谢!
    Venu H.

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

    您好!

    问题出在所有数据包中。

    不应这样做、将在 SDK 版本中验证。
    您是否也在使用 TI SDK 进行观察? 我的意思是非镜像流量?

    您是否进行了任何配置更改? 此外、是否还  注意了对缓冲区的哈希?

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    是的、非镜像流量也存在问题。

    我们通过 SDK 中存在的中断进行处理、我不确定缓冲区的哈希。
    如果我们有会议进一步讨论、那将是一件好事。

    谢谢!
    Venu H.

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

    您好!

    从项目启动至今、您是否一直在 MCU2_1内核上使用 MCAL 客户端?

    如果我们有会议进一步讨论、这将是好的

    请安排明天上午11点致电 IST。


    此致、
    Sudheer

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

    大家好!

    从今天(2024年12月31日)的调试呼叫更新:

    TI 发现了一些仅 MAC 端口启用的配置问题、并将所有仅 MAC 端口信息复制到主机端口。
    此外、未知单播数据包都允许主机端口访问。  

    TI 根据连接的物理 h/w 更正了仅 MAC 端口使能、并帮助从应用进行配置、而不是在 ENET 驱动程序中进行修改。
    另外、TI 建议禁用向主机端口发送未知单播。

    根据上述 TI 建议、对其进行了测试、并确认了按预期接收到的数据包。

    此致、
    Sudheer

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

    您好!

    正如我们 在调试调用中测试的那样、问题现在得到解决、即接收到客户端的数据包是非 VLAN 标记、因为从外部发送。

    已验证广播数据包和未知单播数据包。

    此致、
    Sudheer