/linux/net/core/ |
H A D | gro.c | 2 #include <net/gro.h> 253 static void gro_complete(struct gro_node *gro, struct sk_buff *skb) in gro_complete() argument 286 gro_normal_one(gro, skb, NAPI_GRO_CB(skb)->count); in gro_complete() 289 static void __gro_flush_chain(struct gro_node *gro, u32 index, bool flush_old) in __gro_flush_chain() argument 291 struct list_head *head = &gro->hash[index].list; in __gro_flush_chain() 298 gro_complete(gro, skb); in __gro_flush_chain() 299 gro->hash[index].count--; in __gro_flush_chain() 302 if (!gro->hash[index].count) in __gro_flush_chain() 303 __clear_bit(index, &gro->bitmask); in __gro_flush_chain() 307 * gro->hash[].list contains packets ordered by age. [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 wit [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" && \
|
H A D | gro.sh | 26 ip netns exec $server_ns ./gro "${ARGS[@]}" "--rx" "--iface" "server" \ 30 ip netns exec $client_ns ./gro "${ARGS[@]}" "--iface" "client" \
|
H A D | Makefile | 33 TEST_PROGS += gro.sh 77 TEST_GEN_FILES += gro
|
H A D | .gitignore | 10 gro
|
/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 */ 86 /* GRO is done by frag_list pointer chaining. */ 216 /* GRO checksum functions. These are logical equivalents of the normal 217 * checksum functions (in skbuff.h) except that they operate on the GRO 260 * during GRO. This saves work if we fallback to normal path. in skb_gro_incr_csum_unnecessary() 512 void __gro_flush(struct gro_node *gro, bool flush_old); 514 static inline void gro_flush(struct gro_node *gro, bool flush_old) in gro_flush() argument 516 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/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/tools/testing/selftests/bpf/prog_tests/ |
H A D | xdp_do_redirect.c | 178 /* Enable GRO */ in test_xdp_do_redirect() 179 SYS(out, "ethtool -K veth_src gro on"); in test_xdp_do_redirect() 180 SYS(out, "ethtool -K veth_dst gro on"); in test_xdp_do_redirect() 183 if (!ASSERT_OK(err, "veth_src bpf_xdp_query gro on")) in test_xdp_do_redirect() 190 "veth_src query_opts.feature_flags gro on")) in test_xdp_do_redirect() 194 if (!ASSERT_OK(err, "veth_dst bpf_xdp_query gro on")) in test_xdp_do_redirect() 201 "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 | ip6_offload.c | 3 * IPV6 GSO/GRO offload support 18 #include <net/gro.h> 23 /* All GRO functions are always builtin, except UDP over ipv6, which lays in 311 /* Common GRO receive for SIT and IP6IP6 */ in sit_ip6ip6_gro_receive() 326 /* Common GRO receive for SIT and IP6IP6 */ in ip4ip6_gro_receive()
|
H A D | ip6_offload.h | 3 * IPV6 GSO/GRO offload support
|
H A D | udp_offload.c | 3 * IPV6 GSO/GRO offload support 16 #include <net/gro.h>
|
/linux/kernel/bpf/ |
H A D | cpumap.c | 37 #include <net/gro.h> 71 struct gro_node gro; member 280 * If the ring is empty, to not hold GRO packets in the stack for too in cpu_map_gro_flush() 285 gro_flush(&rcpu->gro, !empty && HZ >= 1000); in cpu_map_gro_flush() 286 gro_normal_list(&rcpu->gro); in cpu_map_gro_flush() 392 gro_receive_skb(&rcpu->gro, skbs[i]); in cpu_map_kthread_run() 470 gro_init(&rcpu->gro); in __cpu_map_entry_alloc() 499 gro_cleanup(&rcpu->gro); in __cpu_map_entry_alloc() 529 gro_cleanup(&rcpu->gro); in __cpu_map_entry_free()
|
/linux/Documentation/networking/ |
H A D | segmentation-offloads.rst | 19 * Generic Receive Offload - GRO 125 assembled by GRO should be segmented to create an identical sequence of 127 able to be reassembled back to the original by GRO. The only exception to 130 altered so that it is when a frame assembled via GRO is segmented via GSO.
|
/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 | udp_offload.c | 3 * IPV4 GSO/GRO offload support 10 #include <net/gro.h> 20 * Dummy GRO tunnel callback, exists mainly to avoid dangling/NULL 752 * Under small packet flood GRO count could elsewhere grow a lot in udp_gro_receive_segment() 755 * otherwise complete the GRO packet. in udp_gro_receive_segment() 807 * wasn't detected above, do not GRO. in udp_gro_receive() 819 /* no GRO, be sure flush the current packet */ in udp_gro_receive() 829 /* mark that this skb passed once through the tunnel gro layer */ in udp_gro_receive()
|
H A D | tcp_offload.c | 3 * IPV4 GSO/GRO offload support 6 * TCPv4 GSO/GRO support 11 #include <net/gro.h> 345 /* If skb is a GRO packet, make sure its gso_size matches prior packet mss. in tcp_gro_receive()
|
/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/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
|
/linux/tools/testing/selftests/bpf/ |
H A D | test_xdp_features.sh | 26 ethtool -K v1 gro on 28 ip netns exec ${NS} ethtool -K v0 gro on
|
/linux/include/linux/ |
H A D | netdev_features.h | 83 NETIF_F_GRO_FRAGLIST_BIT, /* Fraglist GRO */ 86 NETIF_F_GRO_UDP_FWD_BIT, /* Allow UDP GRO for forwarding */ 110 #define NETIF_F_GRO __NETIF_F(GRO)
|
H A D | udp.h | 39 UDP_FLAGS_GRO_ENABLED, /* Request GRO aggregation */ 85 /* GRO functions for UDP socket */ 106 * Accounting for the tunnel GRO fastpath.
|