Commit bcfcb712 authored by Bitterblue Smith's avatar Bitterblue Smith Committed by Kalle Valo
Browse files

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: default avatarBitterblue Smith <rtl8821cerfe2@gmail.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/bef90bf8-716f-c92f-9403-12ef2bfefc15@gmail.com
parent 901c247f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1485,6 +1485,7 @@ struct rtl8xxxu_fileops {
	int (*parse_rx_desc) (struct rtl8xxxu_priv *priv, struct sk_buff *skb);
	void (*init_aggregation) (struct rtl8xxxu_priv *priv);
	void (*init_statistics) (struct rtl8xxxu_priv *priv);
	void (*init_burst) (struct rtl8xxxu_priv *priv);
	void (*enable_rf) (struct rtl8xxxu_priv *priv);
	void (*disable_rf) (struct rtl8xxxu_priv *priv);
	void (*usb_quirks) (struct rtl8xxxu_priv *priv);
@@ -1592,6 +1593,7 @@ void rtl8xxxu_gen1_init_aggregation(struct rtl8xxxu_priv *priv);
void rtl8xxxu_gen1_enable_rf(struct rtl8xxxu_priv *priv);
void rtl8xxxu_gen1_disable_rf(struct rtl8xxxu_priv *priv);
void rtl8xxxu_gen2_disable_rf(struct rtl8xxxu_priv *priv);
void rtl8xxxu_init_burst(struct rtl8xxxu_priv *priv);
int rtl8xxxu_parse_rxdesc16(struct rtl8xxxu_priv *priv, struct sk_buff *skb);
int rtl8xxxu_parse_rxdesc24(struct rtl8xxxu_priv *priv, struct sk_buff *skb);
int rtl8xxxu_gen2_channel_to_group(int channel);
+1 −0
Original line number Diff line number Diff line
@@ -1705,6 +1705,7 @@ struct rtl8xxxu_fileops rtl8188fu_fops = {
	.parse_rx_desc = rtl8xxxu_parse_rxdesc24,
	.init_aggregation = rtl8188fu_init_aggregation,
	.init_statistics = rtl8188fu_init_statistics,
	.init_burst = rtl8xxxu_init_burst,
	.enable_rf = rtl8188f_enable_rf,
	.disable_rf = rtl8188f_disable_rf,
	.usb_quirks = rtl8188f_usb_quirks,
+1 −0
Original line number Diff line number Diff line
@@ -1683,6 +1683,7 @@ struct rtl8xxxu_fileops rtl8723bu_fops = {
	.parse_rx_desc = rtl8xxxu_parse_rxdesc24,
	.init_aggregation = rtl8723bu_init_aggregation,
	.init_statistics = rtl8723bu_init_statistics,
	.init_burst = rtl8xxxu_init_burst,
	.enable_rf = rtl8723b_enable_rf,
	.disable_rf = rtl8xxxu_gen2_disable_rf,
	.usb_quirks = rtl8xxxu_gen2_usb_quirks,
+48 −41
Original line number Diff line number Diff line
@@ -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);
	rtl8xxxu_write8(priv, REG_RXDMA_PRO_8723B, val8);

	/*
	 * Enable single packet AMPDU
	 */
	val8 = rtl8xxxu_read8(priv, REG_HT_SINGLE_AMPDU_8723B);
	val8 |= 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);
	rtl8xxxu_write8(priv, REG_RSV_CTRL, val8);
}

static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
{
	struct rtl8xxxu_priv *priv = hw->priv;
@@ -4139,48 +4185,9 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
	/*
	 * Initialize burst parameters
	 */
	if (priv->rtl_chip == RTL8723B || priv->rtl_chip == RTL8188F) {
		/*
		 * 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);
		rtl8xxxu_write8(priv, REG_RXDMA_PRO_8723B, val8);

		/*
		 * For USB high speed set 512B packets
		 */
		val8 = rtl8xxxu_read8(priv, REG_HT_SINGLE_AMPDU_8723B);
		val8 |= 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);
		rtl8xxxu_write8(priv, REG_RSV_CTRL, val8);
	}
	if (priv->fops->init_burst)
		priv->fops->init_burst(priv);

	if (fops->init_aggregation)
		fops->init_aggregation(priv);