As arm-linux-gnueabi-gcc compiler align struct field is not always like gcc on x86 target, the efuse map layout might not be expected. Add __packed and do assertion to ensure it is expected. Complied test only with arm-linux-gnueabi-gcc and x86 gcc. Cc: Bitterblue Smith Signed-off-by: Ping-Ke Shih --- drivers/net/wireless/realtek/rtw89/rtw8851b.h | 8 +++++--- drivers/net/wireless/realtek/rtw89/rtw8852a.h | 8 +++++--- drivers/net/wireless/realtek/rtw89/rtw8852b_common.h | 8 +++++--- drivers/net/wireless/realtek/rtw89/rtw8852c.h | 8 +++++--- drivers/net/wireless/realtek/rtw89/rtw8922a.h | 2 ++ drivers/net/wireless/realtek/rtw89/rtw8922d.h | 2 ++ 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.h b/drivers/net/wireless/realtek/rtw89/rtw8851b.h index 1a5c52654d8a..5c2e26c04cd9 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.h +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.h @@ -13,11 +13,11 @@ struct rtw8851bu_efuse { u8 rsvd[0x88]; u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8851be_efuse { u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8851b_tssi_offset { u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM]; @@ -68,9 +68,11 @@ struct rtw8851b_efuse { union { struct rtw8851bu_efuse u; struct rtw8851be_efuse e; - }; + } __packed; } __packed; +static_assert(sizeof(struct rtw8851b_efuse) == 0x48e); + extern const struct rtw89_chip_info rtw8851b_chip_info; #endif diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.h b/drivers/net/wireless/realtek/rtw89/rtw8852a.h index d6c1acd09238..0d381f6fd182 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852a.h +++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.h @@ -19,11 +19,11 @@ enum rtw8852a_pmac_mode { struct rtw8852au_efuse { u8 rsvd[0x38]; u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8852ae_efuse { u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8852a_tssi_offset { u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM]; @@ -78,9 +78,11 @@ struct rtw8852a_efuse { union { struct rtw8852au_efuse u; struct rtw8852ae_efuse e; - }; + } __packed; } __packed; +static_assert(sizeof(struct rtw8852a_efuse) == 0x43e); + struct rtw8852a_bb_pmac_info { u8 en_pmac_tx:1; u8 is_cck:1; diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_common.h b/drivers/net/wireless/realtek/rtw89/rtw8852b_common.h index 3dce5422f41e..89e936e4b211 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_common.h +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_common.h @@ -20,11 +20,11 @@ enum rtw8852bx_pmac_mode { struct rtw8852bx_u_efuse { u8 rsvd[0x88]; u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8852bx_e_efuse { u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8852bx_tssi_offset { u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM]; @@ -89,9 +89,11 @@ struct rtw8852bx_efuse { union { struct rtw8852bx_u_efuse u; struct rtw8852bx_e_efuse e; - }; + } __packed; } __packed; +static_assert(sizeof(struct rtw8852bx_efuse) == 0x48e); + struct rtw8852bx_bb_pmac_info { u8 en_pmac_tx:1; u8 is_cck:1; diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.h b/drivers/net/wireless/realtek/rtw89/rtw8852c.h index 8585921ac6c4..49cb6b4b3b7c 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852c.h +++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.h @@ -13,11 +13,11 @@ struct rtw8852c_u_efuse { u8 rsvd[0x88]; u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8852c_e_efuse { u8 mac_addr[ETH_ALEN]; -}; +} __packed; struct rtw8852c_tssi_offset { u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM]; @@ -95,9 +95,11 @@ struct rtw8852c_efuse { union { struct rtw8852c_u_efuse u; struct rtw8852c_e_efuse e; - }; + } __packed; } __packed; +static_assert(sizeof(struct rtw8852c_efuse) == 0x48e); + extern const struct rtw89_chip_info rtw8852c_chip_info; #endif diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.h b/drivers/net/wireless/realtek/rtw89/rtw8922a.h index a29cfa5b4291..33c87bcc403c 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922a.h +++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.h @@ -68,6 +68,8 @@ struct rtw8922a_efuse { struct rtw8922a_rx_gain_6g rx_gain_6g_b; } __packed; +static_assert(sizeof(struct rtw8922a_efuse) == 0x1b8); + extern const struct rtw89_chip_info rtw8922a_chip_info; extern const struct rtw89_chip_variant rtw8922ae_vs_variant; diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922d.h b/drivers/net/wireless/realtek/rtw89/rtw8922d.h index 22a7d1cc244f..6d0fb01c1216 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922d.h +++ b/drivers/net/wireless/realtek/rtw89/rtw8922d.h @@ -77,6 +77,8 @@ struct rtw8922d_efuse { struct rtw8922d_rx_gain_6g rx_gain_6g_b_2; } __packed; +static_assert(sizeof(struct rtw8922d_efuse) == 0x222); + extern const struct rtw89_chip_info rtw8922d_chip_info; extern const struct rtw89_chip_variant rtw8922de_vs_variant; -- 2.25.1