kernel: skip GRO for packets bridged to other hosts
authorFelix Fietkau <nbd@openwrt.org>
Sun, 15 Mar 2015 20:32:09 +0000 (20:32 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 15 Mar 2015 20:32:09 +0000 (20:32 +0000)
Eliminates excessive skb copying when bridging from LAN to WLAN on
ramips.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44797

target/linux/generic/patches-3.18/680-net-skip-gro-for-otherhost-packets.patch [new file with mode: 0644]
target/linux/generic/patches-3.19/680-net-skip-gro-for-otherhost-packets.patch [new file with mode: 0644]
target/linux/generic/patches-4.0/680-net-skip-gro-for-otherhost-packets.patch [new file with mode: 0644]

diff --git a/target/linux/generic/patches-3.18/680-net-skip-gro-for-otherhost-packets.patch b/target/linux/generic/patches-3.18/680-net-skip-gro-for-otherhost-packets.patch
new file mode 100644 (file)
index 0000000..3adc4e3
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -4003,6 +4003,9 @@ static enum gro_result dev_gro_receive(s
+       enum gro_result ret;
+       int grow;
++      if (skb->pkt_type == PACKET_OTHERHOST)
++              goto normal;
++
+       if (!(skb->dev->features & NETIF_F_GRO))
+               goto normal;
diff --git a/target/linux/generic/patches-3.19/680-net-skip-gro-for-otherhost-packets.patch b/target/linux/generic/patches-3.19/680-net-skip-gro-for-otherhost-packets.patch
new file mode 100644 (file)
index 0000000..e3fa917
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -3967,6 +3967,9 @@ static enum gro_result dev_gro_receive(s
+       enum gro_result ret;
+       int grow;
++      if (skb->pkt_type == PACKET_OTHERHOST)
++              goto normal;
++
+       if (!(skb->dev->features & NETIF_F_GRO))
+               goto normal;
diff --git a/target/linux/generic/patches-4.0/680-net-skip-gro-for-otherhost-packets.patch b/target/linux/generic/patches-4.0/680-net-skip-gro-for-otherhost-packets.patch
new file mode 100644 (file)
index 0000000..fc36258
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -4005,6 +4005,9 @@ static enum gro_result dev_gro_receive(s
+       enum gro_result ret;
+       int grow;
++      if (skb->pkt_type == PACKET_OTHERHOST)
++              goto normal;
++
+       if (!(skb->dev->features & NETIF_F_GRO))
+               goto normal;