aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/652-0043-rtl8xxxu-Disable-packet-DMA-aggregation-on-8188eu.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/652-0043-rtl8xxxu-Disable-packet-DMA-aggregation-on-8188eu.patch')
-rw-r--r--package/kernel/mac80211/patches/652-0043-rtl8xxxu-Disable-packet-DMA-aggregation-on-8188eu.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/652-0043-rtl8xxxu-Disable-packet-DMA-aggregation-on-8188eu.patch b/package/kernel/mac80211/patches/652-0043-rtl8xxxu-Disable-packet-DMA-aggregation-on-8188eu.patch
new file mode 100644
index 0000000000..268b30dcfc
--- /dev/null
+++ b/package/kernel/mac80211/patches/652-0043-rtl8xxxu-Disable-packet-DMA-aggregation-on-8188eu.patch
@@ -0,0 +1,43 @@
+From 17cb73ae89e15b60276f0b6583d4ed30b6bdeb4f Mon Sep 17 00:00:00 2001
+From: Jes Sorensen <Jes.Sorensen@redhat.com>
+Date: Wed, 10 Aug 2016 15:41:13 -0400
+Subject: [PATCH] rtl8xxxu: Disable packet DMA aggregation on 8188eu
+
+For now disable packet DMA aggregation on the 8188eu, rather then
+risking the feature being left on by the init tables.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
+@@ -345,6 +345,19 @@ rtl8188e_set_tx_power(struct rtl8xxxu_pr
+ rtl8xxxu_write32(priv, REG_TX_AGC_A_MCS15_MCS12, mcs);
+ }
+
++void rtl8188eu_init_aggregation(struct rtl8xxxu_priv *priv)
++{
++ u8 agg_ctrl, usb_spec;
++
++ usb_spec = rtl8xxxu_read8(priv, REG_USB_SPECIAL_OPTION);
++ usb_spec &= ~USB_SPEC_USB_AGG_ENABLE;
++ rtl8xxxu_write8(priv, REG_USB_SPECIAL_OPTION, usb_spec);
++
++ agg_ctrl = rtl8xxxu_read8(priv, REG_TRXDMA_CTRL);
++ agg_ctrl &= ~TRXDMA_CTRL_RXDMA_AGG_EN;
++ rtl8xxxu_write8(priv, REG_TRXDMA_CTRL, agg_ctrl);
++}
++
+ static int rtl8188eu_parse_efuse(struct rtl8xxxu_priv *priv)
+ {
+ struct rtl8188eu_efuse *efuse = &priv->efuse_wifi.efuse8188eu;
+@@ -1107,6 +1120,7 @@ struct rtl8xxxu_fileops rtl8188eu_fops =
+ .phy_iq_calibrate = rtl8188eu_phy_iq_calibrate,
+ .config_channel = rtl8xxxu_gen1_config_channel,
+ .parse_rx_desc = rtl8xxxu_parse_rxdesc16,
++ .init_aggregation = rtl8188eu_init_aggregation,
+ .enable_rf = rtl8188e_enable_rf,
+ .disable_rf = rtl8188e_disable_rf,
+ .usb_quirks = rtl8188e_usb_quirks,