Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote: > On 14/05/2025 03:56, Ping-Ke Shih wrote: > > Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote: > >> Don't access dle_mem in get_dle_mem_cfg() directly. USB 2, USB 3, and > >> SDIO will need different sets of values. > >> > >> Rename dle_mem in struct rtw89_chip_info to dle_mem_pcie and get it > >> via rtw89_hci_dle_mem() and rtw89_pci_ops_dle_mem(). > >> > >> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> > >> --- > >> drivers/net/wireless/realtek/rtw89/core.h | 10 +++++++++- > >> drivers/net/wireless/realtek/rtw89/mac.c | 2 +- > >> drivers/net/wireless/realtek/rtw89/pci.c | 8 ++++++++ > >> drivers/net/wireless/realtek/rtw89/rtw8851b.c | 2 +- > >> drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 +- > >> drivers/net/wireless/realtek/rtw89/rtw8852b.c | 2 +- > >> drivers/net/wireless/realtek/rtw89/rtw8852bt.c | 2 +- > >> drivers/net/wireless/realtek/rtw89/rtw8852c.c | 2 +- > >> drivers/net/wireless/realtek/rtw89/rtw8922a.c | 2 +- > >> 9 files changed, 24 insertions(+), 8 deletions(-) > >> > >> diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h > >> index be1259cfa712..afcf0353a625 100644 > >> --- a/drivers/net/wireless/realtek/rtw89/core.h > >> +++ b/drivers/net/wireless/realtek/rtw89/core.h > >> @@ -3579,6 +3579,8 @@ struct rtw89_hci_ops { > >> void (*disable_intr)(struct rtw89_dev *rtwdev); > >> void (*enable_intr)(struct rtw89_dev *rtwdev); > >> int (*rst_bdram)(struct rtw89_dev *rtwdev); > > > > an empty line > > > >> + const struct rtw89_dle_mem *(*dle_mem)(struct rtw89_dev *rtwdev, > >> + u8 qta_mode); > >> }; > >> > >> struct rtw89_hci_info { > >> @@ -4271,7 +4273,7 @@ struct rtw89_chip_info { > >> bool dis_2g_40m_ul_ofdma; > >> u32 rsvd_ple_ofst; > >> const struct rtw89_hfc_param_ini *hfc_param_ini; > >> - const struct rtw89_dle_mem *dle_mem; > >> + const struct rtw89_dle_mem *dle_mem_pcie; > > > > I reconsider if this can be an array with a new enum = {PCIE, USB2, USB3, SDIO} > > stored in hal->hci_dle_mem_type. Then, consumers can just access it via > > chip->dle_mem[hal->hci_dle_mem_type][quota]. But, I'm not sure if USB > > subsystem can notify driver when USB speed is changed. > > > > This is a thought to simply the struct definition. > > > > The hard part is naming the new enum. It's basically rtw89_hci_type > but more detailed. If it only used by DLE, maybe rtw89_hci_dle_type is fine? > > I don't expect the USB speed to change during the lifetime of struct > rtw89_dev. When the device switches from USB 2 to USB 3 it disconnects > and reappears as a new device: So seemingly it is workable to store the USB speed in a variable at USB probe. Please try if it looks good. > > Apr 21 22:02:22 ideapad2 kernel: usb 1-4: new high-speed USB device number 17 using xhci_hcd > Apr 21 22:02:22 ideapad2 kernel: usb 1-4: New USB device found, idVendor=0bda, idProduct=c832, bcdDevice= > 0.00 > Apr 21 22:02:22 ideapad2 kernel: usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 > Apr 21 22:02:22 ideapad2 kernel: usb 1-4: Product: 802.11ax WLAN Adapter > Apr 21 22:02:22 ideapad2 kernel: usb 1-4: Manufacturer: Realtek > Apr 21 22:02:22 ideapad2 kernel: usb 1-4: SerialNumber: 00e04c000001 > Apr 21 22:02:24 ideapad2 kernel: eric-tx CALL alloc_txring !!!! > Apr 21 22:02:24 ideapad2 kernel: usb 1-4: USB disconnect, device number 17 > Apr 21 22:02:24 ideapad2 kernel: rtl8852cu 1-4:1.0: Runtime PM usage count underflow! > > Apr 21 22:02:27 ideapad2 kernel: usb 2-4: new SuperSpeed USB device number 2 using xhci_hcd > Apr 21 22:02:27 ideapad2 kernel: usb 2-4: New USB device found, idVendor=0bda, idProduct=c832, bcdDevice= > 0.00 > Apr 21 22:02:28 ideapad2 kernel: usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 > Apr 21 22:02:28 ideapad2 kernel: usb 2-4: Product: 802.11ax WLAN Adapter > Apr 21 22:02:28 ideapad2 kernel: usb 2-4: Manufacturer: Realtek > Apr 21 22:02:28 ideapad2 kernel: usb 2-4: SerialNumber: 00e04c000001 > Apr 21 22:02:28 ideapad2 kernel: eric-tx CALL alloc_txring !!!! > Apr 21 22:02:28 ideapad2 kernel: rtl8852cu 2-4:1.0 wlp3s0f3u4: renamed from wlan0 >