DPDK patches and discussions
 help / color / mirror / Atom feed
From: Soumyadeep Hore <soumyadeep.hore@intel.com>
To: jingjing.wu@intel.com
Cc: dev@dpdk.org
Subject: [PATCH 13/25] common/idpf: update compiler padding
Date: Tue, 28 May 2024 07:35:53 +0000	[thread overview]
Message-ID: <20240528073559.867121-4-soumyadeep.hore@intel.com> (raw)
In-Reply-To: <20240528073559.867121-1-soumyadeep.hore@intel.com>

With the introduction of the flex array support, DECLARE_FLEX_ARRAY
macro was used in virtchnl2_rss_key struct with the wrong assumption
that it adds the required padding byte (8 byte structure alignment),
to avoid the compiler added padding. But the actual padding byte
was added by the compiler (found using pahole tool).

Everything worked with the current structure format because it
didn't change the virtchnl message format on the wire except for
the extra padding byte which was added at the end of the message.
With DPCP (doesn't yet support flex arrays) using the virtchnl message
size checks, it fails the SET RSS key message because the driver
(supports flex arrays) sends an extra byte of memory than the expected
size.

To fix this issue and also not break the backward compatibility,
use "packed" structure attribute which tells the compiler not
to introduce any padding. Also drop the DECLARE_FLEX_ARRAY
macro as it is not needed.

Signed-off-by: Soumyadeep Hore <soumyadeep.hore@intel.com>
---
 drivers/common/idpf/base/virtchnl2.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/common/idpf/base/virtchnl2.h b/drivers/common/idpf/base/virtchnl2.h
index 97e3454df9..95fca647b1 100644
--- a/drivers/common/idpf/base/virtchnl2.h
+++ b/drivers/common/idpf/base/virtchnl2.h
@@ -1669,13 +1669,13 @@ struct virtchnl2_rss_key {
 
 	__le16 key_len;
 	u8 pad;
+	u8 key[STRUCT_VAR_LEN];
 #ifdef FLEX_ARRAY_SUPPORT
-	DECLARE_FLEX_ARRAY(u8, key);
+} __packed;
 #else
-	u8 key[1];
-#endif /* FLEX_ARRAY_SUPPORT */
 };
-VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_rss_key);
+#endif /* FLEX_ARRAY_SUPPORT */
+VIRTCHNL2_CHECK_STRUCT_VAR_LEN(8, virtchnl2_rss_key, key);
 
 /**
  * struct virtchnl2_queue_chunk - Chunk of contiguous queues
-- 
2.43.0


  parent reply	other threads:[~2024-05-28  8:17 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-28  7:35 [PATCH 10/25] common/idpf: avoid variable 0-init Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 11/25] common/idpf: support added for xn transactions Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 12/25] common/idpf: rename of VIRTCHNL2 CAP INLINE FLOW STEER Soumyadeep Hore
2024-05-28  7:35 ` Soumyadeep Hore [this message]
2024-05-28  7:35 ` [PATCH 14/25] common/idpf: avoid compiler padding Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 15/25] common/idpf: add wmb before tail Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 16/25] common/idpf: add a new Tx context descriptor structure Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 17/25] common/idpf: removing redundant implementation Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 18/25] common/idpf: removing redundant functionality of virtchnl2 Soumyadeep Hore
2024-05-28  7:35 ` [PATCH 19/25] common/idpf: updating common code of latest base driver Soumyadeep Hore
2024-05-29 13:26 ` [PATCH 10/25] common/idpf: avoid variable 0-init Bruce Richardson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240528073559.867121-4-soumyadeep.hore@intel.com \
    --to=soumyadeep.hore@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).