mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 14:44:12 +00:00
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@gmail.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/bef90bf8-716f-c92f-9403-12ef2bfefc15@gmail.com
This commit is contained in:
parent
901c247f96
commit
bcfcb712e4
4 changed files with 52 additions and 41 deletions
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue