工具与软件:
您好!
我们有一个在开关模式下使用 AM6442和 enet-icssg 的器件在 r5f0_1内核上运行。 代码最初基于 enet_layer2_icssg 示例、但做了一些小修改。 出于某种原因、我们绝不会接收到802.1q 标头中包含非零 PCP 的数据包。 不同的 VLAN ID 工作正常。 我还可以在端口统计信息中看到 rxClassX 值与我们预期将接收的数据包数量相匹配、但固件从不接收这些数据包。
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.
工具与软件:
您好!
我们有一个在开关模式下使用 AM6442和 enet-icssg 的器件在 r5f0_1内核上运行。 代码最初基于 enet_layer2_icssg 示例、但做了一些小修改。 出于某种原因、我们绝不会接收到802.1q 标头中包含非零 PCP 的数据包。 不同的 VLAN ID 工作正常。 我还可以在端口统计信息中看到 rxClassX 值与我们预期将接收的数据包数量相匹配、但固件从不接收这些数据包。
您好、Cassandra、
默认情况下、在 enet_layer2_example 中、例如 example.syscfg -> TI Networking -> Enet (ICSS)-> DMA 通道配置-> ENET Rx DMA 通道、有2个 Rx Ch ID'= 0和1的 RX 通道。 因此、每个端口仅启用一个流、因此仅 接收到 PCP = 0的数据包。 
可以添加所有16个 Rx DMA 通道、以便在两个端口上接收全部8个 PC。 因为 一个 PCP 映射到一个 RX DMA 通道流。 
步骤:
a)添加16个"ENET Rx DMA 通道"实例
b)"数据包数量":可以对所有16个通道将此项设置为8。 可以根据需要增加增益。
c)'MAC 地址数量':只能为'ENET Rx DMA 通道0'设置'1'。 对于所有其他 Rx DMA 通道、值必须为"0"。
d)"使用共享全局事件": 默认情况下已启用。 它可以 保持 所有通道的原样。
e)" Rx Flow Size Threshold":默认值为7。 它可以保持所有通道的原样。
f) Rx Ch ID':八个通道必须为"0"、其余八个通道必须为"1"。 该域表示 Rx DMA 通道流关联的 MAC 端口号。 (没有特定顺序、任何通道都可以具有 Rx Ch ID = 0/1)。
g)确保根据提示消息修改了"Packet Pool Config"(数据包池配置)->"Large pool packet count"(大池数据包计数)。
您可以尝试此配置、如果您有进一步的说明、请告诉我们。
谢谢。此致、
Miriam
尊敬的 Cassandra:
是的、您可以将 PCP 重新映射到0以使用原始的两个流程。
可在此处执行此操作:
Enet_layer2_icssg.c -> EnetMp_rxTask ()
for(flowIdx = 0; flowIdx< ENETMP_MAX_TX_CHANNEL_NUM; flowIdx++)
{
/*Here the re-mapping can be done*/
//prioMap[flowIdx] = flowIdx; /*default is one-to-one mapped*/
prioMap[flowIdx] = 0; /*Instead this can be done to remap all PCPs to 0 ( original flow)*/
}
status = set_priority_queue_mapping(perCtxt, ENET_MAC_PORT_1, prioMap);
status = set_priority_queue_mapping(perCtxt, ENET_MAC_PORT_2, prioMap);