/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 with custom segment size cmsg" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 1472… [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 79 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()
|
H A D | udp.h | 592 * Segmentation in UDP receive path is only for UDP GRO, drop udp in udp_rcv_segment() 607 * CHECKSUM_NONE in __udp_gso_segment. UDP GRO indeed builds partial in udp_rcv_segment() 638 /* UDP-lite can't land here - no GRO */ in udp_post_segment_fix_csum() 643 * UDP tunnel(xmit) -> veth (segmentation) -> veth (gro) -> UDP tunnel (rx) in udp_post_segment_fix_csum() 648 * have a valid checksum, as the GRO engine validates the UDP csum in udp_post_segment_fix_csum()
|
/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 440 name: rx-hw-gro-packets 443 device. Counts only packets coalesced with the HW-GRO netdevice 447 name: rx-hw-gro-bytes 448 doc: See `rx-hw-gro-packets`. 451 name: rx-hw-gro-wire-packets 454 HW-GRO netdevice feature. LRO-coalesced packets are not counted. 457 name: rx-hw-gro-wire-bytes 458 doc: See `rx-hw-gro-wire-packets`. [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/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 | 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 313 /* Common GRO receive for SIT and IP6IP6 */ in sit_ip6ip6_gro_receive() 328 /* Common GRO receive for SIT and IP6IP6 */ in ip4ip6_gro_receive()
|
H A D | ip6_offload.h | 3 * IPV6 GSO/GRO offload support
|
/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 745 * Under small packet flood GRO count could elsewhere grow a lot in udp_gro_receive_segment() 748 * otherwise complete the GRO packet. in udp_gro_receive_segment() 801 * wasn't detected above, do not GRO. in udp_gro_receive() 813 /* no GRO, be sure flush the current packet */ in udp_gro_receive() 823 /* 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/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_normal(&rcpu->gro, !empty && HZ >= 1000); in cpu_map_gro_flush() 391 gro_receive_skb(&rcpu->gro, skbs[i]); in cpu_map_kthread_run() 469 gro_init(&rcpu->gro); in __cpu_map_entry_alloc() 498 gro_cleanup(&rcpu->gro); in __cpu_map_entry_alloc() 528 gro_cleanup(&rcpu->gro); in __cpu_map_entry_free()
|
/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/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/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)
|