From patchwork Thu Apr 30 13:02:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: ath10k: Increase buffer to fix >1500 MTU frames From: Fabian Blaese X-Patchwork-Id: 1385 Message-Id: <20200430130207.794427-1-fabian@blaese.de> To: franken-dev@freifunk.net Date: Thu, 30 Apr 2020 15:02:07 +0200 The ath10k seems to have an issue with large frames transmitted over 802.11s. This issue has been worked around in ath10k-ct. The same patch has now been merged into OpenWrt. As this might fix mesh issues with ath10k devices, it is backported to our firmware using a build patch. Link: https://github.com/openwrt/openwrt/commit/066ec97167e49b5c037b04dc4ec76c4cad5b75e2 Link: https://github.com/greearb/ath10k-ct/issues/89 Link: https://github.com/greearb/ath10k-ct/commit/9e5ab25027e0971fa24ccf93373324c08c4e992d Signed-off-by: Fabian Bläse Reviewed-by: Adrian Schmutzler --- ...h10k-increase-rx-buffer-size-to-2048.patch | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 build_patches/openwrt/0030-mac80211-ath10k-increase-rx-buffer-size-to-2048.patch diff --git a/build_patches/openwrt/0030-mac80211-ath10k-increase-rx-buffer-size-to-2048.patch b/build_patches/openwrt/0030-mac80211-ath10k-increase-rx-buffer-size-to-2048.patch new file mode 100644 index 0000000..8bfe089 --- /dev/null +++ b/build_patches/openwrt/0030-mac80211-ath10k-increase-rx-buffer-size-to-2048.patch @@ -0,0 +1,79 @@ +From 40423025eb5d203affd1e0bb6677d5fabf7a522d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Linus=20L=C3=BCssing?= +Date: Wed, 5 Feb 2020 20:10:43 +0100 +Subject: [PATCH] mac80211: ath10k: increase rx buffer size to 2048 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Before, only frames with a maximum size of 1528 bytes could be +transmitted between two 802.11s nodes. + +For batman-adv for instance, which adds its own header to each frame, +we typically need an MTU of at least 1532 bytes to be able to transmit +without fragmentation. + +This patch now increases the maxmimum frame size from 1528 to 1656 +bytes. + +Tested with two ath10k devices in 802.11s mode, as well as with +batman-adv on top of 802.11s with forwarding disabled. + +Fix originally found and developed by Ben Greear. + +Link: https://github.com/greearb/ath10k-ct/issues/89 +Link: https://github.com/greearb/ath10k-ct/commit/9e5ab25027e0971fa24ccf93373324c08c4e992d +Cc: Ben Greear +Signed-off-by: Linus Lüssing +Signed-off-by: Sven Eckelmann +--- + ...h10k-increase-rx-buffer-size-to-2048.patch | 37 +++++++++++++++++++ + 1 file changed, 37 insertions(+) + create mode 100644 package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch + +diff --git a/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch b/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch +new file mode 100644 +index 0000000000..55429139fa +--- /dev/null ++++ b/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch +@@ -0,0 +1,37 @@ ++From: Linus Lüssing ++Date: Wed, 5 Feb 2020 20:10:43 +0100 ++Subject: ath10k: increase rx buffer size to 2048 ++ ++Before, only frames with a maximum size of 1528 bytes could be ++transmitted between two 802.11s nodes. ++ ++For batman-adv for instance, which adds its own header to each frame, ++we typically need an MTU of at least 1532 bytes to be able to transmit ++without fragmentation. ++ ++This patch now increases the maxmimum frame size from 1528 to 1656 ++bytes. ++ ++Tested with two ath10k devices in 802.11s mode, as well as with ++batman-adv on top of 802.11s with forwarding disabled. ++ ++Fix originally found and developed by Ben Greear. ++ ++Link: https://github.com/greearb/ath10k-ct/issues/89 ++Link: https://github.com/greearb/ath10k-ct/commit/9e5ab25027e0971fa24ccf93373324c08c4e992d ++Cc: Ben Greear ++Signed-off-by: Linus Lüssing ++ ++Forwarded: https://patchwork.kernel.org/patch/11367055/ ++ ++--- a/drivers/net/wireless/ath/ath10k/htt.h +++++ b/drivers/net/wireless/ath/ath10k/htt.h ++@@ -2219,7 +2219,7 @@ struct htt_rx_chan_info { ++ * Should be: sizeof(struct htt_host_rx_desc) + max rx MSDU size, ++ * rounded up to a cache line size. ++ */ ++-#define HTT_RX_BUF_SIZE 1920 +++#define HTT_RX_BUF_SIZE 2048 ++ #define HTT_RX_MSDU_SIZE (HTT_RX_BUF_SIZE - (int)sizeof(struct htt_rx_desc)) ++ ++ /* Refill a bunch of RX buffers for each refill round so that FW/HW can handle +-- +2.26.2 +