aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/skbuff.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/skbuff.h')
-rw-r--r--include/linux/skbuff.h26
1 files changed, 19 insertions, 7 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index bf221d65d9ad..d0ae90af0b40 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -122,8 +122,14 @@ struct sk_buff_head {
122 122
123struct sk_buff; 123struct sk_buff;
124 124
125/* To allow 64K frame to be packed as single skb without frag_list */ 125/* To allow 64K frame to be packed as single skb without frag_list. Since
126 * GRO uses frags we allocate at least 16 regardless of page size.
127 */
128#if (65536/PAGE_SIZE + 2) < 16
129#define MAX_SKB_FRAGS 16UL
130#else
126#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2) 131#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2)
132#endif
127 133
128typedef struct skb_frag_struct skb_frag_t; 134typedef struct skb_frag_struct skb_frag_t;
129 135
@@ -388,10 +394,7 @@ struct sk_buff {
388 kmemcheck_bitfield_begin(flags2); 394 kmemcheck_bitfield_begin(flags2);
389 __u16 queue_mapping:16; 395 __u16 queue_mapping:16;
390#ifdef CONFIG_IPV6_NDISC_NODETYPE 396#ifdef CONFIG_IPV6_NDISC_NODETYPE
391 __u8 ndisc_nodetype:2, 397 __u8 ndisc_nodetype:2;
392 deliver_no_wcard:1;
393#else
394 __u8 deliver_no_wcard:1;
395#endif 398#endif
396 __u8 ooo_okay:1; 399 __u8 ooo_okay:1;
397 kmemcheck_bitfield_end(flags2); 400 kmemcheck_bitfield_end(flags2);
@@ -471,7 +474,7 @@ static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
471extern void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst); 474extern void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst);
472 475
473/** 476/**
474 * skb_dst_is_noref - Test if skb dst isnt refcounted 477 * skb_dst_is_noref - Test if skb dst isn't refcounted
475 * @skb: buffer 478 * @skb: buffer
476 */ 479 */
477static inline bool skb_dst_is_noref(const struct sk_buff *skb) 480static inline bool skb_dst_is_noref(const struct sk_buff *skb)
@@ -1801,6 +1804,15 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
1801 prefetch(skb->prev), (skb != (struct sk_buff *)(queue)); \ 1804 prefetch(skb->prev), (skb != (struct sk_buff *)(queue)); \
1802 skb = skb->prev) 1805 skb = skb->prev)
1803 1806
1807#define skb_queue_reverse_walk_safe(queue, skb, tmp) \
1808 for (skb = (queue)->prev, tmp = skb->prev; \
1809 skb != (struct sk_buff *)(queue); \
1810 skb = tmp, tmp = skb->prev)
1811
1812#define skb_queue_reverse_walk_from_safe(queue, skb, tmp) \
1813 for (tmp = skb->prev; \
1814 skb != (struct sk_buff *)(queue); \
1815 skb = tmp, tmp = skb->prev)
1804 1816
1805static inline bool skb_has_frag_list(const struct sk_buff *skb) 1817static inline bool skb_has_frag_list(const struct sk_buff *skb)
1806{ 1818{
@@ -1868,7 +1880,7 @@ extern void skb_split(struct sk_buff *skb,
1868extern int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, 1880extern int skb_shift(struct sk_buff *tgt, struct sk_buff *skb,
1869 int shiftlen); 1881 int shiftlen);
1870 1882
1871extern struct sk_buff *skb_segment(struct sk_buff *skb, int features); 1883extern struct sk_buff *skb_segment(struct sk_buff *skb, u32 features);
1872 1884
1873static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, 1885static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
1874 int len, void *buffer) 1886 int len, void *buffer)