From 111b49902465116a8353d29afe02eff0f56ea0a3 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 16 Nov 2017 09:57:13 +0100 Subject: [PATCH] mac80211: tweak TSQ settings Latencies can be much higher on wifi devices, especially with aggregation. Tune the network stack setting introduced in the previous commit to account for that. This commit reintroduces the previously reverted one with a fix for the crash issues Signed-off-by: Felix Fietkau --- .../mac80211/patches/140-tweak-TSQ-setting.patch | 15 +++++++++++++++ ...mac80211-add-hdrlen-to-ieee80211_tx_data.patch | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch diff --git a/package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch b/package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch new file mode 100644 index 0000000000..6e9a07a927 --- /dev/null +++ b/package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch @@ -0,0 +1,15 @@ +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -3750,6 +3750,12 @@ out: + netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, + struct net_device *dev) + { ++#if defined(sk_pacing_shift) || LINUX_VERSION_IS_GEQ(4,15,0) ++ if (skb->sk && sk_fullsock(skb->sk) && ++ skb->sk->sk_pacing_shift != 6) ++ skb->sk->sk_pacing_shift = 6; ++#endif ++ + if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) { + struct sk_buff_head queue; + diff --git a/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch b/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch index 934e2e122c..83c613434d 100644 --- a/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch +++ b/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch @@ -56,7 +56,7 @@ Signed-off-by: Janusz Dziedzic if (txq->sta) tx.sta = container_of(txq->sta, struct sta_info, sta); -@@ -3790,6 +3791,7 @@ ieee80211_build_data_template(struct iee +@@ -3796,6 +3797,7 @@ ieee80211_build_data_template(struct iee hdr = (void *)skb->data; tx.sta = sta_info_get(sdata, hdr->addr1); tx.skb = skb;