diff options
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 5e8e2d50429a..bc747e5d7138 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -232,6 +232,7 @@ enum netdev_state_t | |||
| 232 | __LINK_STATE_RX_SCHED, | 232 | __LINK_STATE_RX_SCHED, |
| 233 | __LINK_STATE_LINKWATCH_PENDING, | 233 | __LINK_STATE_LINKWATCH_PENDING, |
| 234 | __LINK_STATE_DORMANT, | 234 | __LINK_STATE_DORMANT, |
| 235 | __LINK_STATE_QDISC_RUNNING, | ||
| 235 | }; | 236 | }; |
| 236 | 237 | ||
| 237 | 238 | ||
| @@ -307,9 +308,13 @@ struct net_device | |||
| 307 | #define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */ | 308 | #define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */ |
| 308 | #define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */ | 309 | #define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */ |
| 309 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ | 310 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ |
| 310 | #define NETIF_F_TSO 2048 /* Can offload TCP/IP segmentation */ | 311 | #define NETIF_F_GSO 2048 /* Enable software GSO. */ |
| 311 | #define NETIF_F_LLTX 4096 /* LockLess TX */ | 312 | #define NETIF_F_LLTX 4096 /* LockLess TX */ |
| 312 | #define NETIF_F_UFO 8192 /* Can offload UDP Large Send*/ | 313 | |
| 314 | /* Segmentation offload features */ | ||
| 315 | #define NETIF_F_GSO_SHIFT 16 | ||
| 316 | #define NETIF_F_TSO (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT) | ||
| 317 | #define NETIF_F_UFO (SKB_GSO_UDPV4 << NETIF_F_GSO_SHIFT) | ||
| 313 | 318 | ||
| 314 | #define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) | 319 | #define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) |
| 315 | #define NETIF_F_ALL_CSUM (NETIF_F_IP_CSUM | NETIF_F_GEN_CSUM) | 320 | #define NETIF_F_ALL_CSUM (NETIF_F_IP_CSUM | NETIF_F_GEN_CSUM) |
| @@ -401,6 +406,9 @@ struct net_device | |||
| 401 | struct list_head qdisc_list; | 406 | struct list_head qdisc_list; |
| 402 | unsigned long tx_queue_len; /* Max frames per queue allowed */ | 407 | unsigned long tx_queue_len; /* Max frames per queue allowed */ |
| 403 | 408 | ||
| 409 | /* Partially transmitted GSO packet. */ | ||
| 410 | struct sk_buff *gso_skb; | ||
| 411 | |||
| 404 | /* ingress path synchronizer */ | 412 | /* ingress path synchronizer */ |
| 405 | spinlock_t ingress_lock; | 413 | spinlock_t ingress_lock; |
| 406 | struct Qdisc *qdisc_ingress; | 414 | struct Qdisc *qdisc_ingress; |
| @@ -535,6 +543,7 @@ struct packet_type { | |||
| 535 | struct net_device *, | 543 | struct net_device *, |
| 536 | struct packet_type *, | 544 | struct packet_type *, |
| 537 | struct net_device *); | 545 | struct net_device *); |
| 546 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, int sg); | ||
| 538 | void *af_packet_priv; | 547 | void *af_packet_priv; |
| 539 | struct list_head list; | 548 | struct list_head list; |
| 540 | }; | 549 | }; |
| @@ -685,7 +694,8 @@ extern int dev_change_name(struct net_device *, char *); | |||
| 685 | extern int dev_set_mtu(struct net_device *, int); | 694 | extern int dev_set_mtu(struct net_device *, int); |
| 686 | extern int dev_set_mac_address(struct net_device *, | 695 | extern int dev_set_mac_address(struct net_device *, |
| 687 | struct sockaddr *); | 696 | struct sockaddr *); |
| 688 | extern void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev); | 697 | extern int dev_hard_start_xmit(struct sk_buff *skb, |
| 698 | struct net_device *dev); | ||
| 689 | 699 | ||
| 690 | extern void dev_init(void); | 700 | extern void dev_init(void); |
| 691 | 701 | ||
| @@ -959,6 +969,7 @@ extern int netdev_max_backlog; | |||
| 959 | extern int weight_p; | 969 | extern int weight_p; |
| 960 | extern int netdev_set_master(struct net_device *dev, struct net_device *master); | 970 | extern int netdev_set_master(struct net_device *dev, struct net_device *master); |
| 961 | extern int skb_checksum_help(struct sk_buff *skb, int inward); | 971 | extern int skb_checksum_help(struct sk_buff *skb, int inward); |
| 972 | extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, int sg); | ||
| 962 | #ifdef CONFIG_BUG | 973 | #ifdef CONFIG_BUG |
| 963 | extern void netdev_rx_csum_fault(struct net_device *dev); | 974 | extern void netdev_rx_csum_fault(struct net_device *dev); |
| 964 | #else | 975 | #else |
| @@ -978,6 +989,13 @@ extern void dev_seq_stop(struct seq_file *seq, void *v); | |||
| 978 | 989 | ||
| 979 | extern void linkwatch_run_queue(void); | 990 | extern void linkwatch_run_queue(void); |
| 980 | 991 | ||
| 992 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) | ||
| 993 | { | ||
| 994 | int feature = skb_shinfo(skb)->gso_type << NETIF_F_GSO_SHIFT; | ||
| 995 | return skb_shinfo(skb)->gso_size && | ||
| 996 | (dev->features & feature) != feature; | ||
| 997 | } | ||
| 998 | |||
| 981 | #endif /* __KERNEL__ */ | 999 | #endif /* __KERNEL__ */ |
| 982 | 1000 | ||
| 983 | #endif /* _LINUX_DEV_H */ | 1001 | #endif /* _LINUX_DEV_H */ |
