summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-07-09 15:50:41 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-09 15:50:41 -0700
commit09075ef0fd585fb093bb9a6cd1240272114f89cf (patch)
treec01d2cc260a18df73f785bea4de1c1cfbcbbd16f /include/linux
parentc87fed1546bd00b42ee75f26c6b45393e4bf7559 (diff)
parent1b30dd359ebec22d035e8b145751319f63772ca1 (diff)
Merge commit master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 of HEAD
* HEAD: [AX.25]: Use kzalloc [ATM] net/atm/clip.c: fix PROC_FS=n compile [PKT_SCHED]: act_api: Fix module leak while flushing actions [NET]: Fix IPv4/DECnet routing rule dumping [NET] gso: Fix up GSO packets with broken checksums [NET] gso: Add skb_is_gso [IRDA]: fix drivers/net/irda/ali-ircc.c:ali_ircc_init() [ATM]: fix possible recursive locking in skb_migrate() [ATM]: Typo in drivers/atm/Kconfig... [TG3]: add amd8131 to "write reorder" chipsets [NET]: Fix network device interface printk message priority
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/netdevice.h8
-rw-r--r--include/linux/skbuff.h5
2 files changed, 10 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 85f99f60deea..76cc099c8580 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -549,6 +549,7 @@ struct packet_type {
struct net_device *);
struct sk_buff *(*gso_segment)(struct sk_buff *skb,
int features);
+ int (*gso_send_check)(struct sk_buff *skb);
void *af_packet_priv;
struct list_head list;
};
@@ -1001,13 +1002,14 @@ static inline int net_gso_ok(int features, int gso_type)
static inline int skb_gso_ok(struct sk_buff *skb, int features)
{
- return net_gso_ok(features, skb_shinfo(skb)->gso_size ?
- skb_shinfo(skb)->gso_type : 0);
+ return net_gso_ok(features, skb_shinfo(skb)->gso_type);
}
static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
{
- return !skb_gso_ok(skb, dev->features);
+ return skb_is_gso(skb) &&
+ (!skb_gso_ok(skb, dev->features) ||
+ unlikely(skb->ip_summed != CHECKSUM_HW));
}
#endif /* __KERNEL__ */
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 3597b4f14389..0bf31b83578c 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1455,5 +1455,10 @@ static inline void skb_init_secmark(struct sk_buff *skb)
{ }
#endif
+static inline int skb_is_gso(const struct sk_buff *skb)
+{
+ return skb_shinfo(skb)->gso_size;
+}
+
#endif /* __KERNEL__ */
#endif /* _LINUX_SKBUFF_H */