| /linux/net/core/ |
| H A D | gro.c | 3 #include <net/gro.h> 252 static void gro_complete(struct gro_node *gro, struct sk_buff *skb) in gro_complete() argument 266 /* NICs can feed encapsulated packets into GRO */ in gro_complete() 287 gro_normal_one(gro, skb, NAPI_GRO_CB(skb)->count); in gro_complete() 290 static void __gro_flush_chain(struct gro_node *gro, u32 index, bool flush_old) in __gro_flush_chain() argument 292 struct list_head *head = &gro->hash[index].list; in __gro_flush_chain() 299 gro_complete(gro, skb); in __gro_flush_chain() 300 gro->hash[index].count--; in __gro_flush_chain() 303 if (!gro->hash[index].count) in __gro_flush_chain() 304 __clear_bit(index, &gro->bitmask); in __gro_flush_chain() [all …]
|
| /linux/tools/testing/selftests/net/ |
| H A D | udpgro.sh | 39 ip netns exec "${PEER_NS}" ethtool -K veth1 gro on 91 # fool the GRO engine changing the destination address ... 94 # ... so that GRO will match the UDP_GRO enabled socket, but packets 160 run_test "no GRO" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400" 164 # when GRO does not take place 165 run_test "no GRO chk cmsg" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400 -S -1" 172 run_test "GRO" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720" 174 run_test "GRO chk cmsg" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472" 176 run_test "GRO with custom segment size" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720" 178 …run_test "GRO with custom segment size cmsg" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 1472… [all …]
|
| H A D | veth.sh | 227 chk_gro_flag "default - gro flag" $SRC off 228 chk_gro_flag " - peer gro flag" $DST off 237 ip netns exec $NS_DST ethtool -K veth$DST gro on 238 chk_gro_flag "with gro on - gro flag" $DST on 239 chk_gro_flag " - peer gro flag" $SRC off 243 ip netns exec $NS_DST ethtool -K veth$DST rx-udp-gro-forwarding on 250 chk_gro_flag "gro vs xdp while down - gro flag off" $DST off 265 chk_gro_flag "gro vs xdp while down - gro flag on" $DST on 280 ip netns exec $NS_DST ethtool -K veth$DST gro on 281 chk_gro_flag "with gro enabled on link down - gro flag" $DST on [all …]
|
| H A D | udpgro_fwd.sh | 129 # not enable GRO 249 run_test "No GRO" $BM_NET$DST 10 0 254 ip netns exec $NS_DST ethtool -K veth$DST rx-gro-list on 255 run_test "GRO frag list" $BM_NET$DST 1 0 258 # UDP GRO fwd skips aggregation when find an udp socket with the GRO option 261 # use NAT to circumvent GRO FWD check 265 ip netns exec $NS_DST ethtool -K veth$DST rx-udp-gro-forwarding on 268 run_test "GRO fwd" $BM_NET$DST_NAT 1 0 $BM_NET$DST 273 ip netns exec $NS_DST ethtool -K veth$DST rx-udp-gro-forwarding on 274 run_bench "UDP GRO fwd perf" $BM_NET$DST [all …]
|
| H A D | double_udp_encap.sh | 168 # enable GRO heuristic on the veth peer and ensure UDP L4 over tunnel is 194 ip netns exec "$NS_DST" ethtool -K "veth$DST" gro on 326 run_test "GSO without GRO - $ENCAP" $((GSO_SIZE * 4)) \ 340 # GRO tests imply/require geneve encap, the only one providing 341 # GRO hints 343 run_test "double tunnel GRO, no hints" $((GSO_SIZE * 4)) 4 350 '"gro-hint":1,"udp-zero-csum6-tx":1,"udp-zero-csum6-rx":1' \ 352 run_test "double tunnel GRO" $((GSO_SIZE * 4)) 1 355 create_ns_gso_gro '"gro-hint":1,"udp-csum":1' '"udp-csum":1' 356 run_test "double tunnel GRO - csum complete" $((GSO_SIZE * 4))\ [all …]
|
| H A D | big_tcp.sh | 138 ip net exec $ROUTER_NS ethtool -K link1 gro $gw_gro 140 ip net exec $SERVER_NS ethtool -K link3 gro $ser_gro 160 echo "CLI GSO | GW GRO | GW GSO | SER GRO" && \
|
| /linux/tools/testing/selftests/drivers/net/ |
| H A D | gro.py | 5 GRO (Generic Receive Offload) conformance tests. 7 Validates that GRO coalescing works correctly by running the gro 117 """ Setup hardware loopback mode for GRO testing. """ 120 cfg.bin_local = cfg.test_dir / "gro" 142 "rx-gro-hw": False, 147 "rx-gro-hw": True, 150 # Some NICs treat HW GRO as a GRO sub-feature so disabling GRO 151 # will also clear HW GRO. Use a hack of installing XDP generic 152 # to skip SW GRO, even when enabled. 154 if not feat["rx-gro-hw"]["active"]: [all …]
|
| H A D | Makefile | 9 gro \ 14 gro.py \
|
| /linux/include/net/ |
| H A D | gro.h | 53 /* portion of the cb set to zero at every gro iteration */ 62 /* Used in tunnel GRO receive */ 65 /* GRO checksum is valid */ 83 /* GRO is done by frag_list pointer chaining. */ 213 /* GRO checksum functions. These are logical equivalents of the normal 214 * checksum functions (in skbuff.h) except that they operate on the GRO 257 * during GRO. This saves work if we fallback to normal path. in skb_gro_incr_csum_unnecessary() 503 void __gro_flush(struct gro_node *gro, bool flush_old); 505 static inline void gro_flush(struct gro_node *gro, bool flush_old) in gro_flush() argument 507 if (!gro->bitmask) in gro_flush() [all …]
|
| H A D | busy_poll.h | 131 const struct gro_node *gro) in __skb_mark_napi_id() argument 138 skb->napi_id = gro->cached_napi_id; in __skb_mark_napi_id() 145 __skb_mark_napi_id(skb, &napi->gro); in skb_mark_napi_id()
|
| /linux/Documentation/netlink/specs/ |
| H A D | netdev.yaml | 278 name: gro-flush-timeout 281 value will also prevent GRO from flushing recent super-frames at 441 name: rx-hw-gro-packets 444 device. Counts only packets coalesced with the HW-GRO netdevice 448 name: rx-hw-gro-bytes 449 doc: See `rx-hw-gro-packets`. 452 name: rx-hw-gro-wire-packets 455 HW-GRO netdevice feature. LRO-coalesced packets are not counted. 458 name: rx-hw-gro-wire-bytes 459 doc: See `rx-hw-gro-wire-packets`. [all …]
|
| /linux/tools/net/ynl/ynltool/ |
| H A D | qstats.c | 74 jsonw_uint_field(json_wtr, "hw-gro-packets", qs->rx_hw_gro_packets); in print_json_qstats() 76 jsonw_uint_field(json_wtr, "hw-gro-bytes", qs->rx_hw_gro_bytes); in print_json_qstats() 78 jsonw_uint_field(json_wtr, "hw-gro-wire-packets", qs->rx_hw_gro_wire_packets); in print_json_qstats() 80 jsonw_uint_field(json_wtr, "hw-gro-wire-bytes", qs->rx_hw_gro_wire_bytes); in print_json_qstats() 197 /* RX GRO counters */ in print_plain_qstats() 198 print_one(qs->_present.rx_hw_gro_packets, "rx-hw-gro-packets", in print_plain_qstats() 200 print_one(qs->_present.rx_hw_gro_bytes, "rx-hw-gro-bytes", in print_plain_qstats() 202 print_one(qs->_present.rx_hw_gro_wire_packets, "rx-hw-gro-wire-packets", in print_plain_qstats() 204 print_one(qs->_present.rx_hw_gro_wire_bytes, "rx-hw-gro-wire-bytes", in print_plain_qstats() 576 p_err("hw-gro command takes no arguments"); in do_hw_gro() [all …]
|
| /linux/Documentation/networking/device_drivers/ethernet/intel/ |
| H A D | fm10k.rst | 89 Generic Receive Offload, aka GRO 91 The driver supports the in-kernel software implementation of GRO. GRO has 93 utilization can be significantly reduced when under large Rx load. GRO is an 94 evolution of the previously-used LRO interface. GRO is able to coalesce
|
| /linux/Documentation/networking/ |
| H A D | netdev-features.rst | 162 * rx-gro-hw 164 This requests that the NIC enables Hardware GRO (generic receive offload). 165 Hardware GRO is basically the exact reverse of TSO, and is generally 166 stricter than Hardware LRO. A packet stream merged by Hardware GRO must 168 Hardware GRO is dependent on RXCSUM since every packet successfully merged
|
| /linux/tools/testing/selftests/bpf/prog_tests/ |
| H A D | xdp_do_redirect.c | 187 /* Enable GRO */ in test_xdp_do_redirect() 188 SYS(out, "ethtool -K veth_src gro on"); in test_xdp_do_redirect() 189 SYS(out, "ethtool -K veth_dst gro on"); in test_xdp_do_redirect() 192 if (!ASSERT_OK(err, "veth_src bpf_xdp_query gro on")) in test_xdp_do_redirect() 199 "veth_src query_opts.feature_flags gro on")) in test_xdp_do_redirect() 203 if (!ASSERT_OK(err, "veth_dst bpf_xdp_query gro on")) in test_xdp_do_redirect() 210 "veth_dst query_opts.feature_flags gro on")) in test_xdp_do_redirect()
|
| /linux/net/ipv6/ |
| H A D | exthdrs_offload.c | 3 * IPV6 GSO/GRO offload support 6 * IPV6 Extension Header GSO/GRO support
|
| H A D | tcpv6_offload.c | 3 * IPV6 GSO/GRO offload support 6 * TCPv6 GSO/GRO support 11 #include <net/gro.h>
|
| H A D | esp6_offload.c | 3 * IPV6 GSO/GRO offload support 9 * ESP GRO support 19 #include <net/gro.h> 435 MODULE_DESCRIPTION("IPV6 GSO/GRO offload support");
|
| /linux/net/ipv4/ |
| H A D | gre_offload.c | 3 * IPV4 GSO/GRO offload support 13 #include <net/gro.h> 147 * for GRO, this is problematic for GSO hence can not be enabled in gre_gro_receive() 148 * here because a GRO pkt may end up in the forwarding path, thus in gre_gro_receive()
|
| H A D | esp4_offload.c | 3 * IPV4 GSO/GRO offload support 9 * ESP GRO support 19 #include <net/gro.h> 414 MODULE_DESCRIPTION("IPV4 GSO/GRO offload support");
|
| /linux/Documentation/networking/device_drivers/ethernet/microsoft/ |
| H A D | netvsc.rst | 51 Generic Receive Offload, aka GRO 53 The driver supports GRO and it is enabled by default. GRO coalesces
|
| /linux/kernel/bpf/ |
| H A D | cpumap.c | 38 #include <net/gro.h> 73 struct gro_node gro; member 282 * If the ring is empty, to not hold GRO packets in the stack for too in cpu_map_gro_flush() 287 gro_flush_normal(&rcpu->gro, !empty && HZ >= 1000); in cpu_map_gro_flush() 393 gro_receive_skb(&rcpu->gro, skbs[i]); in cpu_map_kthread_run() 472 gro_init(&rcpu->gro); in __cpu_map_entry_alloc() 506 gro_cleanup(&rcpu->gro); in __cpu_map_entry_alloc() 536 gro_cleanup(&rcpu->gro); in __cpu_map_entry_free()
|
| /linux/tools/testing/selftests/net/netfilter/ |
| H A D | nft_queue.sh | 623 # Only queue unconfirmed fraglist gro skbs to userspace. 641 …ip netns exec "$nsrouter" ethtool -K "veth0" rx-udp-gro-forwarding on rx-gro-list on generic-recei… 678 ip netns exec "$nsrouter" ethtool -K "veth0" rx-udp-gro-forwarding off 679 ip netns exec "$nsrouter" ethtool -K "veth1" rx-udp-gro-forwarding off 682 # happens when gro did not build at least on aggregate 707 echo "PASS: fraglist gro skb passed with conntrack entry" 709 echo "$errprefix fraglist gro skb passed without conntrack entry"
|
| /linux/include/linux/ |
| H A D | udp.h | 39 UDP_FLAGS_GRO_ENABLED, /* Request GRO aggregation */ 91 /* GRO functions for UDP socket */ 114 * Accounting for the tunnel GRO fastpath.
|
| /linux/Documentation/networking/device_drivers/ethernet/mellanox/mlx5/ |
| H A D | counters.rst | 191 - Number of received packets processed using hardware-accelerated GRO. The 192 number of hardware GRO offloaded packets received on ring i. Only true GRO 193 packets are counted: only packets that are in an SKB with a GRO count > 1. 197 - Number of received bytes processed using hardware-accelerated GRO. The 198 number of hardware GRO offloaded bytes received on ring i. Only true GRO 199 packets are counted: only packets that are in an SKB with a GRO count > 1. 203 - The number of GRO SKBs constructed from hardware-accelerated GRO. Only SKBs 204 with a GRO count > 1 are counted. 208 - Number of receive packets using hardware-accelerated GRO that have large
|