udp: Add GRO functions to UDP socket
This patch adds GRO functions (gro_receive and gro_complete) to UDP sockets. udp_gro_receive is changed to perform socket lookup on a packet. If a socket is found the related GRO functions are called. This features obsoletes using UDP offload infrastructure for GRO (udp_offload). This has the advantage of not being limited to provide offload on a per port basis, GRO is now applied to whatever individual UDP sockets are bound to. This also allows the possbility of "application defined GRO"-- that is we can attach something like a BPF program to a UDP socket to perfrom GRO on an application layer protocol. Signed-off-by: Tom Herbert <tom@herbertland.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
63058308cd
commit
a6024562ff
@@ -167,9 +167,12 @@ static inline void udp_csum_pull_header(struct sk_buff *skb)
|
||||
UDP_SKB_CB(skb)->cscov -= sizeof(struct udphdr);
|
||||
}
|
||||
|
||||
typedef struct sock *(*udp_lookup_t)(struct sk_buff *skb, __be16 sport,
|
||||
__be16 dport);
|
||||
|
||||
struct sk_buff **udp_gro_receive(struct sk_buff **head, struct sk_buff *skb,
|
||||
struct udphdr *uh);
|
||||
int udp_gro_complete(struct sk_buff *skb, int nhoff);
|
||||
struct udphdr *uh, udp_lookup_t lookup);
|
||||
int udp_gro_complete(struct sk_buff *skb, int nhoff, udp_lookup_t lookup);
|
||||
|
||||
static inline struct udphdr *udp_gro_udphdr(struct sk_buff *skb)
|
||||
{
|
||||
|
Reference in New Issue
Block a user