summaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/652-0012-rtl8xxxu-gen1-Add-module-parameters-to-adjust-DMA-ag.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/652-0012-rtl8xxxu-gen1-Add-module-parameters-to-adjust-DMA-ag.patch')
-rw-r--r--package/kernel/mac80211/patches/652-0012-rtl8xxxu-gen1-Add-module-parameters-to-adjust-DMA-ag.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/652-0012-rtl8xxxu-gen1-Add-module-parameters-to-adjust-DMA-ag.patch b/package/kernel/mac80211/patches/652-0012-rtl8xxxu-gen1-Add-module-parameters-to-adjust-DMA-ag.patch
new file mode 100644
index 0000000000..90c2a4af27
--- /dev/null
+++ b/package/kernel/mac80211/patches/652-0012-rtl8xxxu-gen1-Add-module-parameters-to-adjust-DMA-ag.patch
@@ -0,0 +1,74 @@
+From fd83f12278262feccd012b62c30643bd6a6c2888 Mon Sep 17 00:00:00 2001
+From: Jes Sorensen <Jes.Sorensen@redhat.com>
+Date: Mon, 27 Jun 2016 12:32:10 -0400
+Subject: [PATCH] rtl8xxxu: gen1: Add module parameters to adjust DMA
+ aggregation parameters
+
+This allows the user to specify DMA aggregation timout and block
+count. Blocks are presumably always 512 bytes, so the minimum block
+count is 6 for 802.11 packets.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 28 ++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -45,6 +45,8 @@
+ int rtl8xxxu_debug = RTL8XXXU_DEBUG_EFUSE;
+ static bool rtl8xxxu_ht40_2g;
+ static bool rtl8xxxu_dma_aggregation;
++static int rtl8xxxu_dma_agg_timeout = -1;
++static int rtl8xxxu_dma_agg_pages = -1;
+
+ MODULE_AUTHOR("Jes Sorensen <Jes.Sorensen@redhat.com>");
+ MODULE_DESCRIPTION("RTL8XXXu USB mac80211 Wireless LAN Driver");
+@@ -65,6 +67,10 @@ module_param_named(ht40_2g, rtl8xxxu_ht4
+ MODULE_PARM_DESC(ht40_2g, "Enable HT40 support on the 2.4GHz band");
+ module_param_named(dma_aggregation, rtl8xxxu_dma_aggregation, bool, 0600);
+ MODULE_PARM_DESC(dma_aggregation, "Enable DMA packet aggregation");
++module_param_named(dma_agg_timeout, rtl8xxxu_dma_agg_timeout, int, 0600);
++MODULE_PARM_DESC(dma_agg_timeout, "Set DMA aggregation timeout (range 1-127)");
++module_param_named(dma_agg_pages, rtl8xxxu_dma_agg_pages, int, 0600);
++MODULE_PARM_DESC(dma_agg_pages, "Set DMA aggregation pages (range 1-127, 0 to disable)");
+
+ #define USB_VENDOR_ID_REALTEK 0x0bda
+ #define RTL8XXXU_RX_URBS 32
+@@ -4441,6 +4447,18 @@ void rtl8xxxu_gen1_init_aggregation(stru
+ */
+
+ page_thresh = (priv->fops->rx_agg_buf_size / 512);
++ if (rtl8xxxu_dma_agg_pages >= 0) {
++ if (rtl8xxxu_dma_agg_pages <= page_thresh)
++ timeout = page_thresh;
++ else if (rtl8xxxu_dma_agg_pages <= 6)
++ dev_err(&priv->udev->dev,
++ "%s: dma_agg_pages=%i too small, minium is 6\n",
++ __func__, rtl8xxxu_dma_agg_pages);
++ else
++ dev_err(&priv->udev->dev,
++ "%s: dma_agg_pages=%i larger than limit %i\n",
++ __func__, rtl8xxxu_dma_agg_pages, page_thresh);
++ }
+ rtl8xxxu_write8(priv, REG_RXDMA_AGG_PG_TH, page_thresh);
+ /*
+ * REG_RXDMA_AGG_PG_TH + 1 seems to be the timeout register on
+@@ -4448,6 +4466,16 @@ void rtl8xxxu_gen1_init_aggregation(stru
+ * don't set it, so better set both.
+ */
+ timeout = 4;
++
++ if (rtl8xxxu_dma_agg_timeout >= 0) {
++ if (rtl8xxxu_dma_agg_timeout <= 127)
++ timeout = rtl8xxxu_dma_agg_timeout;
++ else
++ dev_err(&priv->udev->dev,
++ "%s: Invalid dma_agg_timeout: %i\n",
++ __func__, rtl8xxxu_dma_agg_timeout);
++ }
++
+ rtl8xxxu_write8(priv, REG_RXDMA_AGG_PG_TH + 1, timeout);
+ rtl8xxxu_write8(priv, REG_USB_DMA_AGG_TO, timeout);
+ priv->rx_buf_aggregation = 1;