> -----Original Message----- > From: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> > Sent: Sunday, November 6, 2022 6:53 AM > To: linux-wireless@xxxxxxxxxxxxxxx > Cc: Jes Sorensen <Jes.Sorensen@xxxxxxxxx> > Subject: [PATCH v2 1/3] wifi: rtl8xxxu: Move burst init to a function > > No changes to functionality, just moving code to make > rtl8xxxu_init_device look nicer. > > Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> > --- > v2: > - No change. > --- > .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 2 + > .../realtek/rtl8xxxu/rtl8xxxu_8188f.c | 1 + > .../realtek/rtl8xxxu/rtl8xxxu_8723b.c | 1 + > .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 89 ++++++++++--------- > 4 files changed, 52 insertions(+), 41 deletions(-) > [...] > diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c > b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c > index 019f8ddd418b..282ad8a9b73d 100644 > --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c > +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c > @@ -3886,6 +3886,52 @@ static void rtl8xxxu_init_queue_reserved_page(struct rtl8xxxu_priv *priv) > rtl8xxxu_write32(priv, REG_RQPN, val32); > } > > +void rtl8xxxu_init_burst(struct rtl8xxxu_priv *priv) > +{ > + u8 val8; > + > + /* > + * For USB high speed set 512B packets > + */ > + val8 = rtl8xxxu_read8(priv, REG_RXDMA_PRO_8723B); > + val8 &= ~(BIT(4) | BIT(5)); > + val8 |= BIT(4); > + val8 |= BIT(1) | BIT(2) | BIT(3); I think we can fix these magic numbers along with your patch. #define DMA_MODE BIT(1) // set 0x1 #define DMA_BURST_CNT GENMASK(3, 2) // set 0x3 #define DMA_BURST_SIZE GENMASK(5, 4) // set 0x1 > + rtl8xxxu_write8(priv, REG_RXDMA_PRO_8723B, val8); > + > + /* > + * Enable single packet AMPDU > + */ > + val8 = rtl8xxxu_read8(priv, REG_HT_SINGLE_AMPDU_8723B); > + val8 |= BIT(7); #define EN_SINGLE_AMPDU BIT(7) > + rtl8xxxu_write8(priv, REG_HT_SINGLE_AMPDU_8723B, val8); > + > + rtl8xxxu_write16(priv, REG_MAX_AGGR_NUM, 0x0c14); > + if (priv->rtl_chip == RTL8723B) > + val8 = 0x5e; > + else if (priv->rtl_chip == RTL8188F) > + val8 = 0x70; /* 0x5e would make it very slow */ > + rtl8xxxu_write8(priv, REG_AMPDU_MAX_TIME_8723B, val8); > + rtl8xxxu_write32(priv, REG_AGGLEN_LMT, 0xffffffff); > + rtl8xxxu_write8(priv, REG_RX_PKT_LIMIT, 0x18); > + rtl8xxxu_write8(priv, REG_PIFS, 0x00); > + if (priv->rtl_chip == RTL8188F) { > + rtl8xxxu_write8(priv, REG_FWHW_TXQ_CTRL, FWHW_TXQ_CTRL_AMPDU_RETRY); > + rtl8xxxu_write32(priv, REG_FAST_EDCA_CTRL, 0x03086666); > + } > + if (priv->rtl_chip == RTL8723B) > + val8 = 0x50; > + else if (priv->rtl_chip == RTL8188F) > + val8 = 0x28; /* 0x50 would make the upload slow */ > + rtl8xxxu_write8(priv, REG_USTIME_TSF_8723B, val8); > + rtl8xxxu_write8(priv, REG_USTIME_EDCA, val8); > + > + /* to prevent mac is reseted by bus. */ > + val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL); > + val8 |= BIT(5) | BIT(6); #define WLOCK_1C BIT(5) #define DIS_PRST BIT(6) > + rtl8xxxu_write8(priv, REG_RSV_CTRL, val8); > +} > + [...] I find some bit definitions, so we can have them meaningful names, and please add proper prefix if need. Ping-Ke