[dpdk-dev] [PATCH 12/16] fm10k: pack TLV overlay structures correctly

Wang Xiao W xiao.w.wang at intel.com
Mon Jul 27 10:42:35 CEST 2015


This patch adds #pragma pack(push, 1) around some structures which are passed
via TLV messages. These structures must not be left unpacked as GCC and
other compilers are wont to do. Otherwise, we get invalid message
responses from the Switch Manager software since it sends 20 bytes and
we expect 24.

Signed-off-by: Wang Xiao W <xiao.w.wang at intel.com>
---
 drivers/net/fm10k/base/fm10k_pf.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h
index 5a40d5b..b7a1758 100644
--- a/drivers/net/fm10k/base/fm10k_pf.h
+++ b/drivers/net/fm10k/base/fm10k_pf.h
@@ -90,6 +90,12 @@ enum fm10k_pf_tlv_attr_id_v1 {
 #define FM10K_MSG_UPDATE_PVID_PVID_SHIFT	16
 #define FM10K_MSG_UPDATE_PVID_PVID_SIZE		16
 
+/* The following data structures are overlayed specifically to TLV mailbox
+ * messages, and must not have gaps between their values. They must line up
+ * correctly to the TLV definition.
+ */
+#pragma pack(push, 1)
+
 struct fm10k_mac_update {
 	__le32	mac_lower;
 	__le16	mac_upper;
@@ -124,6 +130,8 @@ struct fm10k_swapi_tx_timestamp_mode {
 	__le32 status;
 };
 
+#pragma pack(pop)
+
 #define FM10K_PF_MSG_LPORT_CREATE_HANDLER(func) \
 	FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_LPORT_CREATE, NULL, func)
 #define FM10K_PF_MSG_LPORT_DELETE_HANDLER(func) \
-- 
1.9.3



More information about the dev mailing list