/linux/net/core/ |
H A D | gro.c | 3 #include <net/gro.h> 254 static void gro_complete(struct gro_node *gro, struct sk_buff *skb) 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() 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() 308 * gro 253 gro_complete(struct gro_node * gro,struct sk_buff * skb) gro_complete() argument 289 __gro_flush_chain(struct gro_node * gro,u32 index,bool flush_old) __gro_flush_chain() argument 311 __gro_flush(struct gro_node * gro,bool flush_old) __gro_flush() argument 441 gro_flush_oldest(struct gro_node * gro,struct list_head * head) gro_flush_oldest() argument 460 dev_gro_receive(struct gro_node * gro,struct sk_buff * skb) dev_gro_receive() argument 596 gro_skb_finish(struct gro_node * gro,struct sk_buff * skb,gro_result_t ret) gro_skb_finish() argument 622 gro_receive_skb(struct gro_node * gro,struct sk_buff * skb) gro_receive_skb() argument 795 gro_init(struct gro_node * gro) gro_init() argument 809 gro_cleanup(struct gro_node * gro) gro_cleanup() argument [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 | 41 gro.sh \ 133 gro \
|
H A D | .gitignore | 10 gro
|
H A D | skf_net_off.sh | 18 ip netns exec $NS ethtool -K tap1 gro off
|
/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 in skb_gro_postpull_rcsum() 214 * checksum functions (in skbuff.h) except that they operate on the GRO in skb_gro_postpull_rcsum() 257 * during GRO. This saves work if we fallback to normal path. in skb_gro_incr_csum_unnecessary() 504 void __gro_flush(struct gro_node *gro, bool flush_old); in gro_receive_network_flush() 506 static inline void gro_flush(struct gro_node *gro, bool flush_old) in gro_receive_network_flush() 508 if (!gro in gro_receive_network_flush() 514 gro_flush(struct gro_node * gro,bool flush_old) gro_flush() argument 528 gro_normal_list(struct gro_node * gro) gro_normal_list() argument 537 gro_flush_normal(struct gro_node * gro,bool flush_old) gro_flush_normal() argument 546 gro_normal_one(struct gro_node * gro,struct sk_buff * skb,int segs) gro_normal_one() argument [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 | 606 * Segmentation in UDP receive path is only for UDP GRO, drop udp in udp_rcv_segment() 621 * CHECKSUM_NONE in __udp_gso_segment. UDP GRO indeed builds partial in udp_rcv_segment() 652 /* UDP-lite can't land here - no GRO */ in udp_post_segment_fix_csum() 657 * UDP tunnel(xmit) -> veth (segmentation) -> veth (gro) -> UDP tunnel (rx) in udp_post_segment_fix_csum() 662 * have a valid checksum, as the GRO engine validates the UDP csum
|
/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
|
H A D | udp_offload.c | 3 * IPV6 GSO/GRO offload support 16 #include <net/gro.h>
|
/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/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 */ 91 /* GRO functions for UDP socket */ 114 * Accounting for the tunnel GRO fastpath.
|