RE: [PATCH v3 net-next] net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)
From: Dexuan Cui <decui@microsoft.com>
Date: 2021-04-09 00:24:57
Also in:
linux-hyperv, lkml
From: Dexuan Cui <decui@microsoft.com>
Date: 2021-04-09 00:24:57
Also in:
linux-hyperv, lkml
From: David Miller <davem@davemloft.net> Sent: Thursday, April 8, 2021 4:46 PM ...quoted
+struct gdma_msg_hdr { + u32 hdr_type; + u32 msg_type; + u16 msg_version; + u16 hwc_msg_id; + u32 msg_size; +} __packed; + +struct gdma_dev_id { + union { + struct { + u16 type; + u16 instance; + }; + + u32 as_uint32; + }; +} __packed;Please don't use __packed unless absolutely necessary. It generates suboptimal code (byte at a time accesses etc.) and for many of these you don't even need it.
In the driver code, all the structs/unions marked by __packed are used to talk with the hardware, so I think __packed is necessary here? Do you think if it's better if we remove all the __packed, and add static_assert(sizeof(struct XXX) == YYY) instead? e.g.
@@ -105,7 +105,8 @@ struct gdma_msg_hdr { u16 msg_version; u16 hwc_msg_id; u32 msg_size; -} __packed; +}; +static_assert(sizeof(struct gdma_msg_hdr) == 16); struct gdma_dev_id { union {
Now I'm trying to figure out how other NIC drivers define structs/unions. Thanks, Dexuan