Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote: > USB 2, USB 3, and SDIO will need different sets of values. > > Add a new dle_type member in struct rtw89_hci_info and make dle_mem in > struct rtw89_chip_info an array to hold the four different sets of > values. > > Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> [...] > diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c > index 9f0e30e75009..2ee766e37322 100644 > --- a/drivers/net/wireless/realtek/rtw89/mac.c > +++ b/drivers/net/wireless/realtek/rtw89/mac.c > @@ -1719,7 +1719,7 @@ static const struct rtw89_dle_mem *get_dle_mem_cfg(struct rtw89_dev *rtwdev, > struct rtw89_mac_info *mac = &rtwdev->mac; > const struct rtw89_dle_mem *cfg; > > - cfg = &rtwdev->chip->dle_mem[mode]; > + cfg = &rtwdev->chip->dle_mem[rtwdev->hci.dle_type][mode]; > if (!cfg) In fact, original checking here is unnecessary, because it must not be a NULL. Instead, checking cfg->mode later is enough. But now, rtwdev->chip->dle_mem[rtwdev->hci.dle_type] could be NULL for some cases, so we should check it before accessing [mode], like const struct rtw89_dle_mem *cfg, *cfgs; cfgs = &rtwdev->chip->dle_mem[rtwdev->hci.dle_type]; if (!cfgs) return NULL; cfg = &cfgs[mode]; if (cfg->mode != mode) ... > return NULL; >