From: Mattias Rönnblom <[email protected]>

The Remote Reset message header (type #6) is 3 bytes on the wire, but
padding made struct rte_ecpri_msg_remote_reset 4 bytes, so code using
sizeof() to step over the header skipped one byte too many.

Pack the struct, leaving the field offsets unchanged. Its size thus
goes from 4 to 3 bytes. struct rte_ecpri_combined_msg_hdr is
unaffected, since the One-Way Delay Measurement header is larger.

Fixes: d164c609e70b ("ethdev: add eCPRI key fields to flow API")

Signed-off-by: Mattias Rönnblom <[email protected]>
---
 doc/guides/rel_notes/release_26_11.rst | 3 +++
 lib/net/rte_ecpri.h                    | 4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/doc/guides/rel_notes/release_26_11.rst 
b/doc/guides/rel_notes/release_26_11.rst
index dca75000b7..c52092b987 100644
--- a/doc/guides/rel_notes/release_26_11.rst
+++ b/doc/guides/rel_notes/release_26_11.rst
@@ -114,6 +114,9 @@ ABI Changes
   ``struct rte_ecpri_combined_msg_hdr``, and hence
   ``struct rte_flow_item_ecpri``, grew from 16 to 24 bytes.
 
+* net: Packed ``struct rte_ecpri_msg_remote_reset``, so that its size matches
+  the 3-byte message header on the wire. It shrank from 4 to 3 bytes.
+
 
 Known Issues
 ------------
diff --git a/lib/net/rte_ecpri.h b/lib/net/rte_ecpri.h
index 6f6762ffb2..6bacdbecc2 100644
--- a/lib/net/rte_ecpri.h
+++ b/lib/net/rte_ecpri.h
@@ -150,10 +150,10 @@ struct __rte_packed_begin rte_ecpri_msg_delay_measure {
 /**
  * eCPRI Message Header of Type #6: Remote Reset
  */
-struct rte_ecpri_msg_remote_reset {
+struct __rte_packed_begin rte_ecpri_msg_remote_reset {
        rte_be16_t rst_id;              /**< Reset ID */
        uint8_t rst_op;                 /**< Reset Code Op */
-};
+} __rte_packed_end;
 
 /**
  * eCPRI Message Header of Type #7: Event Indication
-- 
2.43.0

Reply via email to