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.

[参考译文] AM6548:AM6548:具有 Linux 内核 6.12 和 PRU 固件状态=16 响应的 ICSSG 以太网初始化失败 (Rx 流程 ID –22)

Guru**** 2539750 points
Other Parts Discussed in Thread: AM6548

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1561861/am6548-am6548-icssg-ethernet-initialization-failure-rx-flow-id--22-with-linux-kernel-6-12-and-pru-firmware-status-16-response

器件型号:AM6548


工具/软件:

尊敬的 TI 团队:

icssgx-eth运行 AM6548 平台上的 ICSSG 以太网接口 () 初始化期间、我们遇到了关键问题  Linux 内核版本 6.12

问题描述:
 icssg-prueth 驱动程序初始化序列期间、尝试更新 Rx 流 ID 失败。 系统日志报告以下错误:
ERROR: Failed to update Rx Flow ID -22

调试 icssg_send_fdb_msg 函数后、可以观察到命令已成功发送到 PRU 固件。 此命令标识为 ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW (0x05)  param=0x10。 但是、PRU 固件始终以响应 status=16。 驱动程序将此不成功状态解释为错误、导致出现错误 -22 代码(对应于,或“无效参数“) EINVAL

相关日志片段:

[   12.585715] icssg-prueth icssg0-eth: DEBUG: icssg_send_fdb_msg - entering for slice 1
[   12.593657] icssg-prueth icssg0-eth: DEBUG: cmd header=0x81, type=0x5, seqnum=1, param=0x10
[   12.602142] icssg-prueth icssg0-eth: DEBUG: cmd_args[0]=0x0, cmd_args[1]=0x0, cmd_args[2]=0x0
[   12.610774] icssg-prueth icssg0-eth: DEBUG: icssg_queue_pop returned addr=0x834c
[   12.618270] icssg-prueth icssg0-eth: DEBUG: Writing command to shared memory at addr=0x8350
[   12.626750] icssg-prueth icssg0-eth: DEBUG: Pushing command to queue (slice 1)
[   12.634060] icssg-prueth icssg0-eth: DEBUG: Waiting for firmware response...
[   12.641215] icssg-prueth icssg0-eth: DEBUG: Got response at addr=0x834c
[   12.647924] icssg-prueth icssg0-eth: DEBUG: Writing command to shared memory at addr=0x8350
[   12.656413] icssg-prueth icssg0-eth: DEBUG: Command structure before memcpy: header=0x81, type=0x5, seqnum=1, param=0x10
[   12.667414] icssg-prueth icssg0-eth: DEBUG: Command args: [0]=0x0, [1]=0x0, [2]=0x0
[   12.675210] icssg-prueth icssg0-eth: DEBUG: Verified written command: header=0x81, type=0x5, seqnum=1, param=0x10
[   12.685560] icssg-prueth icssg0-eth: DEBUG: Verified args: [0]=0x0, [1]=0x0, [2]=0x0
[   12.693362] icssg-prueth icssg0-eth: DEBUG: Response - header=0x81, type=0x5, seqnum=1, status=16
[   12.702322] icssg-prueth icssg0-eth: DEBUG: Returning buffer to pool
[   12.708827] icssg-prueth icssg0-eth: DEBUG: icssg_send_fdb_msg completed successfully
[   12.716788] icssg-prueth icssg0-eth: DEBUG: FDB response - seqnum: 1 (expected 1), status: 16
[   12.725440] icssg-prueth icssg0-eth: ERROR: Failed to update Rx Flow ID -22 (flow_id_base=150, port=2)

可疑原因和故障排除:


我们怀疑此问题是由于 icssg-prueth  Linux 内核 6.12 中的驱动程序与 AM6548 上加载的 PRU 固件之间的兼容性不匹配造成的。  ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW (0x05)在内核提交 9facce84f406  (https://github.com/torvalds/linux/commit/9facce84f4062f782ebde18daa7006a23d40b607#diff-17a60a35256de0708f6ac4275c44d0364058230e350558b9f2e3633ddba37e20) 中引入或修改了特定的命令。

为解决此问题、我们尝试 ti-linux-firmware 将软件包更新为 commit cdd233788b9a  (https://github.com/TexasInstruments/ti-linux-firmware/commit/cdd233788b9a8a2fe9fbc82d17e34d5ae32fdc3b) 中引用的版本。 但是、此更新未解决问题、并且固件将继续响应 status=16

向 TI 提问:

  1. 您能否提供 status=16  AM6548 ICSSG PRU 固件在响应 ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW (0x05) 命令时返回的最终含义? 此状态代码是否指示无效命令、不受支持的功能、参数错误或其他特定条件?
  2. 在哪里可以找到 AM6548 ICSSG PRU 固件的全面且最新的文档、特别是详细说明其命令接口 (MGMT_CMD_TYPE)、命令参数和所有可能的响应状态代码?
  3. 运行 Linux 内核 6.12.x(或最接近的受支持内核版本)时、AM6548 的官方建议 PRU 固件版本是什么? 是否有特定的固件版本完全支持 ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW 最新内核驱动程序预期的命令?
  4. 有任何解决此问题的建议?

感谢您的时间和帮助。

此致、

Andy、Siemens AG

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

    关于日志片段、扩展的 DEBUG 输出来自我的内部调试。 出于此 TT 的目的、请关注 status=16 回复和最终 Failed to update Rx Flow ID -22 错误。 谢谢你。

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

    升级 ti-linux-firmware 可在 我的最新测试中解决此问题。