wifi: rtw88: add __packed attribute to efuse layout struct
BugLink: https://bugs.launchpad.net/bugs/2114239 [ Upstream commit 0daa521a1c8c29ffbefe6530f0d276e74e2749d0 ] The layout struct of efuse should not do address alignment by compiler. Otherwise it leads unexpected layout and size for certain arch suc as arm. In x86-64, the results are identical before and after this patch. Also adjust bit-field to prevent over adjacent byte to avoid warning: rtw88/rtw8822b.h:66:1: note: offset of packed bit-field `res2` has changed in GCC 4.4 66 | } __packed; | ^ Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202412120131.qk0x6OhE-lkp@intel.com/ Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20241212054203.135046-1-pkshih@realtek.com Signed-off-by: Sasha Levin <sashal@kernel.org> [nwager: Patch hunk applied to drivers/net/wireless/realtek/rtw88/rtw8723d.h instead of drivers/net/wireless/realtek/rtw88/rtw8723x.h due to missing commit ff88b7488266 ("wifi: rtw88: Shared module for rtw8723x devices")] Signed-off-by: Noah Wager <noah.wager@canonical.com> Signed-off-by: Mehmet Basaran <mehmet.basaran@canonical.com>
This commit is contained in:
committed by
Mehmet Basaran
parent
2da8fc6fd5
commit
9e44f60acf
@@ -506,12 +506,12 @@ struct rtw_5g_txpwr_idx {
|
||||
struct rtw_5g_vht_ns_pwr_idx_diff vht_2s_diff;
|
||||
struct rtw_5g_vht_ns_pwr_idx_diff vht_3s_diff;
|
||||
struct rtw_5g_vht_ns_pwr_idx_diff vht_4s_diff;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw_txpwr_idx {
|
||||
struct rtw_2g_txpwr_idx pwr_idx_2g;
|
||||
struct rtw_5g_txpwr_idx pwr_idx_5g;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw_channel_params {
|
||||
u8 center_chan;
|
||||
|
||||
@@ -39,7 +39,7 @@ struct rtw8723de_efuse {
|
||||
u8 device_id[2];
|
||||
u8 sub_vender_id[2];
|
||||
u8 sub_device_id[2];
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8723du_efuse {
|
||||
u8 res4[48]; /* 0xd0 */
|
||||
@@ -48,12 +48,12 @@ struct rtw8723du_efuse {
|
||||
u8 usb_option; /* 0x104 */
|
||||
u8 res5[2]; /* 0x105 */
|
||||
u8 mac_addr[ETH_ALEN]; /* 0x107 */
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8723ds_efuse {
|
||||
u8 res4[0x4a]; /* 0xd0 */
|
||||
u8 mac_addr[ETH_ALEN]; /* 0x11a */
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8723d_efuse {
|
||||
__le16 rtl_id;
|
||||
@@ -88,7 +88,7 @@ struct rtw8723d_efuse {
|
||||
struct rtw8723du_efuse u;
|
||||
struct rtw8723ds_efuse s;
|
||||
};
|
||||
};
|
||||
} __packed;
|
||||
|
||||
extern const struct rtw_chip_info rtw8723d_hw_spec;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ struct rtw8821cu_efuse {
|
||||
u8 res11[0xcf];
|
||||
u8 package_type; /* 0x1fb */
|
||||
u8 res12[0x4];
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8821ce_efuse {
|
||||
u8 mac_addr[ETH_ALEN]; /* 0xd0 */
|
||||
@@ -47,7 +47,8 @@ struct rtw8821ce_efuse {
|
||||
u8 ltr_en:1;
|
||||
u8 res1:2;
|
||||
u8 obff:2;
|
||||
u8 res2:3;
|
||||
u8 res2_1:1;
|
||||
u8 res2_2:2;
|
||||
u8 obff_cap:2;
|
||||
u8 res3:4;
|
||||
u8 res4[3];
|
||||
@@ -63,7 +64,7 @@ struct rtw8821ce_efuse {
|
||||
u8 res6:1;
|
||||
u8 port_t_power_on_value:5;
|
||||
u8 res7;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8821cs_efuse {
|
||||
u8 res4[0x4a]; /* 0xd0 */
|
||||
@@ -101,7 +102,7 @@ struct rtw8821c_efuse {
|
||||
struct rtw8821cu_efuse u;
|
||||
struct rtw8821cs_efuse s;
|
||||
};
|
||||
};
|
||||
} __packed;
|
||||
|
||||
static inline void
|
||||
_rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data)
|
||||
|
||||
@@ -27,7 +27,7 @@ struct rtw8822bu_efuse {
|
||||
u8 res11[0xcf];
|
||||
u8 package_type; /* 0x1fb */
|
||||
u8 res12[0x4];
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8822be_efuse {
|
||||
u8 mac_addr[ETH_ALEN]; /* 0xd0 */
|
||||
@@ -47,7 +47,8 @@ struct rtw8822be_efuse {
|
||||
u8 ltr_en:1;
|
||||
u8 res1:2;
|
||||
u8 obff:2;
|
||||
u8 res2:3;
|
||||
u8 res2_1:1;
|
||||
u8 res2_2:2;
|
||||
u8 obff_cap:2;
|
||||
u8 res3:4;
|
||||
u8 res4[3];
|
||||
@@ -63,7 +64,7 @@ struct rtw8822be_efuse {
|
||||
u8 res6:1;
|
||||
u8 port_t_power_on_value:5;
|
||||
u8 res7;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8822bs_efuse {
|
||||
u8 res4[0x4a]; /* 0xd0 */
|
||||
@@ -101,7 +102,7 @@ struct rtw8822b_efuse {
|
||||
struct rtw8822bu_efuse u;
|
||||
struct rtw8822bs_efuse s;
|
||||
};
|
||||
};
|
||||
} __packed;
|
||||
|
||||
static inline void
|
||||
_rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data)
|
||||
|
||||
@@ -14,7 +14,7 @@ struct rtw8822cu_efuse {
|
||||
u8 res1[3];
|
||||
u8 mac_addr[ETH_ALEN]; /* 0x157 */
|
||||
u8 res2[0x3d];
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8822cs_efuse {
|
||||
u8 res0[0x4a]; /* 0x120 */
|
||||
@@ -39,7 +39,8 @@ struct rtw8822ce_efuse {
|
||||
u8 ltr_en:1;
|
||||
u8 res1:2;
|
||||
u8 obff:2;
|
||||
u8 res2:3;
|
||||
u8 res2_1:1;
|
||||
u8 res2_2:2;
|
||||
u8 obff_cap:2;
|
||||
u8 res3:4;
|
||||
u8 class_code[3];
|
||||
@@ -55,7 +56,7 @@ struct rtw8822ce_efuse {
|
||||
u8 res6:1;
|
||||
u8 port_t_power_on_value:5;
|
||||
u8 res7;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct rtw8822c_efuse {
|
||||
__le16 rtl_id;
|
||||
@@ -100,7 +101,7 @@ struct rtw8822c_efuse {
|
||||
struct rtw8822cu_efuse u;
|
||||
struct rtw8822cs_efuse s;
|
||||
};
|
||||
};
|
||||
} __packed;
|
||||
|
||||
enum rtw8822c_dpk_agc_phase {
|
||||
RTW_DPK_GAIN_CHECK,
|
||||
|
||||
Reference in New Issue
Block a user