blob: 82140a62517e15ddeea193f37b9927ee19e29c9a [file] [log] [blame]
The Android Open Source Project1dc9e472009-03-03 19:28:35 -08001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef _LINUX_SKBUFF_H
13#define _LINUX_SKBUFF_H
Ben Cheng4b29af02012-03-07 16:14:53 -080014
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080015#include <linux/kernel.h>
16#include <linux/compiler.h>
17#include <linux/time.h>
18#include <linux/cache.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080019
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080020#include <asm/atomic.h>
21#include <asm/types.h>
22#include <linux/spinlock.h>
23#include <linux/mm.h>
24#include <linux/highmem.h>
25#include <linux/poll.h>
26#include <linux/net.h>
27#include <linux/textsearch.h>
28#include <net/checksum.h>
29#include <linux/dmaengine.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080030
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080031#define HAVE_ALLOC_SKB
32#define HAVE_ALIGNABLE_SKB
Ben Cheng4b29af02012-03-07 16:14:53 -080033
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080034#define CHECKSUM_NONE 0
35#define CHECKSUM_HW 1
36#define CHECKSUM_UNNECESSARY 2
Ben Cheng4b29af02012-03-07 16:14:53 -080037
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080038#define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) & ~(SMP_CACHE_BYTES - 1))
39#define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) - sizeof(struct skb_shared_info)) & ~(SMP_CACHE_BYTES - 1))
40#define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0))
41#define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2))
Ben Cheng4b29af02012-03-07 16:14:53 -080042
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080043struct net_device;
Ben Cheng4b29af02012-03-07 16:14:53 -080044
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080045struct sk_buff_head {
Ben Cheng4b29af02012-03-07 16:14:53 -080046
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080047 struct sk_buff *next;
48 struct sk_buff *prev;
Ben Cheng4b29af02012-03-07 16:14:53 -080049
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080050 __u32 qlen;
51 spinlock_t lock;
52};
Ben Cheng4b29af02012-03-07 16:14:53 -080053
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080054struct sk_buff;
Ben Cheng4b29af02012-03-07 16:14:53 -080055
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080056#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2)
Ben Cheng4b29af02012-03-07 16:14:53 -080057
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080058typedef struct skb_frag_struct skb_frag_t;
Ben Cheng4b29af02012-03-07 16:14:53 -080059
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080060struct skb_frag_struct {
61 struct page *page;
62 __u16 page_offset;
63 __u16 size;
64};
Ben Cheng4b29af02012-03-07 16:14:53 -080065
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080066struct skb_shared_info {
67 atomic_t dataref;
68 unsigned short nr_frags;
69 unsigned short gso_size;
Ben Cheng4b29af02012-03-07 16:14:53 -080070
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080071 unsigned short gso_segs;
72 unsigned short gso_type;
73 unsigned int ip6_frag_id;
74 struct sk_buff *frag_list;
75 skb_frag_t frags[MAX_SKB_FRAGS];
76};
Ben Cheng4b29af02012-03-07 16:14:53 -080077
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080078#define SKB_DATAREF_SHIFT 16
79#define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -080080
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080081struct skb_timeval {
82 u32 off_sec;
83 u32 off_usec;
84};
Ben Cheng4b29af02012-03-07 16:14:53 -080085
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080086enum {
87 SKB_FCLONE_UNAVAILABLE,
88 SKB_FCLONE_ORIG,
89 SKB_FCLONE_CLONE,
90};
Ben Cheng4b29af02012-03-07 16:14:53 -080091
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080092enum {
93 SKB_GSO_TCPV4 = 1 << 0,
94 SKB_GSO_UDP = 1 << 1,
Ben Cheng4b29af02012-03-07 16:14:53 -080095
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080096 SKB_GSO_DODGY = 1 << 2,
Ben Cheng4b29af02012-03-07 16:14:53 -080097
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080098 SKB_GSO_TCP_ECN = 1 << 3,
Ben Cheng4b29af02012-03-07 16:14:53 -080099
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800100 SKB_GSO_TCPV6 = 1 << 4,
101};
Ben Cheng4b29af02012-03-07 16:14:53 -0800102
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800103struct sk_buff {
Ben Cheng4b29af02012-03-07 16:14:53 -0800104
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800105 struct sk_buff *next;
106 struct sk_buff *prev;
Ben Cheng4b29af02012-03-07 16:14:53 -0800107
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800108 struct sock *sk;
109 struct skb_timeval tstamp;
110 struct net_device *dev;
111 struct net_device *input_dev;
Ben Cheng4b29af02012-03-07 16:14:53 -0800112
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800113 union {
114 struct tcphdr *th;
115 struct udphdr *uh;
116 struct icmphdr *icmph;
117 struct igmphdr *igmph;
118 struct iphdr *ipiph;
119 struct ipv6hdr *ipv6h;
120 unsigned char *raw;
121 } h;
Ben Cheng4b29af02012-03-07 16:14:53 -0800122
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800123 union {
124 struct iphdr *iph;
125 struct ipv6hdr *ipv6h;
126 struct arphdr *arph;
127 unsigned char *raw;
128 } nh;
Ben Cheng4b29af02012-03-07 16:14:53 -0800129
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800130 union {
131 unsigned char *raw;
132 } mac;
Ben Cheng4b29af02012-03-07 16:14:53 -0800133
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800134 struct dst_entry *dst;
135 struct sec_path *sp;
Ben Cheng4b29af02012-03-07 16:14:53 -0800136
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800137 char cb[48];
Ben Cheng4b29af02012-03-07 16:14:53 -0800138
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800139 unsigned int len,
140 data_len,
141 mac_len,
142 csum;
143 __u32 priority;
144 __u8 local_df:1,
145 cloned:1,
146 ip_summed:2,
147 nohdr:1,
148 nfctinfo:3;
149 __u8 pkt_type:3,
150 fclone:2,
151 ipvs_property:1;
152 __be16 protocol;
Ben Cheng4b29af02012-03-07 16:14:53 -0800153
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800154 void (*destructor)(struct sk_buff *skb);
Ben Cheng4b29af02012-03-07 16:14:53 -0800155
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800156 unsigned int truesize;
157 atomic_t users;
158 unsigned char *head,
159 *data,
160 *tail,
161 *end;
162};
Ben Cheng4b29af02012-03-07 16:14:53 -0800163
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800164#endif