diff options
author | Vlad Yasevich <vyasevic@redhat.com> | 2012-11-15 03:49:10 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-15 17:36:16 -0500 |
commit | 62532da9d5f47a7ced3b965aa73ffd5b1afbeb79 (patch) | |
tree | 520e8ca8c90116fb4f92db0c356474abed905c79 /include/linux/netdevice.h | |
parent | efad0c14b720ec3791c95e0658c3990fbc124366 (diff) |
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>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 7bf867c97043..d45a58db4ba3 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1521,6 +1521,17 @@ struct packet_type { | |||
1521 | struct list_head list; | 1521 | struct list_head list; |
1522 | }; | 1522 | }; |
1523 | 1523 | ||
1524 | struct packet_offload { | ||
1525 | __be16 type; /* This is really htons(ether_type). */ | ||
1526 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, | ||
1527 | netdev_features_t features); | ||
1528 | int (*gso_send_check)(struct sk_buff *skb); | ||
1529 | struct sk_buff **(*gro_receive)(struct sk_buff **head, | ||
1530 | struct sk_buff *skb); | ||
1531 | int (*gro_complete)(struct sk_buff *skb); | ||
1532 | struct list_head list; | ||
1533 | }; | ||
1534 | |||
1524 | #include <linux/notifier.h> | 1535 | #include <linux/notifier.h> |
1525 | 1536 | ||
1526 | /* netdevice notifier chain. Please remember to update the rtnetlink | 1537 | /* netdevice notifier chain. Please remember to update the rtnetlink |
@@ -1615,6 +1626,9 @@ extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short | |||
1615 | extern void dev_add_pack(struct packet_type *pt); | 1626 | extern void dev_add_pack(struct packet_type *pt); |
1616 | extern void dev_remove_pack(struct packet_type *pt); | 1627 | extern void dev_remove_pack(struct packet_type *pt); |
1617 | extern void __dev_remove_pack(struct packet_type *pt); | 1628 | extern void __dev_remove_pack(struct packet_type *pt); |
1629 | extern void dev_add_offload(struct packet_offload *po); | ||
1630 | extern void dev_remove_offload(struct packet_offload *po); | ||
1631 | extern void __dev_remove_offload(struct packet_offload *po); | ||
1618 | 1632 | ||
1619 | extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags, | 1633 | extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags, |
1620 | unsigned short mask); | 1634 | unsigned short mask); |