Messages in this thread | | | Date | Thu, 23 Apr 2020 12:33:55 -0700 (PDT) | Subject | Re: [PATCH v2 net-next] net: dsa: add GRO support via gro_cells | From | David Miller <> |
| |
From: Alexander Lobakin <bloodyreaper@yandex.ru> Date: Tue, 21 Apr 2020 16:41:08 +0300
> gro_cells lib is used by different encapsulating netdevices, such as > geneve, macsec, vxlan etc. to speed up decapsulated traffic processing. > CPU tag is a sort of "encapsulation", and we can use the same mechs to > greatly improve overall DSA performance. > skbs are passed to the GRO layer after removing CPU tags, so we don't > need any new packet offload types as it was firstly proposed by me in > the first GRO-over-DSA variant [1]. > > The size of struct gro_cells is sizeof(void *), so hot struct > dsa_slave_priv becomes only 4/8 bytes bigger, and all critical fields > remain in one 32-byte cacheline. > The other positive side effect is that drivers for network devices > that can be shipped as CPU ports of DSA-driven switches can now use > napi_gro_frags() to pass skbs to kernel. Packets built that way are > completely non-linear and are likely being dropped without GRO. > > This was tested on to-be-mainlined-soon Ethernet driver that uses > napi_gro_frags(), and the overall performance was on par with the > variant from [1], sometimes even better due to minimal overhead. > net.core.gro_normal_batch tuning may help to push it to the limit > on particular setups and platforms. > > iperf3 IPoE VLAN NAT TCP forwarding (port1.218 -> port0) setup > on 1.2 GHz MIPS board: ... > v2: > - Add some performance examples in the commit message; > - No functional changes. > > [1] https://lore.kernel.org/netdev/20191230143028.27313-1-alobakin@dlink.ru/ > > Signed-off-by: Alexander Lobakin <bloodyreaper@yandex.ru>
Applied, thank you.
| |