net: Add generic packet offload infrastructure.
Create a new data structure to contain the GRO/GSO callbacks and add a new registration mechanism. Singed-off-by: Vlad Yasevich <vyasevic@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
efad0c14b7
commit
62532da9d5
@@ -1521,6 +1521,17 @@ struct packet_type {
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct packet_offload {
|
||||
__be16 type; /* This is really htons(ether_type). */
|
||||
struct sk_buff *(*gso_segment)(struct sk_buff *skb,
|
||||
netdev_features_t features);
|
||||
int (*gso_send_check)(struct sk_buff *skb);
|
||||
struct sk_buff **(*gro_receive)(struct sk_buff **head,
|
||||
struct sk_buff *skb);
|
||||
int (*gro_complete)(struct sk_buff *skb);
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
#include <linux/notifier.h>
|
||||
|
||||
/* netdevice notifier chain. Please remember to update the rtnetlink
|
||||
@@ -1615,6 +1626,9 @@ extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short
|
||||
extern void dev_add_pack(struct packet_type *pt);
|
||||
extern void dev_remove_pack(struct packet_type *pt);
|
||||
extern void __dev_remove_pack(struct packet_type *pt);
|
||||
extern void dev_add_offload(struct packet_offload *po);
|
||||
extern void dev_remove_offload(struct packet_offload *po);
|
||||
extern void __dev_remove_offload(struct packet_offload *po);
|
||||
|
||||
extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags,
|
||||
unsigned short mask);
|
||||
|
Reference in New Issue
Block a user