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.

[参考译文] TMS320C6678:描述符未从 Tx 队列中释放

Guru**** 2589265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/622526/tms320c6678-descriptors-not-released-from-tx-queue

器件型号:TMS320C6678

您好!

我们在系统中使用 SRIO 类型9消息。

在初始化时、Tx 空闲队列中填充了16个描述符、在每个事务中、描述符从 Tx 空闲队列中弹出、推送到 Tx 队列、并且在传输完成后、描述符自动返回到 Tx 空闲队列。 此行为是系统的正常行为。  

但是、在某些情况下、SRIO 端口存在错误(例如、连接伙伴禁用了输入端口)、这会导致描述符在 Tx 队列中聚合(因为数据包无法传输到链路伙伴) 直到 Tx 空闲队列中没有空闲描述符。 现在、 即使 SRIO 问题得到解决(连接伙伴建立了一个链路、并且已完成所有 SRIO 对齐和错误恢复过程)、描述符仍滞留在 Tx 队列中、未进行传输 (有几种情况下会释放描述符、但在大多数情况下、卡住的描述符位于 Tx 队列中)。  

我怀疑的是、Tx 队列仅在软件将描述符推送到 Tx 队列后或在之前的事务完成后、才会向 SRIO 发出信号、以从 Tx 队列中弹出描述符、 但是、如果没有描述符被推送到 Tx 队列或事务已完成(就像 Tx 队列中有描述符并且系统中发生错误) -没有信号来释放 Tx 队列中的描述符,这会导致我之前描述的现象。

1.是否有任何操作可以强制 PKTDMA/SRIO 模块在检测到卡滞情形后启动 Tx 队列事务? 不应该自动完成?

2.你可以批准/拒绝我的假设吗?

等待您的建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将其转发给软件团队。 他们的反馈应发布在此处。

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

    ??????

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

    尊敬的 Tsvetolin:

    我与 SRIO 驱动程序主开发人员讨论了 SRIO 下行链路情况下的描述符发布问题。 似乎没有数据包描述符清除逻辑来处理 TX 队列中的描述符死区、这是您怀疑在 SRIO 驱动程序中实现的。 一旦 SRIO 驱动程序将描述符推入 TX 队列、它将期望 CPDMA 接管并将数据包移动到 SRIO 硬件进行传输。 您将需要实施一些自定义清理逻辑来检测链路故障。  理论上、清理逻辑可以:a)手动将所有描述符推送回 TX 队列、顺序正确、链路恢复时;B)弹出 TX 队列中的所有描述符、清理每个描述符所连接的存储器、然后手动将描述符推入空闲队列。

    此致、Garrett

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

    您好!

    感谢您的回复。

    我想确保我理解您的答案。

    如果 SRIO 链路断开、并且 CPDMA 没有从 Tx 队列弹出描述符以进行传输(因为链路断开)、则在一段时间后、链路再次启动- CPDMA 是否会自动从 Tx 队列弹出描述符? 换言之- CPDMA 是否具有自动标识队列深度的机制、或者 CPDMA 是否仅在新描述符被推送到 Tx 队列时才从队列中弹出描述符?

    谢谢、

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

    这些队列具有电平触发的 qpend 信号。 只要队列中有1个或多个描述符、该信号就会激活;当队列中有0个项目时、该信号将不会激活。

    此致、
    Garrett