]> Pileus Git - ~andy/linux/blobdiff - include/linux/netdevice.h
net: Add generic packet offload infrastructure.
[~andy/linux] / include / linux / netdevice.h
index 7bf867c970432af72255fa7c32542746309f8124..d45a58db4ba3a8bf317b6810650d981926661e69 100644 (file)
@@ -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);