AM6548: AM6548: ICSSG Ethernet Initialization Failure (Rx Flow ID -22) with Linux Kernel 6.12 and PRU Firmware status=16 Response

Part Number: AM6548

Tool/software:

Dear TI Team,

We are encountering a critical issue during the initialization of the ICSSG Ethernet interfaces (icssgx-eth) on our AM6548 platform when running Linux kernel version 6.12.

Problem Description:
During the icssg-prueth driver's initialization sequence, an attempt to update the Rx Flow ID fails. The system logs report the following error:
ERROR: Failed to update Rx Flow ID -22

Upon debugging the icssg_send_fdb_msg function, we observe that a command is successfully sent to the PRU firmware. This command is identified as ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW (0x05) with param=0x10. However, the PRU firmware consistently responds with a status=16. The driver interprets this non-success status as an error, leading to the -22 error code (which corresponds to EINVAL, or "Invalid argument").

Relevant Log Snippet:

[   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)

Suspected Cause & Troubleshooting:


We suspect this issue is due to a compatibility mismatch between the icssg-prueth driver in Linux kernel 6.12 and the PRU firmware loaded on the AM6548. The specific command, ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW (0x05), was introduced or modified in kernel commit 9facce84f406 (https://github.com/torvalds/linux/commit/9facce84f4062f782ebde18daa7006a23d40b607#diff-17a60a35256de0708f6ac4275c44d0364058230e350558b9f2e3633ddba37e20).

To resolve this, we attempted to update the ti-linux-firmware package to the version referenced in commit cdd233788b9a (https://github.com/TexasInstruments/ti-linux-firmware/commit/cdd233788b9a8a2fe9fbc82d17e34d5ae32fdc3b). However, this update did not resolve the issue, and the firmware continues to respond with status=16.

Questions for TI:

  1. Could you please provide the definitive meaning of status=16 when returned by the AM6548 ICSSG PRU firmware in response to the ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW (0x05) command? Does this status code indicate an invalid command, an unsupported feature, a parameter error, or another specific condition?
  2. Where can we find comprehensive and up-to-date documentation for the AM6548 ICSSG PRU firmware, specifically detailing its command interface (MGMT_CMD_TYPE), command parameters, and all possible response status codes?
  3. What is the officially recommended PRU firmware version for the AM6548 when running Linux kernel 6.12.x (or the closest supported kernel version)? Is there a specific firmware release that fully supports the ICSSG_FW_MGMT_FDB_CMD_TYPE_RX_FLOW command as expected by recent kernel drivers?
  4. Any suggestions to resolve this issue?

Thank you for your time and assistance.

Sincerely,

Andy, Siemens AG

  • Regarding the log snippet, the extensive DEBUG output is from my internal debugging. For the purpose of this ticket, please focus on the status=16 response and the final Failed to update Rx Flow ID -22 error. Thank you.