Firmware requires more than 16 bits to address TX ring IDs for its internal QP management. Widen the associated HSI ring ID fields to 32 bits. The values firmware assigns remain within 24 bits, bounded by the hardware doorbell XID field. The fw_ring_id field belongs to bnge_ring_struct, a common struct shared by all ring types, so widening it to u32 applies uniformly across TX, RX, CP, and NQ rings but firmware assigns values within 16-bit range for all ring types except TX, which requires the wider field. Note that, Thor Ultra hardware has not yet been deployed and no firmware has been released to field, so backward compatibility is not a concern.
Showing the changes to include/linux (1 of 8 files). Show all
Unified · Split
| @@ -8317,8 +8317,7 @@ struct hwrm_ring_alloc_output { · 8316 unmodified lines | ||
| 8317 | 8317 | __le16 req_type; |
| 8318 | 8318 | __le16 seq_id; |
| 8319 | 8319 | __le16 resp_len; |
| 8320 | − __le16 ring_id; | |
| 8321 | − __le16 logical_ring_id; | |
| 8320 | + __le32 ring_id; | |
| 8322 | 8321 | u8 push_buffer_index; |
| 8323 | 8322 | #define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PING_BUFFER 0x0UL |
| 8324 | 8323 | #define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER 0x1UL |
| @@ -8345,10 +8344,10 @@ struct hwrm_ring_free_input { · 20 unmodified lines | ||
| 8345 | 8344 | u8 flags; |
| 8346 | 8345 | #define RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID 0x1UL |
| 8347 | 8346 | #define RING_FREE_REQ_FLAGS_LAST RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID |
| 8348 | − __le16 ring_id; | |
| 8347 | + __le16 unused_1; | |
| 8349 | 8348 | __le32 prod_idx; |
| 8350 | 8349 | __le32 opaque; |
| 8351 | − __le32 unused_1; | |
| 8350 | + __le32 ring_id; | |
| 8352 | 8351 | }; |
| 8353 | 8352 | |
| 8354 | 8353 | /* hwrm_ring_free_output (size:128b/16B) */ |