udp: pass udp_offload struct to UDP gro callbacks
This patch introduces udp_offload_callbacks which has the same GRO functions (but not a GSO function) as offload_callbacks, except there is an argument to a udp_offload struct passed to gro_receive and gro_complete functions. This additional argument can be used to retrieve the per port structure of the encapsulation for use in gro processing (mostly by doing container_of on the structure). Signed-off-by: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
d823ab68fb
commit
a2b12f3c7a
@@ -1969,7 +1969,7 @@ struct offload_callbacks {
|
||||
struct sk_buff *(*gso_segment)(struct sk_buff *skb,
|
||||
netdev_features_t features);
|
||||
struct sk_buff **(*gro_receive)(struct sk_buff **head,
|
||||
struct sk_buff *skb);
|
||||
struct sk_buff *skb);
|
||||
int (*gro_complete)(struct sk_buff *skb, int nhoff);
|
||||
};
|
||||
|
||||
@@ -1979,10 +1979,21 @@ struct packet_offload {
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct udp_offload;
|
||||
|
||||
struct udp_offload_callbacks {
|
||||
struct sk_buff **(*gro_receive)(struct sk_buff **head,
|
||||
struct sk_buff *skb,
|
||||
struct udp_offload *uoff);
|
||||
int (*gro_complete)(struct sk_buff *skb,
|
||||
int nhoff,
|
||||
struct udp_offload *uoff);
|
||||
};
|
||||
|
||||
struct udp_offload {
|
||||
__be16 port;
|
||||
u8 ipproto;
|
||||
struct offload_callbacks callbacks;
|
||||
struct udp_offload_callbacks callbacks;
|
||||
};
|
||||
|
||||
/* often modified stats are per cpu, other are shared (netdev->stats) */
|
||||
|
Reference in New Issue
Block a user