--- zzzz-none-000/linux-5.15.111/net/ipv4/udp.c 2023-05-11 14:00:40.000000000 +0000 +++ puma7-atom-6670-761/linux-5.15.111/net/ipv4/udp.c 2024-02-07 10:23:30.000000000 +0000 @@ -71,6 +71,10 @@ * Derek Atkins : Add Encapulation Support * James Chapman : Add L2TP encapsulation type. */ +/* + Includes Intel Corporation's changes/modifications dated: 2018 + Changed/modified portions - Copyright (C) 2018, Intel Corporation. +*/ #define pr_fmt(fmt) "UDP: " fmt @@ -117,6 +121,8 @@ #include #endif +#include + struct udp_table udp_table __read_mostly; EXPORT_SYMBOL(udp_table); @@ -126,6 +132,9 @@ atomic_long_t udp_memory_allocated; EXPORT_SYMBOL(udp_memory_allocated); +bool toe_udp_early_demux_no_scan_limit = false; +EXPORT_SYMBOL(toe_udp_early_demux_no_scan_limit); + #define MAX_UDP_PORTS 65536 #define PORTS_PER_CHAIN (MAX_UDP_PORTS / UDP_HTABLE_SIZE_MIN) @@ -1119,6 +1128,9 @@ ipcm_init_sk(&ipc, inet); ipc.gso_size = READ_ONCE(up->gso_size); +#ifdef CONFIG_TI_META_DATA + ipc.ti_meta_info = 0; +#endif if (msg->msg_controllen) { err = udp_cmsg_send(sk, msg, &ipc.gso_size); @@ -2126,6 +2138,7 @@ static int udp_queue_rcv_one_skb(struct sock *sk, struct sk_buff *skb) { struct udp_sock *up = udp_sk(sk); + struct net *net = dev_net(skb->dev); int is_udplite = IS_UDPLITE(sk); /* @@ -2135,6 +2148,8 @@ goto drop; nf_reset_ct(skb); + avm_pa_add_local_session(AVM_PA_NET_IP_DEVINFO(net), skb, sk); + if (static_branch_unlikely(&udp_encap_needed_key) && up->encap_type) { int (*encap_rcv)(struct sock *sk, struct sk_buff *skb); @@ -2557,12 +2572,14 @@ INET_ADDR_COOKIE(acookie, rmt_addr, loc_addr); const __portpair ports = INET_COMBINED_PORTS(rmt_port, hnum); struct sock *sk; + bool scan_limit = !toe_udp_early_demux_no_scan_limit; udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) { if (INET_MATCH(net, sk, acookie, ports, dif, sdif)) return sk; - /* Only check first socket in chain */ - break; + if (scan_limit) + /* Only check first socket in chain */ + break; } return NULL; }