Search Linux Wireless

RE: [PATCH rtw-next v1 02/13] wifi: rtw89: Get dle_mem via rtw89_hci_dle_mem()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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. 

>         u8 wde_qempty_acq_grpnum;
>         u8 wde_qempty_mgq_grpsel;
>         u32 rf_base_addr[2];
> @@ -6146,6 +6148,12 @@ static inline void rtw89_hci_clear(struct rtw89_dev *rtwdev, struct pci_dev *pde
>                 rtwdev->hci.ops->clear(rtwdev, pdev);
>  }
> 
> +static inline const
> +struct rtw89_dle_mem *rtw89_hci_dle_mem(struct rtw89_dev *rtwdev, u8 qta_mode)
> +{
> +       return rtwdev->hci.ops->dle_mem(rtwdev, qta_mode);
> +}
> +
>  static inline
>  struct rtw89_tx_skb_data *RTW89_TX_SKB_CB(struct sk_buff *skb)
>  {
> diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
> index 592fbb6d2728..77d35db3e133 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 = rtw89_hci_dle_mem(rtwdev, mode);
>         if (!cfg)
>                 return NULL;
> 
> diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c
> index c2fe5a898dc7..1dec603012ba 100644
> --- a/drivers/net/wireless/realtek/rtw89/pci.c
> +++ b/drivers/net/wireless/realtek/rtw89/pci.c
> @@ -4341,6 +4341,13 @@ static int __maybe_unused rtw89_pci_resume(struct device *dev)
>  SIMPLE_DEV_PM_OPS(rtw89_pm_ops, rtw89_pci_suspend, rtw89_pci_resume);
>  EXPORT_SYMBOL(rtw89_pm_ops);
> 
> +static const
> +struct rtw89_dle_mem *rtw89_pci_ops_dle_mem(struct rtw89_dev *rtwdev,
> +                                           u8 qta_mode)
> +{
> +       return &rtwdev->chip->dle_mem_pcie[qta_mode];
> +}
> +
>  const struct rtw89_pci_gen_def rtw89_pci_gen_ax = {
>         .isr_rdu = B_AX_RDU_INT,
>         .isr_halt_c2h = B_AX_HALT_C2H_INT_EN,
> @@ -4413,6 +4420,7 @@ static const struct rtw89_hci_ops rtw89_pci_ops = {
>         .disable_intr   = rtw89_pci_disable_intr_lock,
>         .enable_intr    = rtw89_pci_enable_intr_lock,
>         .rst_bdram      = rtw89_pci_reset_bdram,

an empty line

> +       .dle_mem        = rtw89_pci_ops_dle_mem,
>  };
> 

[...]






[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux