]> Pileus Git - ~andy/linux/blob - include/linux/skbuff.h
tunneling: Capture inner mac header during encapsulation.
[~andy/linux] / include / linux / skbuff.h
1 /*
2  *      Definitions for the 'struct sk_buff' memory handlers.
3  *
4  *      Authors:
5  *              Alan Cox, <gw4pts@gw4pts.ampr.org>
6  *              Florian La Roche, <rzsfl@rz.uni-sb.de>
7  *
8  *      This program is free software; you can redistribute it and/or
9  *      modify it under the terms of the GNU General Public License
10  *      as published by the Free Software Foundation; either version
11  *      2 of the License, or (at your option) any later version.
12  */
13
14 #ifndef _LINUX_SKBUFF_H
15 #define _LINUX_SKBUFF_H
16
17 #include <linux/kernel.h>
18 #include <linux/kmemcheck.h>
19 #include <linux/compiler.h>
20 #include <linux/time.h>
21 #include <linux/bug.h>
22 #include <linux/cache.h>
23
24 #include <linux/atomic.h>
25 #include <asm/types.h>
26 #include <linux/spinlock.h>
27 #include <linux/net.h>
28 #include <linux/textsearch.h>
29 #include <net/checksum.h>
30 #include <linux/rcupdate.h>
31 #include <linux/dmaengine.h>
32 #include <linux/hrtimer.h>
33 #include <linux/dma-mapping.h>
34 #include <linux/netdev_features.h>
35
36 /* Don't change this without changing skb_csum_unnecessary! */
37 #define CHECKSUM_NONE 0
38 #define CHECKSUM_UNNECESSARY 1
39 #define CHECKSUM_COMPLETE 2
40 #define CHECKSUM_PARTIAL 3
41
42 #define SKB_DATA_ALIGN(X)       (((X) + (SMP_CACHE_BYTES - 1)) & \
43                                  ~(SMP_CACHE_BYTES - 1))
44 #define SKB_WITH_OVERHEAD(X)    \
45         ((X) - SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))
46 #define SKB_MAX_ORDER(X, ORDER) \
47         SKB_WITH_OVERHEAD((PAGE_SIZE << (ORDER)) - (X))
48 #define SKB_MAX_HEAD(X)         (SKB_MAX_ORDER((X), 0))
49 #define SKB_MAX_ALLOC           (SKB_MAX_ORDER(0, 2))
50
51 /* return minimum truesize of one skb containing X bytes of data */
52 #define SKB_TRUESIZE(X) ((X) +                                          \
53                          SKB_DATA_ALIGN(sizeof(struct sk_buff)) +       \
54                          SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))
55
56 /* A. Checksumming of received packets by device.
57  *
58  *      NONE: device failed to checksum this packet.
59  *              skb->csum is undefined.
60  *
61  *      UNNECESSARY: device parsed packet and wouldbe verified checksum.
62  *              skb->csum is undefined.
63  *            It is bad option, but, unfortunately, many of vendors do this.
64  *            Apparently with secret goal to sell you new device, when you
65  *            will add new protocol to your host. F.e. IPv6. 8)
66  *
67  *      COMPLETE: the most generic way. Device supplied checksum of _all_
68  *          the packet as seen by netif_rx in skb->csum.
69  *          NOTE: Even if device supports only some protocols, but
70  *          is able to produce some skb->csum, it MUST use COMPLETE,
71  *          not UNNECESSARY.
72  *
73  *      PARTIAL: identical to the case for output below.  This may occur
74  *          on a packet received directly from another Linux OS, e.g.,
75  *          a virtualised Linux kernel on the same host.  The packet can
76  *          be treated in the same way as UNNECESSARY except that on
77  *          output (i.e., forwarding) the checksum must be filled in
78  *          by the OS or the hardware.
79  *
80  * B. Checksumming on output.
81  *
82  *      NONE: skb is checksummed by protocol or csum is not required.
83  *
84  *      PARTIAL: device is required to csum packet as seen by hard_start_xmit
85  *      from skb->csum_start to the end and to record the checksum
86  *      at skb->csum_start + skb->csum_offset.
87  *
88  *      Device must show its capabilities in dev->features, set
89  *      at device setup time.
90  *      NETIF_F_HW_CSUM - it is clever device, it is able to checksum
91  *                        everything.
92  *      NETIF_F_IP_CSUM - device is dumb. It is able to csum only
93  *                        TCP/UDP over IPv4. Sigh. Vendors like this
94  *                        way by an unknown reason. Though, see comment above
95  *                        about CHECKSUM_UNNECESSARY. 8)
96  *      NETIF_F_IPV6_CSUM about as dumb as the last one but does IPv6 instead.
97  *
98  *      UNNECESSARY: device will do per protocol specific csum. Protocol drivers
99  *      that do not want net to perform the checksum calculation should use
100  *      this flag in their outgoing skbs.
101  *      NETIF_F_FCOE_CRC  this indicates the device can do FCoE FC CRC
102  *                        offload. Correspondingly, the FCoE protocol driver
103  *                        stack should use CHECKSUM_UNNECESSARY.
104  *
105  *      Any questions? No questions, good.              --ANK
106  */
107
108 struct net_device;
109 struct scatterlist;
110 struct pipe_inode_info;
111
112 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
113 struct nf_conntrack {
114         atomic_t use;
115 };
116 #endif
117
118 #ifdef CONFIG_BRIDGE_NETFILTER
119 struct nf_bridge_info {
120         atomic_t                use;
121         unsigned int            mask;
122         struct net_device       *physindev;
123         struct net_device       *physoutdev;
124         unsigned long           data[32 / sizeof(unsigned long)];
125 };
126 #endif
127
128 struct sk_buff_head {
129         /* These two members must be first. */
130         struct sk_buff  *next;
131         struct sk_buff  *prev;
132
133         __u32           qlen;
134         spinlock_t      lock;
135 };
136
137 struct sk_buff;
138
139 /* To allow 64K frame to be packed as single skb without frag_list we
140  * require 64K/PAGE_SIZE pages plus 1 additional page to allow for
141  * buffers which do not start on a page boundary.
142  *
143  * Since GRO uses frags we allocate at least 16 regardless of page
144  * size.
145  */
146 #if (65536/PAGE_SIZE + 1) < 16
147 #define MAX_SKB_FRAGS 16UL
148 #else
149 #define MAX_SKB_FRAGS (65536/PAGE_SIZE + 1)
150 #endif
151
152 typedef struct skb_frag_struct skb_frag_t;
153
154 struct skb_frag_struct {
155         struct {
156                 struct page *p;
157         } page;
158 #if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
159         __u32 page_offset;
160         __u32 size;
161 #else
162         __u16 page_offset;
163         __u16 size;
164 #endif
165 };
166
167 static inline unsigned int skb_frag_size(const skb_frag_t *frag)
168 {
169         return frag->size;
170 }
171
172 static inline void skb_frag_size_set(skb_frag_t *frag, unsigned int size)
173 {
174         frag->size = size;
175 }
176
177 static inline void skb_frag_size_add(skb_frag_t *frag, int delta)
178 {
179         frag->size += delta;
180 }
181
182 static inline void skb_frag_size_sub(skb_frag_t *frag, int delta)
183 {
184         frag->size -= delta;
185 }
186
187 #define HAVE_HW_TIME_STAMP
188
189 /**
190  * struct skb_shared_hwtstamps - hardware time stamps
191  * @hwtstamp:   hardware time stamp transformed into duration
192  *              since arbitrary point in time
193  * @syststamp:  hwtstamp transformed to system time base
194  *
195  * Software time stamps generated by ktime_get_real() are stored in
196  * skb->tstamp. The relation between the different kinds of time
197  * stamps is as follows:
198  *
199  * syststamp and tstamp can be compared against each other in
200  * arbitrary combinations.  The accuracy of a
201  * syststamp/tstamp/"syststamp from other device" comparison is
202  * limited by the accuracy of the transformation into system time
203  * base. This depends on the device driver and its underlying
204  * hardware.
205  *
206  * hwtstamps can only be compared against other hwtstamps from
207  * the same device.
208  *
209  * This structure is attached to packets as part of the
210  * &skb_shared_info. Use skb_hwtstamps() to get a pointer.
211  */
212 struct skb_shared_hwtstamps {
213         ktime_t hwtstamp;
214         ktime_t syststamp;
215 };
216
217 /* Definitions for tx_flags in struct skb_shared_info */
218 enum {
219         /* generate hardware time stamp */
220         SKBTX_HW_TSTAMP = 1 << 0,
221
222         /* generate software time stamp */
223         SKBTX_SW_TSTAMP = 1 << 1,
224
225         /* device driver is going to provide hardware time stamp */
226         SKBTX_IN_PROGRESS = 1 << 2,
227
228         /* device driver supports TX zero-copy buffers */
229         SKBTX_DEV_ZEROCOPY = 1 << 3,
230
231         /* generate wifi status information (where possible) */
232         SKBTX_WIFI_STATUS = 1 << 4,
233
234         /* This indicates at least one fragment might be overwritten
235          * (as in vmsplice(), sendfile() ...)
236          * If we need to compute a TX checksum, we'll need to copy
237          * all frags to avoid possible bad checksum
238          */
239         SKBTX_SHARED_FRAG = 1 << 5,
240 };
241
242 /*
243  * The callback notifies userspace to release buffers when skb DMA is done in
244  * lower device, the skb last reference should be 0 when calling this.
245  * The zerocopy_success argument is true if zero copy transmit occurred,
246  * false on data copy or out of memory error caused by data copy attempt.
247  * The ctx field is used to track device context.
248  * The desc field is used to track userspace buffer index.
249  */
250 struct ubuf_info {
251         void (*callback)(struct ubuf_info *, bool zerocopy_success);
252         void *ctx;
253         unsigned long desc;
254 };
255
256 /* This data is invariant across clones and lives at
257  * the end of the header data, ie. at skb->end.
258  */
259 struct skb_shared_info {
260         unsigned char   nr_frags;
261         __u8            tx_flags;
262         unsigned short  gso_size;
263         /* Warning: this field is not always filled in (UFO)! */
264         unsigned short  gso_segs;
265         unsigned short  gso_type;
266         struct sk_buff  *frag_list;
267         struct skb_shared_hwtstamps hwtstamps;
268         __be32          ip6_frag_id;
269
270         /*
271          * Warning : all fields before dataref are cleared in __alloc_skb()
272          */
273         atomic_t        dataref;
274
275         /* Intermediate layers must ensure that destructor_arg
276          * remains valid until skb destructor */
277         void *          destructor_arg;
278
279         /* must be last field, see pskb_expand_head() */
280         skb_frag_t      frags[MAX_SKB_FRAGS];
281 };
282
283 /* We divide dataref into two halves.  The higher 16 bits hold references
284  * to the payload part of skb->data.  The lower 16 bits hold references to
285  * the entire skb->data.  A clone of a headerless skb holds the length of
286  * the header in skb->hdr_len.
287  *
288  * All users must obey the rule that the skb->data reference count must be
289  * greater than or equal to the payload reference count.
290  *
291  * Holding a reference to the payload part means that the user does not
292  * care about modifications to the header part of skb->data.
293  */
294 #define SKB_DATAREF_SHIFT 16
295 #define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1)
296
297
298 enum {
299         SKB_FCLONE_UNAVAILABLE,
300         SKB_FCLONE_ORIG,
301         SKB_FCLONE_CLONE,
302 };
303
304 enum {
305         SKB_GSO_TCPV4 = 1 << 0,
306         SKB_GSO_UDP = 1 << 1,
307
308         /* This indicates the skb is from an untrusted source. */
309         SKB_GSO_DODGY = 1 << 2,
310
311         /* This indicates the tcp segment has CWR set. */
312         SKB_GSO_TCP_ECN = 1 << 3,
313
314         SKB_GSO_TCPV6 = 1 << 4,
315
316         SKB_GSO_FCOE = 1 << 5,
317
318         SKB_GSO_GRE = 1 << 6,
319 };
320
321 #if BITS_PER_LONG > 32
322 #define NET_SKBUFF_DATA_USES_OFFSET 1
323 #endif
324
325 #ifdef NET_SKBUFF_DATA_USES_OFFSET
326 typedef unsigned int sk_buff_data_t;
327 #else
328 typedef unsigned char *sk_buff_data_t;
329 #endif
330
331 #if defined(CONFIG_NF_DEFRAG_IPV4) || defined(CONFIG_NF_DEFRAG_IPV4_MODULE) || \
332     defined(CONFIG_NF_DEFRAG_IPV6) || defined(CONFIG_NF_DEFRAG_IPV6_MODULE)
333 #define NET_SKBUFF_NF_DEFRAG_NEEDED 1
334 #endif
335
336 /** 
337  *      struct sk_buff - socket buffer
338  *      @next: Next buffer in list
339  *      @prev: Previous buffer in list
340  *      @tstamp: Time we arrived
341  *      @sk: Socket we are owned by
342  *      @dev: Device we arrived on/are leaving by
343  *      @cb: Control buffer. Free for use by every layer. Put private vars here
344  *      @_skb_refdst: destination entry (with norefcount bit)
345  *      @sp: the security path, used for xfrm
346  *      @len: Length of actual data
347  *      @data_len: Data length
348  *      @mac_len: Length of link layer header
349  *      @hdr_len: writable header length of cloned skb
350  *      @csum: Checksum (must include start/offset pair)
351  *      @csum_start: Offset from skb->head where checksumming should start
352  *      @csum_offset: Offset from csum_start where checksum should be stored
353  *      @priority: Packet queueing priority
354  *      @local_df: allow local fragmentation
355  *      @cloned: Head may be cloned (check refcnt to be sure)
356  *      @ip_summed: Driver fed us an IP checksum
357  *      @nohdr: Payload reference only, must not modify header
358  *      @nfctinfo: Relationship of this skb to the connection
359  *      @pkt_type: Packet class
360  *      @fclone: skbuff clone status
361  *      @ipvs_property: skbuff is owned by ipvs
362  *      @peeked: this packet has been seen already, so stats have been
363  *              done for it, don't do them again
364  *      @nf_trace: netfilter packet trace flag
365  *      @protocol: Packet protocol from driver
366  *      @destructor: Destruct function
367  *      @nfct: Associated connection, if any
368  *      @nfct_reasm: netfilter conntrack re-assembly pointer
369  *      @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
370  *      @skb_iif: ifindex of device we arrived on
371  *      @tc_index: Traffic control index
372  *      @tc_verd: traffic control verdict
373  *      @rxhash: the packet hash computed on receive
374  *      @queue_mapping: Queue mapping for multiqueue devices
375  *      @ndisc_nodetype: router type (from link layer)
376  *      @ooo_okay: allow the mapping of a socket to a queue to be changed
377  *      @l4_rxhash: indicate rxhash is a canonical 4-tuple hash over transport
378  *              ports.
379  *      @wifi_acked_valid: wifi_acked was set
380  *      @wifi_acked: whether frame was acked on wifi or not
381  *      @no_fcs:  Request NIC to treat last 4 bytes as Ethernet FCS
382  *      @dma_cookie: a cookie to one of several possible DMA operations
383  *              done by skb DMA functions
384  *      @secmark: security marking
385  *      @mark: Generic packet mark
386  *      @dropcount: total number of sk_receive_queue overflows
387  *      @vlan_tci: vlan tag control information
388  *      @inner_transport_header: Inner transport layer header (encapsulation)
389  *      @inner_network_header: Network layer header (encapsulation)
390  *      @inner_mac_header: Link layer header (encapsulation)
391  *      @transport_header: Transport layer header
392  *      @network_header: Network layer header
393  *      @mac_header: Link layer header
394  *      @tail: Tail pointer
395  *      @end: End pointer
396  *      @head: Head of buffer
397  *      @data: Data head pointer
398  *      @truesize: Buffer size
399  *      @users: User count - see {datagram,tcp}.c
400  */
401
402 struct sk_buff {
403         /* These two members must be first. */
404         struct sk_buff          *next;
405         struct sk_buff          *prev;
406
407         ktime_t                 tstamp;
408
409         struct sock             *sk;
410         struct net_device       *dev;
411
412         /*
413          * This is the control buffer. It is free to use for every
414          * layer. Please put your private variables there. If you
415          * want to keep them across layers you have to do a skb_clone()
416          * first. This is owned by whoever has the skb queued ATM.
417          */
418         char                    cb[48] __aligned(8);
419
420         unsigned long           _skb_refdst;
421 #ifdef CONFIG_XFRM
422         struct  sec_path        *sp;
423 #endif
424         unsigned int            len,
425                                 data_len;
426         __u16                   mac_len,
427                                 hdr_len;
428         union {
429                 __wsum          csum;
430                 struct {
431                         __u16   csum_start;
432                         __u16   csum_offset;
433                 };
434         };
435         __u32                   priority;
436         kmemcheck_bitfield_begin(flags1);
437         __u8                    local_df:1,
438                                 cloned:1,
439                                 ip_summed:2,
440                                 nohdr:1,
441                                 nfctinfo:3;
442         __u8                    pkt_type:3,
443                                 fclone:2,
444                                 ipvs_property:1,
445                                 peeked:1,
446                                 nf_trace:1;
447         kmemcheck_bitfield_end(flags1);
448         __be16                  protocol;
449
450         void                    (*destructor)(struct sk_buff *skb);
451 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
452         struct nf_conntrack     *nfct;
453 #endif
454 #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
455         struct sk_buff          *nfct_reasm;
456 #endif
457 #ifdef CONFIG_BRIDGE_NETFILTER
458         struct nf_bridge_info   *nf_bridge;
459 #endif
460
461         int                     skb_iif;
462
463         __u32                   rxhash;
464
465         __u16                   vlan_tci;
466
467 #ifdef CONFIG_NET_SCHED
468         __u16                   tc_index;       /* traffic control index */
469 #ifdef CONFIG_NET_CLS_ACT
470         __u16                   tc_verd;        /* traffic control verdict */
471 #endif
472 #endif
473
474         __u16                   queue_mapping;
475         kmemcheck_bitfield_begin(flags2);
476 #ifdef CONFIG_IPV6_NDISC_NODETYPE
477         __u8                    ndisc_nodetype:2;
478 #endif
479         __u8                    pfmemalloc:1;
480         __u8                    ooo_okay:1;
481         __u8                    l4_rxhash:1;
482         __u8                    wifi_acked_valid:1;
483         __u8                    wifi_acked:1;
484         __u8                    no_fcs:1;
485         __u8                    head_frag:1;
486         /* Encapsulation protocol and NIC drivers should use
487          * this flag to indicate to each other if the skb contains
488          * encapsulated packet or not and maybe use the inner packet
489          * headers if needed
490          */
491         __u8                    encapsulation:1;
492         /* 7/9 bit hole (depending on ndisc_nodetype presence) */
493         kmemcheck_bitfield_end(flags2);
494
495 #ifdef CONFIG_NET_DMA
496         dma_cookie_t            dma_cookie;
497 #endif
498 #ifdef CONFIG_NETWORK_SECMARK
499         __u32                   secmark;
500 #endif
501         union {
502                 __u32           mark;
503                 __u32           dropcount;
504                 __u32           avail_size;
505         };
506
507         sk_buff_data_t          inner_transport_header;
508         sk_buff_data_t          inner_network_header;
509         sk_buff_data_t          inner_mac_header;
510         sk_buff_data_t          transport_header;
511         sk_buff_data_t          network_header;
512         sk_buff_data_t          mac_header;
513         /* These elements must be at the end, see alloc_skb() for details.  */
514         sk_buff_data_t          tail;
515         sk_buff_data_t          end;
516         unsigned char           *head,
517                                 *data;
518         unsigned int            truesize;
519         atomic_t                users;
520 };
521
522 #ifdef __KERNEL__
523 /*
524  *      Handling routines are only of interest to the kernel
525  */
526 #include <linux/slab.h>
527
528
529 #define SKB_ALLOC_FCLONE        0x01
530 #define SKB_ALLOC_RX            0x02
531
532 /* Returns true if the skb was allocated from PFMEMALLOC reserves */
533 static inline bool skb_pfmemalloc(const struct sk_buff *skb)
534 {
535         return unlikely(skb->pfmemalloc);
536 }
537
538 /*
539  * skb might have a dst pointer attached, refcounted or not.
540  * _skb_refdst low order bit is set if refcount was _not_ taken
541  */
542 #define SKB_DST_NOREF   1UL
543 #define SKB_DST_PTRMASK ~(SKB_DST_NOREF)
544
545 /**
546  * skb_dst - returns skb dst_entry
547  * @skb: buffer
548  *
549  * Returns skb dst_entry, regardless of reference taken or not.
550  */
551 static inline struct dst_entry *skb_dst(const struct sk_buff *skb)
552 {
553         /* If refdst was not refcounted, check we still are in a 
554          * rcu_read_lock section
555          */
556         WARN_ON((skb->_skb_refdst & SKB_DST_NOREF) &&
557                 !rcu_read_lock_held() &&
558                 !rcu_read_lock_bh_held());
559         return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK);
560 }
561
562 /**
563  * skb_dst_set - sets skb dst
564  * @skb: buffer
565  * @dst: dst entry
566  *
567  * Sets skb dst, assuming a reference was taken on dst and should
568  * be released by skb_dst_drop()
569  */
570 static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
571 {
572         skb->_skb_refdst = (unsigned long)dst;
573 }
574
575 extern void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst);
576
577 /**
578  * skb_dst_is_noref - Test if skb dst isn't refcounted
579  * @skb: buffer
580  */
581 static inline bool skb_dst_is_noref(const struct sk_buff *skb)
582 {
583         return (skb->_skb_refdst & SKB_DST_NOREF) && skb_dst(skb);
584 }
585
586 static inline struct rtable *skb_rtable(const struct sk_buff *skb)
587 {
588         return (struct rtable *)skb_dst(skb);
589 }
590
591 extern void kfree_skb(struct sk_buff *skb);
592 extern void skb_tx_error(struct sk_buff *skb);
593 extern void consume_skb(struct sk_buff *skb);
594 extern void            __kfree_skb(struct sk_buff *skb);
595 extern struct kmem_cache *skbuff_head_cache;
596
597 extern void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);
598 extern bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
599                              bool *fragstolen, int *delta_truesize);
600
601 extern struct sk_buff *__alloc_skb(unsigned int size,
602                                    gfp_t priority, int flags, int node);
603 extern struct sk_buff *build_skb(void *data, unsigned int frag_size);
604 static inline struct sk_buff *alloc_skb(unsigned int size,
605                                         gfp_t priority)
606 {
607         return __alloc_skb(size, priority, 0, NUMA_NO_NODE);
608 }
609
610 static inline struct sk_buff *alloc_skb_fclone(unsigned int size,
611                                                gfp_t priority)
612 {
613         return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE);
614 }
615
616 extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);
617 extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask);
618 extern struct sk_buff *skb_clone(struct sk_buff *skb,
619                                  gfp_t priority);
620 extern struct sk_buff *skb_copy(const struct sk_buff *skb,
621                                 gfp_t priority);
622 extern struct sk_buff *__pskb_copy(struct sk_buff *skb,
623                                  int headroom, gfp_t gfp_mask);
624
625 extern int             pskb_expand_head(struct sk_buff *skb,
626                                         int nhead, int ntail,
627                                         gfp_t gfp_mask);
628 extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb,
629                                             unsigned int headroom);
630 extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb,
631                                        int newheadroom, int newtailroom,
632                                        gfp_t priority);
633 extern int             skb_to_sgvec(struct sk_buff *skb,
634                                     struct scatterlist *sg, int offset,
635                                     int len);
636 extern int             skb_cow_data(struct sk_buff *skb, int tailbits,
637                                     struct sk_buff **trailer);
638 extern int             skb_pad(struct sk_buff *skb, int pad);
639 #define dev_kfree_skb(a)        consume_skb(a)
640
641 extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
642                         int getfrag(void *from, char *to, int offset,
643                         int len,int odd, struct sk_buff *skb),
644                         void *from, int length);
645
646 struct skb_seq_state {
647         __u32           lower_offset;
648         __u32           upper_offset;
649         __u32           frag_idx;
650         __u32           stepped_offset;
651         struct sk_buff  *root_skb;
652         struct sk_buff  *cur_skb;
653         __u8            *frag_data;
654 };
655
656 extern void           skb_prepare_seq_read(struct sk_buff *skb,
657                                            unsigned int from, unsigned int to,
658                                            struct skb_seq_state *st);
659 extern unsigned int   skb_seq_read(unsigned int consumed, const u8 **data,
660                                    struct skb_seq_state *st);
661 extern void           skb_abort_seq_read(struct skb_seq_state *st);
662
663 extern unsigned int   skb_find_text(struct sk_buff *skb, unsigned int from,
664                                     unsigned int to, struct ts_config *config,
665                                     struct ts_state *state);
666
667 extern void __skb_get_rxhash(struct sk_buff *skb);
668 static inline __u32 skb_get_rxhash(struct sk_buff *skb)
669 {
670         if (!skb->l4_rxhash)
671                 __skb_get_rxhash(skb);
672
673         return skb->rxhash;
674 }
675
676 #ifdef NET_SKBUFF_DATA_USES_OFFSET
677 static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
678 {
679         return skb->head + skb->end;
680 }
681
682 static inline unsigned int skb_end_offset(const struct sk_buff *skb)
683 {
684         return skb->end;
685 }
686 #else
687 static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
688 {
689         return skb->end;
690 }
691
692 static inline unsigned int skb_end_offset(const struct sk_buff *skb)
693 {
694         return skb->end - skb->head;
695 }
696 #endif
697
698 /* Internal */
699 #define skb_shinfo(SKB) ((struct skb_shared_info *)(skb_end_pointer(SKB)))
700
701 static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb)
702 {
703         return &skb_shinfo(skb)->hwtstamps;
704 }
705
706 /**
707  *      skb_queue_empty - check if a queue is empty
708  *      @list: queue head
709  *
710  *      Returns true if the queue is empty, false otherwise.
711  */
712 static inline int skb_queue_empty(const struct sk_buff_head *list)
713 {
714         return list->next == (struct sk_buff *)list;
715 }
716
717 /**
718  *      skb_queue_is_last - check if skb is the last entry in the queue
719  *      @list: queue head
720  *      @skb: buffer
721  *
722  *      Returns true if @skb is the last buffer on the list.
723  */
724 static inline bool skb_queue_is_last(const struct sk_buff_head *list,
725                                      const struct sk_buff *skb)
726 {
727         return skb->next == (struct sk_buff *)list;
728 }
729
730 /**
731  *      skb_queue_is_first - check if skb is the first entry in the queue
732  *      @list: queue head
733  *      @skb: buffer
734  *
735  *      Returns true if @skb is the first buffer on the list.
736  */
737 static inline bool skb_queue_is_first(const struct sk_buff_head *list,
738                                       const struct sk_buff *skb)
739 {
740         return skb->prev == (struct sk_buff *)list;
741 }
742
743 /**
744  *      skb_queue_next - return the next packet in the queue
745  *      @list: queue head
746  *      @skb: current buffer
747  *
748  *      Return the next packet in @list after @skb.  It is only valid to
749  *      call this if skb_queue_is_last() evaluates to false.
750  */
751 static inline struct sk_buff *skb_queue_next(const struct sk_buff_head *list,
752                                              const struct sk_buff *skb)
753 {
754         /* This BUG_ON may seem severe, but if we just return then we
755          * are going to dereference garbage.
756          */
757         BUG_ON(skb_queue_is_last(list, skb));
758         return skb->next;
759 }
760
761 /**
762  *      skb_queue_prev - return the prev packet in the queue
763  *      @list: queue head
764  *      @skb: current buffer
765  *
766  *      Return the prev packet in @list before @skb.  It is only valid to
767  *      call this if skb_queue_is_first() evaluates to false.
768  */
769 static inline struct sk_buff *skb_queue_prev(const struct sk_buff_head *list,
770                                              const struct sk_buff *skb)
771 {
772         /* This BUG_ON may seem severe, but if we just return then we
773          * are going to dereference garbage.
774          */
775         BUG_ON(skb_queue_is_first(list, skb));
776         return skb->prev;
777 }
778
779 /**
780  *      skb_get - reference buffer
781  *      @skb: buffer to reference
782  *
783  *      Makes another reference to a socket buffer and returns a pointer
784  *      to the buffer.
785  */
786 static inline struct sk_buff *skb_get(struct sk_buff *skb)
787 {
788         atomic_inc(&skb->users);
789         return skb;
790 }
791
792 /*
793  * If users == 1, we are the only owner and are can avoid redundant
794  * atomic change.
795  */
796
797 /**
798  *      skb_cloned - is the buffer a clone
799  *      @skb: buffer to check
800  *
801  *      Returns true if the buffer was generated with skb_clone() and is
802  *      one of multiple shared copies of the buffer. Cloned buffers are
803  *      shared data so must not be written to under normal circumstances.
804  */
805 static inline int skb_cloned(const struct sk_buff *skb)
806 {
807         return skb->cloned &&
808                (atomic_read(&skb_shinfo(skb)->dataref) & SKB_DATAREF_MASK) != 1;
809 }
810
811 static inline int skb_unclone(struct sk_buff *skb, gfp_t pri)
812 {
813         might_sleep_if(pri & __GFP_WAIT);
814
815         if (skb_cloned(skb))
816                 return pskb_expand_head(skb, 0, 0, pri);
817
818         return 0;
819 }
820
821 /**
822  *      skb_header_cloned - is the header a clone
823  *      @skb: buffer to check
824  *
825  *      Returns true if modifying the header part of the buffer requires
826  *      the data to be copied.
827  */
828 static inline int skb_header_cloned(const struct sk_buff *skb)
829 {
830         int dataref;
831
832         if (!skb->cloned)
833                 return 0;
834
835         dataref = atomic_read(&skb_shinfo(skb)->dataref);
836         dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT);
837         return dataref != 1;
838 }
839
840 /**
841  *      skb_header_release - release reference to header
842  *      @skb: buffer to operate on
843  *
844  *      Drop a reference to the header part of the buffer.  This is done
845  *      by acquiring a payload reference.  You must not read from the header
846  *      part of skb->data after this.
847  */
848 static inline void skb_header_release(struct sk_buff *skb)
849 {
850         BUG_ON(skb->nohdr);
851         skb->nohdr = 1;
852         atomic_add(1 << SKB_DATAREF_SHIFT, &skb_shinfo(skb)->dataref);
853 }
854
855 /**
856  *      skb_shared - is the buffer shared
857  *      @skb: buffer to check
858  *
859  *      Returns true if more than one person has a reference to this
860  *      buffer.
861  */
862 static inline int skb_shared(const struct sk_buff *skb)
863 {
864         return atomic_read(&skb->users) != 1;
865 }
866
867 /**
868  *      skb_share_check - check if buffer is shared and if so clone it
869  *      @skb: buffer to check
870  *      @pri: priority for memory allocation
871  *
872  *      If the buffer is shared the buffer is cloned and the old copy
873  *      drops a reference. A new clone with a single reference is returned.
874  *      If the buffer is not shared the original buffer is returned. When
875  *      being called from interrupt status or with spinlocks held pri must
876  *      be GFP_ATOMIC.
877  *
878  *      NULL is returned on a memory allocation failure.
879  */
880 static inline struct sk_buff *skb_share_check(struct sk_buff *skb, gfp_t pri)
881 {
882         might_sleep_if(pri & __GFP_WAIT);
883         if (skb_shared(skb)) {
884                 struct sk_buff *nskb = skb_clone(skb, pri);
885
886                 if (likely(nskb))
887                         consume_skb(skb);
888                 else
889                         kfree_skb(skb);
890                 skb = nskb;
891         }
892         return skb;
893 }
894
895 /*
896  *      Copy shared buffers into a new sk_buff. We effectively do COW on
897  *      packets to handle cases where we have a local reader and forward
898  *      and a couple of other messy ones. The normal one is tcpdumping
899  *      a packet thats being forwarded.
900  */
901
902 /**
903  *      skb_unshare - make a copy of a shared buffer
904  *      @skb: buffer to check
905  *      @pri: priority for memory allocation
906  *
907  *      If the socket buffer is a clone then this function creates a new
908  *      copy of the data, drops a reference count on the old copy and returns
909  *      the new copy with the reference count at 1. If the buffer is not a clone
910  *      the original buffer is returned. When called with a spinlock held or
911  *      from interrupt state @pri must be %GFP_ATOMIC
912  *
913  *      %NULL is returned on a memory allocation failure.
914  */
915 static inline struct sk_buff *skb_unshare(struct sk_buff *skb,
916                                           gfp_t pri)
917 {
918         might_sleep_if(pri & __GFP_WAIT);
919         if (skb_cloned(skb)) {
920                 struct sk_buff *nskb = skb_copy(skb, pri);
921                 kfree_skb(skb); /* Free our shared copy */
922                 skb = nskb;
923         }
924         return skb;
925 }
926
927 /**
928  *      skb_peek - peek at the head of an &sk_buff_head
929  *      @list_: list to peek at
930  *
931  *      Peek an &sk_buff. Unlike most other operations you _MUST_
932  *      be careful with this one. A peek leaves the buffer on the
933  *      list and someone else may run off with it. You must hold
934  *      the appropriate locks or have a private queue to do this.
935  *
936  *      Returns %NULL for an empty list or a pointer to the head element.
937  *      The reference count is not incremented and the reference is therefore
938  *      volatile. Use with caution.
939  */
940 static inline struct sk_buff *skb_peek(const struct sk_buff_head *list_)
941 {
942         struct sk_buff *skb = list_->next;
943
944         if (skb == (struct sk_buff *)list_)
945                 skb = NULL;
946         return skb;
947 }
948
949 /**
950  *      skb_peek_next - peek skb following the given one from a queue
951  *      @skb: skb to start from
952  *      @list_: list to peek at
953  *
954  *      Returns %NULL when the end of the list is met or a pointer to the
955  *      next element. The reference count is not incremented and the
956  *      reference is therefore volatile. Use with caution.
957  */
958 static inline struct sk_buff *skb_peek_next(struct sk_buff *skb,
959                 const struct sk_buff_head *list_)
960 {
961         struct sk_buff *next = skb->next;
962
963         if (next == (struct sk_buff *)list_)
964                 next = NULL;
965         return next;
966 }
967
968 /**
969  *      skb_peek_tail - peek at the tail of an &sk_buff_head
970  *      @list_: list to peek at
971  *
972  *      Peek an &sk_buff. Unlike most other operations you _MUST_
973  *      be careful with this one. A peek leaves the buffer on the
974  *      list and someone else may run off with it. You must hold
975  *      the appropriate locks or have a private queue to do this.
976  *
977  *      Returns %NULL for an empty list or a pointer to the tail element.
978  *      The reference count is not incremented and the reference is therefore
979  *      volatile. Use with caution.
980  */
981 static inline struct sk_buff *skb_peek_tail(const struct sk_buff_head *list_)
982 {
983         struct sk_buff *skb = list_->prev;
984
985         if (skb == (struct sk_buff *)list_)
986                 skb = NULL;
987         return skb;
988
989 }
990
991 /**
992  *      skb_queue_len   - get queue length
993  *      @list_: list to measure
994  *
995  *      Return the length of an &sk_buff queue.
996  */
997 static inline __u32 skb_queue_len(const struct sk_buff_head *list_)
998 {
999         return list_->qlen;
1000 }
1001
1002 /**
1003  *      __skb_queue_head_init - initialize non-spinlock portions of sk_buff_head
1004  *      @list: queue to initialize
1005  *
1006  *      This initializes only the list and queue length aspects of
1007  *      an sk_buff_head object.  This allows to initialize the list
1008  *      aspects of an sk_buff_head without reinitializing things like
1009  *      the spinlock.  It can also be used for on-stack sk_buff_head
1010  *      objects where the spinlock is known to not be used.
1011  */
1012 static inline void __skb_queue_head_init(struct sk_buff_head *list)
1013 {
1014         list->prev = list->next = (struct sk_buff *)list;
1015         list->qlen = 0;
1016 }
1017
1018 /*
1019  * This function creates a split out lock class for each invocation;
1020  * this is needed for now since a whole lot of users of the skb-queue
1021  * infrastructure in drivers have different locking usage (in hardirq)
1022  * than the networking core (in softirq only). In the long run either the
1023  * network layer or drivers should need annotation to consolidate the
1024  * main types of usage into 3 classes.
1025  */
1026 static inline void skb_queue_head_init(struct sk_buff_head *list)
1027 {
1028         spin_lock_init(&list->lock);
1029         __skb_queue_head_init(list);
1030 }
1031
1032 static inline void skb_queue_head_init_class(struct sk_buff_head *list,
1033                 struct lock_class_key *class)
1034 {
1035         skb_queue_head_init(list);
1036         lockdep_set_class(&list->lock, class);
1037 }
1038
1039 /*
1040  *      Insert an sk_buff on a list.
1041  *
1042  *      The "__skb_xxxx()" functions are the non-atomic ones that
1043  *      can only be called with interrupts disabled.
1044  */
1045 extern void        skb_insert(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list);
1046 static inline void __skb_insert(struct sk_buff *newsk,
1047                                 struct sk_buff *prev, struct sk_buff *next,
1048                                 struct sk_buff_head *list)
1049 {
1050         newsk->next = next;
1051         newsk->prev = prev;
1052         next->prev  = prev->next = newsk;
1053         list->qlen++;
1054 }
1055
1056 static inline void __skb_queue_splice(const struct sk_buff_head *list,
1057                                       struct sk_buff *prev,
1058                                       struct sk_buff *next)
1059 {
1060         struct sk_buff *first = list->next;
1061         struct sk_buff *last = list->prev;
1062
1063         first->prev = prev;
1064         prev->next = first;
1065
1066         last->next = next;
1067         next->prev = last;
1068 }
1069
1070 /**
1071  *      skb_queue_splice - join two skb lists, this is designed for stacks
1072  *      @list: the new list to add
1073  *      @head: the place to add it in the first list
1074  */
1075 static inline void skb_queue_splice(const struct sk_buff_head *list,
1076                                     struct sk_buff_head *head)
1077 {
1078         if (!skb_queue_empty(list)) {
1079                 __skb_queue_splice(list, (struct sk_buff *) head, head->next);
1080                 head->qlen += list->qlen;
1081         }
1082 }
1083
1084 /**
1085  *      skb_queue_splice_init - join two skb lists and reinitialise the emptied list
1086  *      @list: the new list to add
1087  *      @head: the place to add it in the first list
1088  *
1089  *      The list at @list is reinitialised
1090  */
1091 static inline void skb_queue_splice_init(struct sk_buff_head *list,
1092                                          struct sk_buff_head *head)
1093 {
1094         if (!skb_queue_empty(list)) {
1095                 __skb_queue_splice(list, (struct sk_buff *) head, head->next);
1096                 head->qlen += list->qlen;
1097                 __skb_queue_head_init(list);
1098         }
1099 }
1100
1101 /**
1102  *      skb_queue_splice_tail - join two skb lists, each list being a queue
1103  *      @list: the new list to add
1104  *      @head: the place to add it in the first list
1105  */
1106 static inline void skb_queue_splice_tail(const struct sk_buff_head *list,
1107                                          struct sk_buff_head *head)
1108 {
1109         if (!skb_queue_empty(list)) {
1110                 __skb_queue_splice(list, head->prev, (struct sk_buff *) head);
1111                 head->qlen += list->qlen;
1112         }
1113 }
1114
1115 /**
1116  *      skb_queue_splice_tail_init - join two skb lists and reinitialise the emptied list
1117  *      @list: the new list to add
1118  *      @head: the place to add it in the first list
1119  *
1120  *      Each of the lists is a queue.
1121  *      The list at @list is reinitialised
1122  */
1123 static inline void skb_queue_splice_tail_init(struct sk_buff_head *list,
1124                                               struct sk_buff_head *head)
1125 {
1126         if (!skb_queue_empty(list)) {
1127                 __skb_queue_splice(list, head->prev, (struct sk_buff *) head);
1128                 head->qlen += list->qlen;
1129                 __skb_queue_head_init(list);
1130         }
1131 }
1132
1133 /**
1134  *      __skb_queue_after - queue a buffer at the list head
1135  *      @list: list to use
1136  *      @prev: place after this buffer
1137  *      @newsk: buffer to queue
1138  *
1139  *      Queue a buffer int the middle of a list. This function takes no locks
1140  *      and you must therefore hold required locks before calling it.
1141  *
1142  *      A buffer cannot be placed on two lists at the same time.
1143  */
1144 static inline void __skb_queue_after(struct sk_buff_head *list,
1145                                      struct sk_buff *prev,
1146                                      struct sk_buff *newsk)
1147 {
1148         __skb_insert(newsk, prev, prev->next, list);
1149 }
1150
1151 extern void skb_append(struct sk_buff *old, struct sk_buff *newsk,
1152                        struct sk_buff_head *list);
1153
1154 static inline void __skb_queue_before(struct sk_buff_head *list,
1155                                       struct sk_buff *next,
1156                                       struct sk_buff *newsk)
1157 {
1158         __skb_insert(newsk, next->prev, next, list);
1159 }
1160
1161 /**
1162  *      __skb_queue_head - queue a buffer at the list head
1163  *      @list: list to use
1164  *      @newsk: buffer to queue
1165  *
1166  *      Queue a buffer at the start of a list. This function takes no locks
1167  *      and you must therefore hold required locks before calling it.
1168  *
1169  *      A buffer cannot be placed on two lists at the same time.
1170  */
1171 extern void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk);
1172 static inline void __skb_queue_head(struct sk_buff_head *list,
1173                                     struct sk_buff *newsk)
1174 {
1175         __skb_queue_after(list, (struct sk_buff *)list, newsk);
1176 }
1177
1178 /**
1179  *      __skb_queue_tail - queue a buffer at the list tail
1180  *      @list: list to use
1181  *      @newsk: buffer to queue
1182  *
1183  *      Queue a buffer at the end of a list. This function takes no locks
1184  *      and you must therefore hold required locks before calling it.
1185  *
1186  *      A buffer cannot be placed on two lists at the same time.
1187  */
1188 extern void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk);
1189 static inline void __skb_queue_tail(struct sk_buff_head *list,
1190                                    struct sk_buff *newsk)
1191 {
1192         __skb_queue_before(list, (struct sk_buff *)list, newsk);
1193 }
1194
1195 /*
1196  * remove sk_buff from list. _Must_ be called atomically, and with
1197  * the list known..
1198  */
1199 extern void        skb_unlink(struct sk_buff *skb, struct sk_buff_head *list);
1200 static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)
1201 {
1202         struct sk_buff *next, *prev;
1203
1204         list->qlen--;
1205         next       = skb->next;
1206         prev       = skb->prev;
1207         skb->next  = skb->prev = NULL;
1208         next->prev = prev;
1209         prev->next = next;
1210 }
1211
1212 /**
1213  *      __skb_dequeue - remove from the head of the queue
1214  *      @list: list to dequeue from
1215  *
1216  *      Remove the head of the list. This function does not take any locks
1217  *      so must be used with appropriate locks held only. The head item is
1218  *      returned or %NULL if the list is empty.
1219  */
1220 extern struct sk_buff *skb_dequeue(struct sk_buff_head *list);
1221 static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
1222 {
1223         struct sk_buff *skb = skb_peek(list);
1224         if (skb)
1225                 __skb_unlink(skb, list);
1226         return skb;
1227 }
1228
1229 /**
1230  *      __skb_dequeue_tail - remove from the tail of the queue
1231  *      @list: list to dequeue from
1232  *
1233  *      Remove the tail of the list. This function does not take any locks
1234  *      so must be used with appropriate locks held only. The tail item is
1235  *      returned or %NULL if the list is empty.
1236  */
1237 extern struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list);
1238 static inline struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list)
1239 {
1240         struct sk_buff *skb = skb_peek_tail(list);
1241         if (skb)
1242                 __skb_unlink(skb, list);
1243         return skb;
1244 }
1245
1246
1247 static inline bool skb_is_nonlinear(const struct sk_buff *skb)
1248 {
1249         return skb->data_len;
1250 }
1251
1252 static inline unsigned int skb_headlen(const struct sk_buff *skb)
1253 {
1254         return skb->len - skb->data_len;
1255 }
1256
1257 static inline int skb_pagelen(const struct sk_buff *skb)
1258 {
1259         int i, len = 0;
1260
1261         for (i = (int)skb_shinfo(skb)->nr_frags - 1; i >= 0; i--)
1262                 len += skb_frag_size(&skb_shinfo(skb)->frags[i]);
1263         return len + skb_headlen(skb);
1264 }
1265
1266 /**
1267  * __skb_fill_page_desc - initialise a paged fragment in an skb
1268  * @skb: buffer containing fragment to be initialised
1269  * @i: paged fragment index to initialise
1270  * @page: the page to use for this fragment
1271  * @off: the offset to the data with @page
1272  * @size: the length of the data
1273  *
1274  * Initialises the @i'th fragment of @skb to point to &size bytes at
1275  * offset @off within @page.
1276  *
1277  * Does not take any additional reference on the fragment.
1278  */
1279 static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
1280                                         struct page *page, int off, int size)
1281 {
1282         skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1283
1284         /*
1285          * Propagate page->pfmemalloc to the skb if we can. The problem is
1286          * that not all callers have unique ownership of the page. If
1287          * pfmemalloc is set, we check the mapping as a mapping implies
1288          * page->index is set (index and pfmemalloc share space).
1289          * If it's a valid mapping, we cannot use page->pfmemalloc but we
1290          * do not lose pfmemalloc information as the pages would not be
1291          * allocated using __GFP_MEMALLOC.
1292          */
1293         if (page->pfmemalloc && !page->mapping)
1294                 skb->pfmemalloc = true;
1295         frag->page.p              = page;
1296         frag->page_offset         = off;
1297         skb_frag_size_set(frag, size);
1298 }
1299
1300 /**
1301  * skb_fill_page_desc - initialise a paged fragment in an skb
1302  * @skb: buffer containing fragment to be initialised
1303  * @i: paged fragment index to initialise
1304  * @page: the page to use for this fragment
1305  * @off: the offset to the data with @page
1306  * @size: the length of the data
1307  *
1308  * As per __skb_fill_page_desc() -- initialises the @i'th fragment of
1309  * @skb to point to &size bytes at offset @off within @page. In
1310  * addition updates @skb such that @i is the last fragment.
1311  *
1312  * Does not take any additional reference on the fragment.
1313  */
1314 static inline void skb_fill_page_desc(struct sk_buff *skb, int i,
1315                                       struct page *page, int off, int size)
1316 {
1317         __skb_fill_page_desc(skb, i, page, off, size);
1318         skb_shinfo(skb)->nr_frags = i + 1;
1319 }
1320
1321 extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page,
1322                             int off, int size, unsigned int truesize);
1323
1324 #define SKB_PAGE_ASSERT(skb)    BUG_ON(skb_shinfo(skb)->nr_frags)
1325 #define SKB_FRAG_ASSERT(skb)    BUG_ON(skb_has_frag_list(skb))
1326 #define SKB_LINEAR_ASSERT(skb)  BUG_ON(skb_is_nonlinear(skb))
1327
1328 #ifdef NET_SKBUFF_DATA_USES_OFFSET
1329 static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb)
1330 {
1331         return skb->head + skb->tail;
1332 }
1333
1334 static inline void skb_reset_tail_pointer(struct sk_buff *skb)
1335 {
1336         skb->tail = skb->data - skb->head;
1337 }
1338
1339 static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
1340 {
1341         skb_reset_tail_pointer(skb);
1342         skb->tail += offset;
1343 }
1344 #else /* NET_SKBUFF_DATA_USES_OFFSET */
1345 static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb)
1346 {
1347         return skb->tail;
1348 }
1349
1350 static inline void skb_reset_tail_pointer(struct sk_buff *skb)
1351 {
1352         skb->tail = skb->data;
1353 }
1354
1355 static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
1356 {
1357         skb->tail = skb->data + offset;
1358 }
1359
1360 #endif /* NET_SKBUFF_DATA_USES_OFFSET */
1361
1362 /*
1363  *      Add data to an sk_buff
1364  */
1365 extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len);
1366 static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
1367 {
1368         unsigned char *tmp = skb_tail_pointer(skb);
1369         SKB_LINEAR_ASSERT(skb);
1370         skb->tail += len;
1371         skb->len  += len;
1372         return tmp;
1373 }
1374
1375 extern unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
1376 static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
1377 {
1378         skb->data -= len;
1379         skb->len  += len;
1380         return skb->data;
1381 }
1382
1383 extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
1384 static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
1385 {
1386         skb->len -= len;
1387         BUG_ON(skb->len < skb->data_len);
1388         return skb->data += len;
1389 }
1390
1391 static inline unsigned char *skb_pull_inline(struct sk_buff *skb, unsigned int len)
1392 {
1393         return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len);
1394 }
1395
1396 extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta);
1397
1398 static inline unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len)
1399 {
1400         if (len > skb_headlen(skb) &&
1401             !__pskb_pull_tail(skb, len - skb_headlen(skb)))
1402                 return NULL;
1403         skb->len -= len;
1404         return skb->data += len;
1405 }
1406
1407 static inline unsigned char *pskb_pull(struct sk_buff *skb, unsigned int len)
1408 {
1409         return unlikely(len > skb->len) ? NULL : __pskb_pull(skb, len);
1410 }
1411
1412 static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len)
1413 {
1414         if (likely(len <= skb_headlen(skb)))
1415                 return 1;
1416         if (unlikely(len > skb->len))
1417                 return 0;
1418         return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL;
1419 }
1420
1421 /**
1422  *      skb_headroom - bytes at buffer head
1423  *      @skb: buffer to check
1424  *
1425  *      Return the number of bytes of free space at the head of an &sk_buff.
1426  */
1427 static inline unsigned int skb_headroom(const struct sk_buff *skb)
1428 {
1429         return skb->data - skb->head;
1430 }
1431
1432 /**
1433  *      skb_tailroom - bytes at buffer end
1434  *      @skb: buffer to check
1435  *
1436  *      Return the number of bytes of free space at the tail of an sk_buff
1437  */
1438 static inline int skb_tailroom(const struct sk_buff *skb)
1439 {
1440         return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail;
1441 }
1442
1443 /**
1444  *      skb_availroom - bytes at buffer end
1445  *      @skb: buffer to check
1446  *
1447  *      Return the number of bytes of free space at the tail of an sk_buff
1448  *      allocated by sk_stream_alloc()
1449  */
1450 static inline int skb_availroom(const struct sk_buff *skb)
1451 {
1452         return skb_is_nonlinear(skb) ? 0 : skb->avail_size - skb->len;
1453 }
1454
1455 /**
1456  *      skb_reserve - adjust headroom
1457  *      @skb: buffer to alter
1458  *      @len: bytes to move
1459  *
1460  *      Increase the headroom of an empty &sk_buff by reducing the tail
1461  *      room. This is only allowed for an empty buffer.
1462  */
1463 static inline void skb_reserve(struct sk_buff *skb, int len)
1464 {
1465         skb->data += len;
1466         skb->tail += len;
1467 }
1468
1469 static inline void skb_reset_inner_headers(struct sk_buff *skb)
1470 {
1471         skb->inner_mac_header = skb->mac_header;
1472         skb->inner_network_header = skb->network_header;
1473         skb->inner_transport_header = skb->transport_header;
1474 }
1475
1476 static inline void skb_reset_mac_len(struct sk_buff *skb)
1477 {
1478         skb->mac_len = skb->network_header - skb->mac_header;
1479 }
1480
1481 #ifdef NET_SKBUFF_DATA_USES_OFFSET
1482 static inline unsigned char *skb_inner_transport_header(const struct sk_buff
1483                                                         *skb)
1484 {
1485         return skb->head + skb->inner_transport_header;
1486 }
1487
1488 static inline void skb_reset_inner_transport_header(struct sk_buff *skb)
1489 {
1490         skb->inner_transport_header = skb->data - skb->head;
1491 }
1492
1493 static inline void skb_set_inner_transport_header(struct sk_buff *skb,
1494                                                    const int offset)
1495 {
1496         skb_reset_inner_transport_header(skb);
1497         skb->inner_transport_header += offset;
1498 }
1499
1500 static inline unsigned char *skb_inner_network_header(const struct sk_buff *skb)
1501 {
1502         return skb->head + skb->inner_network_header;
1503 }
1504
1505 static inline void skb_reset_inner_network_header(struct sk_buff *skb)
1506 {
1507         skb->inner_network_header = skb->data - skb->head;
1508 }
1509
1510 static inline void skb_set_inner_network_header(struct sk_buff *skb,
1511                                                 const int offset)
1512 {
1513         skb_reset_inner_network_header(skb);
1514         skb->inner_network_header += offset;
1515 }
1516
1517 static inline unsigned char *skb_inner_mac_header(const struct sk_buff *skb)
1518 {
1519         return skb->head + skb->inner_mac_header;
1520 }
1521
1522 static inline void skb_reset_inner_mac_header(struct sk_buff *skb)
1523 {
1524         skb->inner_mac_header = skb->data - skb->head;
1525 }
1526
1527 static inline void skb_set_inner_mac_header(struct sk_buff *skb,
1528                                             const int offset)
1529 {
1530         skb_reset_inner_mac_header(skb);
1531         skb->inner_mac_header += offset;
1532 }
1533 static inline bool skb_transport_header_was_set(const struct sk_buff *skb)
1534 {
1535         return skb->transport_header != ~0U;
1536 }
1537
1538 static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
1539 {
1540         return skb->head + skb->transport_header;
1541 }
1542
1543 static inline void skb_reset_transport_header(struct sk_buff *skb)
1544 {
1545         skb->transport_header = skb->data - skb->head;
1546 }
1547
1548 static inline void skb_set_transport_header(struct sk_buff *skb,
1549                                             const int offset)
1550 {
1551         skb_reset_transport_header(skb);
1552         skb->transport_header += offset;
1553 }
1554
1555 static inline unsigned char *skb_network_header(const struct sk_buff *skb)
1556 {
1557         return skb->head + skb->network_header;
1558 }
1559
1560 static inline void skb_reset_network_header(struct sk_buff *skb)
1561 {
1562         skb->network_header = skb->data - skb->head;
1563 }
1564
1565 static inline void skb_set_network_header(struct sk_buff *skb, const int offset)
1566 {
1567         skb_reset_network_header(skb);
1568         skb->network_header += offset;
1569 }
1570
1571 static inline unsigned char *skb_mac_header(const struct sk_buff *skb)
1572 {
1573         return skb->head + skb->mac_header;
1574 }
1575
1576 static inline int skb_mac_header_was_set(const struct sk_buff *skb)
1577 {
1578         return skb->mac_header != ~0U;
1579 }
1580
1581 static inline void skb_reset_mac_header(struct sk_buff *skb)
1582 {
1583         skb->mac_header = skb->data - skb->head;
1584 }
1585
1586 static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
1587 {
1588         skb_reset_mac_header(skb);
1589         skb->mac_header += offset;
1590 }
1591
1592 #else /* NET_SKBUFF_DATA_USES_OFFSET */
1593 static inline unsigned char *skb_inner_transport_header(const struct sk_buff
1594                                                         *skb)
1595 {
1596         return skb->inner_transport_header;
1597 }
1598
1599 static inline void skb_reset_inner_transport_header(struct sk_buff *skb)
1600 {
1601         skb->inner_transport_header = skb->data;
1602 }
1603
1604 static inline void skb_set_inner_transport_header(struct sk_buff *skb,
1605                                                    const int offset)
1606 {
1607         skb->inner_transport_header = skb->data + offset;
1608 }
1609
1610 static inline unsigned char *skb_inner_network_header(const struct sk_buff *skb)
1611 {
1612         return skb->inner_network_header;
1613 }
1614
1615 static inline void skb_reset_inner_network_header(struct sk_buff *skb)
1616 {
1617         skb->inner_network_header = skb->data;
1618 }
1619
1620 static inline void skb_set_inner_network_header(struct sk_buff *skb,
1621                                                 const int offset)
1622 {
1623         skb->inner_network_header = skb->data + offset;
1624 }
1625
1626 static inline unsigned char *skb_inner_mac_header(const struct sk_buff *skb)
1627 {
1628         return skb->inner_mac_header;
1629 }
1630
1631 static inline void skb_reset_inner_mac_header(struct sk_buff *skb)
1632 {
1633         skb->inner_mac_header = skb->data;
1634 }
1635
1636 static inline void skb_set_inner_mac_header(struct sk_buff *skb,
1637                                                 const int offset)
1638 {
1639         skb->inner_mac_header = skb->data + offset;
1640 }
1641 static inline bool skb_transport_header_was_set(const struct sk_buff *skb)
1642 {
1643         return skb->transport_header != NULL;
1644 }
1645
1646 static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
1647 {
1648         return skb->transport_header;
1649 }
1650
1651 static inline void skb_reset_transport_header(struct sk_buff *skb)
1652 {
1653         skb->transport_header = skb->data;
1654 }
1655
1656 static inline void skb_set_transport_header(struct sk_buff *skb,
1657                                             const int offset)
1658 {
1659         skb->transport_header = skb->data + offset;
1660 }
1661
1662 static inline unsigned char *skb_network_header(const struct sk_buff *skb)
1663 {
1664         return skb->network_header;
1665 }
1666
1667 static inline void skb_reset_network_header(struct sk_buff *skb)
1668 {
1669         skb->network_header = skb->data;
1670 }
1671
1672 static inline void skb_set_network_header(struct sk_buff *skb, const int offset)
1673 {
1674         skb->network_header = skb->data + offset;
1675 }
1676
1677 static inline unsigned char *skb_mac_header(const struct sk_buff *skb)
1678 {
1679         return skb->mac_header;
1680 }
1681
1682 static inline int skb_mac_header_was_set(const struct sk_buff *skb)
1683 {
1684         return skb->mac_header != NULL;
1685 }
1686
1687 static inline void skb_reset_mac_header(struct sk_buff *skb)
1688 {
1689         skb->mac_header = skb->data;
1690 }
1691
1692 static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
1693 {
1694         skb->mac_header = skb->data + offset;
1695 }
1696 #endif /* NET_SKBUFF_DATA_USES_OFFSET */
1697
1698 static inline void skb_mac_header_rebuild(struct sk_buff *skb)
1699 {
1700         if (skb_mac_header_was_set(skb)) {
1701                 const unsigned char *old_mac = skb_mac_header(skb);
1702
1703                 skb_set_mac_header(skb, -skb->mac_len);
1704                 memmove(skb_mac_header(skb), old_mac, skb->mac_len);
1705         }
1706 }
1707
1708 static inline int skb_checksum_start_offset(const struct sk_buff *skb)
1709 {
1710         return skb->csum_start - skb_headroom(skb);
1711 }
1712
1713 static inline int skb_transport_offset(const struct sk_buff *skb)
1714 {
1715         return skb_transport_header(skb) - skb->data;
1716 }
1717
1718 static inline u32 skb_network_header_len(const struct sk_buff *skb)
1719 {
1720         return skb->transport_header - skb->network_header;
1721 }
1722
1723 static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
1724 {
1725         return skb->inner_transport_header - skb->inner_network_header;
1726 }
1727
1728 static inline int skb_network_offset(const struct sk_buff *skb)
1729 {
1730         return skb_network_header(skb) - skb->data;
1731 }
1732
1733 static inline int skb_inner_network_offset(const struct sk_buff *skb)
1734 {
1735         return skb_inner_network_header(skb) - skb->data;
1736 }
1737
1738 static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
1739 {
1740         return pskb_may_pull(skb, skb_network_offset(skb) + len);
1741 }
1742
1743 /*
1744  * CPUs often take a performance hit when accessing unaligned memory
1745  * locations. The actual performance hit varies, it can be small if the
1746  * hardware handles it or large if we have to take an exception and fix it
1747  * in software.
1748  *
1749  * Since an ethernet header is 14 bytes network drivers often end up with
1750  * the IP header at an unaligned offset. The IP header can be aligned by
1751  * shifting the start of the packet by 2 bytes. Drivers should do this
1752  * with:
1753  *
1754  * skb_reserve(skb, NET_IP_ALIGN);
1755  *
1756  * The downside to this alignment of the IP header is that the DMA is now
1757  * unaligned. On some architectures the cost of an unaligned DMA is high
1758  * and this cost outweighs the gains made by aligning the IP header.
1759  *
1760  * Since this trade off varies between architectures, we allow NET_IP_ALIGN
1761  * to be overridden.
1762  */
1763 #ifndef NET_IP_ALIGN
1764 #define NET_IP_ALIGN    2
1765 #endif
1766
1767 /*
1768  * The networking layer reserves some headroom in skb data (via
1769  * dev_alloc_skb). This is used to avoid having to reallocate skb data when
1770  * the header has to grow. In the default case, if the header has to grow
1771  * 32 bytes or less we avoid the reallocation.
1772  *
1773  * Unfortunately this headroom changes the DMA alignment of the resulting
1774  * network packet. As for NET_IP_ALIGN, this unaligned DMA is expensive
1775  * on some architectures. An architecture can override this value,
1776  * perhaps setting it to a cacheline in size (since that will maintain
1777  * cacheline alignment of the DMA). It must be a power of 2.
1778  *
1779  * Various parts of the networking layer expect at least 32 bytes of
1780  * headroom, you should not reduce this.
1781  *
1782  * Using max(32, L1_CACHE_BYTES) makes sense (especially with RPS)
1783  * to reduce average number of cache lines per packet.
1784  * get_rps_cpus() for example only access one 64 bytes aligned block :
1785  * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
1786  */
1787 #ifndef NET_SKB_PAD
1788 #define NET_SKB_PAD     max(32, L1_CACHE_BYTES)
1789 #endif
1790
1791 extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
1792
1793 static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
1794 {
1795         if (unlikely(skb_is_nonlinear(skb))) {
1796                 WARN_ON(1);
1797                 return;
1798         }
1799         skb->len = len;
1800         skb_set_tail_pointer(skb, len);
1801 }
1802
1803 extern void skb_trim(struct sk_buff *skb, unsigned int len);
1804
1805 static inline int __pskb_trim(struct sk_buff *skb, unsigned int len)
1806 {
1807         if (skb->data_len)
1808                 return ___pskb_trim(skb, len);
1809         __skb_trim(skb, len);
1810         return 0;
1811 }
1812
1813 static inline int pskb_trim(struct sk_buff *skb, unsigned int len)
1814 {
1815         return (len < skb->len) ? __pskb_trim(skb, len) : 0;
1816 }
1817
1818 /**
1819  *      pskb_trim_unique - remove end from a paged unique (not cloned) buffer
1820  *      @skb: buffer to alter
1821  *      @len: new length
1822  *
1823  *      This is identical to pskb_trim except that the caller knows that
1824  *      the skb is not cloned so we should never get an error due to out-
1825  *      of-memory.
1826  */
1827 static inline void pskb_trim_unique(struct sk_buff *skb, unsigned int len)
1828 {
1829         int err = pskb_trim(skb, len);
1830         BUG_ON(err);
1831 }
1832
1833 /**
1834  *      skb_orphan - orphan a buffer
1835  *      @skb: buffer to orphan
1836  *
1837  *      If a buffer currently has an owner then we call the owner's
1838  *      destructor function and make the @skb unowned. The buffer continues
1839  *      to exist but is no longer charged to its former owner.
1840  */
1841 static inline void skb_orphan(struct sk_buff *skb)
1842 {
1843         if (skb->destructor)
1844                 skb->destructor(skb);
1845         skb->destructor = NULL;
1846         skb->sk         = NULL;
1847 }
1848
1849 /**
1850  *      skb_orphan_frags - orphan the frags contained in a buffer
1851  *      @skb: buffer to orphan frags from
1852  *      @gfp_mask: allocation mask for replacement pages
1853  *
1854  *      For each frag in the SKB which needs a destructor (i.e. has an
1855  *      owner) create a copy of that frag and release the original
1856  *      page by calling the destructor.
1857  */
1858 static inline int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask)
1859 {
1860         if (likely(!(skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY)))
1861                 return 0;
1862         return skb_copy_ubufs(skb, gfp_mask);
1863 }
1864
1865 /**
1866  *      __skb_queue_purge - empty a list
1867  *      @list: list to empty
1868  *
1869  *      Delete all buffers on an &sk_buff list. Each buffer is removed from
1870  *      the list and one reference dropped. This function does not take the
1871  *      list lock and the caller must hold the relevant locks to use it.
1872  */
1873 extern void skb_queue_purge(struct sk_buff_head *list);
1874 static inline void __skb_queue_purge(struct sk_buff_head *list)
1875 {
1876         struct sk_buff *skb;
1877         while ((skb = __skb_dequeue(list)) != NULL)
1878                 kfree_skb(skb);
1879 }
1880
1881 #define NETDEV_FRAG_PAGE_MAX_ORDER get_order(32768)
1882 #define NETDEV_FRAG_PAGE_MAX_SIZE  (PAGE_SIZE << NETDEV_FRAG_PAGE_MAX_ORDER)
1883 #define NETDEV_PAGECNT_MAX_BIAS    NETDEV_FRAG_PAGE_MAX_SIZE
1884
1885 extern void *netdev_alloc_frag(unsigned int fragsz);
1886
1887 extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
1888                                           unsigned int length,
1889                                           gfp_t gfp_mask);
1890
1891 /**
1892  *      netdev_alloc_skb - allocate an skbuff for rx on a specific device
1893  *      @dev: network device to receive on
1894  *      @length: length to allocate
1895  *
1896  *      Allocate a new &sk_buff and assign it a usage count of one. The
1897  *      buffer has unspecified headroom built in. Users should allocate
1898  *      the headroom they think they need without accounting for the
1899  *      built in space. The built in space is used for optimisations.
1900  *
1901  *      %NULL is returned if there is no free memory. Although this function
1902  *      allocates memory it can be called from an interrupt.
1903  */
1904 static inline struct sk_buff *netdev_alloc_skb(struct net_device *dev,
1905                                                unsigned int length)
1906 {
1907         return __netdev_alloc_skb(dev, length, GFP_ATOMIC);
1908 }
1909
1910 /* legacy helper around __netdev_alloc_skb() */
1911 static inline struct sk_buff *__dev_alloc_skb(unsigned int length,
1912                                               gfp_t gfp_mask)
1913 {
1914         return __netdev_alloc_skb(NULL, length, gfp_mask);
1915 }
1916
1917 /* legacy helper around netdev_alloc_skb() */
1918 static inline struct sk_buff *dev_alloc_skb(unsigned int length)
1919 {
1920         return netdev_alloc_skb(NULL, length);
1921 }
1922
1923
1924 static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
1925                 unsigned int length, gfp_t gfp)
1926 {
1927         struct sk_buff *skb = __netdev_alloc_skb(dev, length + NET_IP_ALIGN, gfp);
1928
1929         if (NET_IP_ALIGN && skb)
1930                 skb_reserve(skb, NET_IP_ALIGN);
1931         return skb;
1932 }
1933
1934 static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev,
1935                 unsigned int length)
1936 {
1937         return __netdev_alloc_skb_ip_align(dev, length, GFP_ATOMIC);
1938 }
1939
1940 /*
1941  *      __skb_alloc_page - allocate pages for ps-rx on a skb and preserve pfmemalloc data
1942  *      @gfp_mask: alloc_pages_node mask. Set __GFP_NOMEMALLOC if not for network packet RX
1943  *      @skb: skb to set pfmemalloc on if __GFP_MEMALLOC is used
1944  *      @order: size of the allocation
1945  *
1946  *      Allocate a new page.
1947  *
1948  *      %NULL is returned if there is no free memory.
1949 */
1950 static inline struct page *__skb_alloc_pages(gfp_t gfp_mask,
1951                                               struct sk_buff *skb,
1952                                               unsigned int order)
1953 {
1954         struct page *page;
1955
1956         gfp_mask |= __GFP_COLD;
1957
1958         if (!(gfp_mask & __GFP_NOMEMALLOC))
1959                 gfp_mask |= __GFP_MEMALLOC;
1960
1961         page = alloc_pages_node(NUMA_NO_NODE, gfp_mask, order);
1962         if (skb && page && page->pfmemalloc)
1963                 skb->pfmemalloc = true;
1964
1965         return page;
1966 }
1967
1968 /**
1969  *      __skb_alloc_page - allocate a page for ps-rx for a given skb and preserve pfmemalloc data
1970  *      @gfp_mask: alloc_pages_node mask. Set __GFP_NOMEMALLOC if not for network packet RX
1971  *      @skb: skb to set pfmemalloc on if __GFP_MEMALLOC is used
1972  *
1973  *      Allocate a new page.
1974  *
1975  *      %NULL is returned if there is no free memory.
1976  */
1977 static inline struct page *__skb_alloc_page(gfp_t gfp_mask,
1978                                              struct sk_buff *skb)
1979 {
1980         return __skb_alloc_pages(gfp_mask, skb, 0);
1981 }
1982
1983 /**
1984  *      skb_propagate_pfmemalloc - Propagate pfmemalloc if skb is allocated after RX page
1985  *      @page: The page that was allocated from skb_alloc_page
1986  *      @skb: The skb that may need pfmemalloc set
1987  */
1988 static inline void skb_propagate_pfmemalloc(struct page *page,
1989                                              struct sk_buff *skb)
1990 {
1991         if (page && page->pfmemalloc)
1992                 skb->pfmemalloc = true;
1993 }
1994
1995 /**
1996  * skb_frag_page - retrieve the page refered to by a paged fragment
1997  * @frag: the paged fragment
1998  *
1999  * Returns the &struct page associated with @frag.
2000  */
2001 static inline struct page *skb_frag_page(const skb_frag_t *frag)
2002 {
2003         return frag->page.p;
2004 }
2005
2006 /**
2007  * __skb_frag_ref - take an addition reference on a paged fragment.
2008  * @frag: the paged fragment
2009  *
2010  * Takes an additional reference on the paged fragment @frag.
2011  */
2012 static inline void __skb_frag_ref(skb_frag_t *frag)
2013 {
2014         get_page(skb_frag_page(frag));
2015 }
2016
2017 /**
2018  * skb_frag_ref - take an addition reference on a paged fragment of an skb.
2019  * @skb: the buffer
2020  * @f: the fragment offset.
2021  *
2022  * Takes an additional reference on the @f'th paged fragment of @skb.
2023  */
2024 static inline void skb_frag_ref(struct sk_buff *skb, int f)
2025 {
2026         __skb_frag_ref(&skb_shinfo(skb)->frags[f]);
2027 }
2028
2029 /**
2030  * __skb_frag_unref - release a reference on a paged fragment.
2031  * @frag: the paged fragment
2032  *
2033  * Releases a reference on the paged fragment @frag.
2034  */
2035 static inline void __skb_frag_unref(skb_frag_t *frag)
2036 {
2037         put_page(skb_frag_page(frag));
2038 }
2039
2040 /**
2041  * skb_frag_unref - release a reference on a paged fragment of an skb.
2042  * @skb: the buffer
2043  * @f: the fragment offset
2044  *
2045  * Releases a reference on the @f'th paged fragment of @skb.
2046  */
2047 static inline void skb_frag_unref(struct sk_buff *skb, int f)
2048 {
2049         __skb_frag_unref(&skb_shinfo(skb)->frags[f]);
2050 }
2051
2052 /**
2053  * skb_frag_address - gets the address of the data contained in a paged fragment
2054  * @frag: the paged fragment buffer
2055  *
2056  * Returns the address of the data within @frag. The page must already
2057  * be mapped.
2058  */
2059 static inline void *skb_frag_address(const skb_frag_t *frag)
2060 {
2061         return page_address(skb_frag_page(frag)) + frag->page_offset;
2062 }
2063
2064 /**
2065  * skb_frag_address_safe - gets the address of the data contained in a paged fragment
2066  * @frag: the paged fragment buffer
2067  *
2068  * Returns the address of the data within @frag. Checks that the page
2069  * is mapped and returns %NULL otherwise.
2070  */
2071 static inline void *skb_frag_address_safe(const skb_frag_t *frag)
2072 {
2073         void *ptr = page_address(skb_frag_page(frag));
2074         if (unlikely(!ptr))
2075                 return NULL;
2076
2077         return ptr + frag->page_offset;
2078 }
2079
2080 /**
2081  * __skb_frag_set_page - sets the page contained in a paged fragment
2082  * @frag: the paged fragment
2083  * @page: the page to set
2084  *
2085  * Sets the fragment @frag to contain @page.
2086  */
2087 static inline void __skb_frag_set_page(skb_frag_t *frag, struct page *page)
2088 {
2089         frag->page.p = page;
2090 }
2091
2092 /**
2093  * skb_frag_set_page - sets the page contained in a paged fragment of an skb
2094  * @skb: the buffer
2095  * @f: the fragment offset
2096  * @page: the page to set
2097  *
2098  * Sets the @f'th fragment of @skb to contain @page.
2099  */
2100 static inline void skb_frag_set_page(struct sk_buff *skb, int f,
2101                                      struct page *page)
2102 {
2103         __skb_frag_set_page(&skb_shinfo(skb)->frags[f], page);
2104 }
2105
2106 /**
2107  * skb_frag_dma_map - maps a paged fragment via the DMA API
2108  * @dev: the device to map the fragment to
2109  * @frag: the paged fragment to map
2110  * @offset: the offset within the fragment (starting at the
2111  *          fragment's own offset)
2112  * @size: the number of bytes to map
2113  * @dir: the direction of the mapping (%PCI_DMA_*)
2114  *
2115  * Maps the page associated with @frag to @device.
2116  */
2117 static inline dma_addr_t skb_frag_dma_map(struct device *dev,
2118                                           const skb_frag_t *frag,
2119                                           size_t offset, size_t size,
2120                                           enum dma_data_direction dir)
2121 {
2122         return dma_map_page(dev, skb_frag_page(frag),
2123                             frag->page_offset + offset, size, dir);
2124 }
2125
2126 static inline struct sk_buff *pskb_copy(struct sk_buff *skb,
2127                                         gfp_t gfp_mask)
2128 {
2129         return __pskb_copy(skb, skb_headroom(skb), gfp_mask);
2130 }
2131
2132 /**
2133  *      skb_clone_writable - is the header of a clone writable
2134  *      @skb: buffer to check
2135  *      @len: length up to which to write
2136  *
2137  *      Returns true if modifying the header part of the cloned buffer
2138  *      does not requires the data to be copied.
2139  */
2140 static inline int skb_clone_writable(const struct sk_buff *skb, unsigned int len)
2141 {
2142         return !skb_header_cloned(skb) &&
2143                skb_headroom(skb) + len <= skb->hdr_len;
2144 }
2145
2146 static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
2147                             int cloned)
2148 {
2149         int delta = 0;
2150
2151         if (headroom > skb_headroom(skb))
2152                 delta = headroom - skb_headroom(skb);
2153
2154         if (delta || cloned)
2155                 return pskb_expand_head(skb, ALIGN(delta, NET_SKB_PAD), 0,
2156                                         GFP_ATOMIC);
2157         return 0;
2158 }
2159
2160 /**
2161  *      skb_cow - copy header of skb when it is required
2162  *      @skb: buffer to cow
2163  *      @headroom: needed headroom
2164  *
2165  *      If the skb passed lacks sufficient headroom or its data part
2166  *      is shared, data is reallocated. If reallocation fails, an error
2167  *      is returned and original skb is not changed.
2168  *
2169  *      The result is skb with writable area skb->head...skb->tail
2170  *      and at least @headroom of space at head.
2171  */
2172 static inline int skb_cow(struct sk_buff *skb, unsigned int headroom)
2173 {
2174         return __skb_cow(skb, headroom, skb_cloned(skb));
2175 }
2176
2177 /**
2178  *      skb_cow_head - skb_cow but only making the head writable
2179  *      @skb: buffer to cow
2180  *      @headroom: needed headroom
2181  *
2182  *      This function is identical to skb_cow except that we replace the
2183  *      skb_cloned check by skb_header_cloned.  It should be used when
2184  *      you only need to push on some header and do not need to modify
2185  *      the data.
2186  */
2187 static inline int skb_cow_head(struct sk_buff *skb, unsigned int headroom)
2188 {
2189         return __skb_cow(skb, headroom, skb_header_cloned(skb));
2190 }
2191
2192 /**
2193  *      skb_padto       - pad an skbuff up to a minimal size
2194  *      @skb: buffer to pad
2195  *      @len: minimal length
2196  *
2197  *      Pads up a buffer to ensure the trailing bytes exist and are
2198  *      blanked. If the buffer already contains sufficient data it
2199  *      is untouched. Otherwise it is extended. Returns zero on
2200  *      success. The skb is freed on error.
2201  */
2202  
2203 static inline int skb_padto(struct sk_buff *skb, unsigned int len)
2204 {
2205         unsigned int size = skb->len;
2206         if (likely(size >= len))
2207                 return 0;
2208         return skb_pad(skb, len - size);
2209 }
2210
2211 static inline int skb_add_data(struct sk_buff *skb,
2212                                char __user *from, int copy)
2213 {
2214         const int off = skb->len;
2215
2216         if (skb->ip_summed == CHECKSUM_NONE) {
2217                 int err = 0;
2218                 __wsum csum = csum_and_copy_from_user(from, skb_put(skb, copy),
2219                                                             copy, 0, &err);
2220                 if (!err) {
2221                         skb->csum = csum_block_add(skb->csum, csum, off);
2222                         return 0;
2223                 }
2224         } else if (!copy_from_user(skb_put(skb, copy), from, copy))
2225                 return 0;
2226
2227         __skb_trim(skb, off);
2228         return -EFAULT;
2229 }
2230
2231 static inline bool skb_can_coalesce(struct sk_buff *skb, int i,
2232                                     const struct page *page, int off)
2233 {
2234         if (i) {
2235                 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1];
2236
2237                 return page == skb_frag_page(frag) &&
2238                        off == frag->page_offset + skb_frag_size(frag);
2239         }
2240         return false;
2241 }
2242
2243 static inline int __skb_linearize(struct sk_buff *skb)
2244 {
2245         return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM;
2246 }
2247
2248 /**
2249  *      skb_linearize - convert paged skb to linear one
2250  *      @skb: buffer to linarize
2251  *
2252  *      If there is no free memory -ENOMEM is returned, otherwise zero
2253  *      is returned and the old skb data released.
2254  */
2255 static inline int skb_linearize(struct sk_buff *skb)
2256 {
2257         return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0;
2258 }
2259
2260 /**
2261  * skb_has_shared_frag - can any frag be overwritten
2262  * @skb: buffer to test
2263  *
2264  * Return true if the skb has at least one frag that might be modified
2265  * by an external entity (as in vmsplice()/sendfile())
2266  */
2267 static inline bool skb_has_shared_frag(const struct sk_buff *skb)
2268 {
2269         return skb_is_nonlinear(skb) &&
2270                skb_shinfo(skb)->tx_flags & SKBTX_SHARED_FRAG;
2271 }
2272
2273 /**
2274  *      skb_linearize_cow - make sure skb is linear and writable
2275  *      @skb: buffer to process
2276  *
2277  *      If there is no free memory -ENOMEM is returned, otherwise zero
2278  *      is returned and the old skb data released.
2279  */
2280 static inline int skb_linearize_cow(struct sk_buff *skb)
2281 {
2282         return skb_is_nonlinear(skb) || skb_cloned(skb) ?
2283                __skb_linearize(skb) : 0;
2284 }
2285
2286 /**
2287  *      skb_postpull_rcsum - update checksum for received skb after pull
2288  *      @skb: buffer to update
2289  *      @start: start of data before pull
2290  *      @len: length of data pulled
2291  *
2292  *      After doing a pull on a received packet, you need to call this to
2293  *      update the CHECKSUM_COMPLETE checksum, or set ip_summed to
2294  *      CHECKSUM_NONE so that it can be recomputed from scratch.
2295  */
2296
2297 static inline void skb_postpull_rcsum(struct sk_buff *skb,
2298                                       const void *start, unsigned int len)
2299 {
2300         if (skb->ip_summed == CHECKSUM_COMPLETE)
2301                 skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0));
2302 }
2303
2304 unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len);
2305
2306 /**
2307  *      pskb_trim_rcsum - trim received skb and update checksum
2308  *      @skb: buffer to trim
2309  *      @len: new length
2310  *
2311  *      This is exactly the same as pskb_trim except that it ensures the
2312  *      checksum of received packets are still valid after the operation.
2313  */
2314
2315 static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
2316 {
2317         if (likely(len >= skb->len))
2318                 return 0;
2319         if (skb->ip_summed == CHECKSUM_COMPLETE)
2320                 skb->ip_summed = CHECKSUM_NONE;
2321         return __pskb_trim(skb, len);
2322 }
2323
2324 #define skb_queue_walk(queue, skb) \
2325                 for (skb = (queue)->next;                                       \
2326                      skb != (struct sk_buff *)(queue);                          \
2327                      skb = skb->next)
2328
2329 #define skb_queue_walk_safe(queue, skb, tmp)                                    \
2330                 for (skb = (queue)->next, tmp = skb->next;                      \
2331                      skb != (struct sk_buff *)(queue);                          \
2332                      skb = tmp, tmp = skb->next)
2333
2334 #define skb_queue_walk_from(queue, skb)                                         \
2335                 for (; skb != (struct sk_buff *)(queue);                        \
2336                      skb = skb->next)
2337
2338 #define skb_queue_walk_from_safe(queue, skb, tmp)                               \
2339                 for (tmp = skb->next;                                           \
2340                      skb != (struct sk_buff *)(queue);                          \
2341                      skb = tmp, tmp = skb->next)
2342
2343 #define skb_queue_reverse_walk(queue, skb) \
2344                 for (skb = (queue)->prev;                                       \
2345                      skb != (struct sk_buff *)(queue);                          \
2346                      skb = skb->prev)
2347
2348 #define skb_queue_reverse_walk_safe(queue, skb, tmp)                            \
2349                 for (skb = (queue)->prev, tmp = skb->prev;                      \
2350                      skb != (struct sk_buff *)(queue);                          \
2351                      skb = tmp, tmp = skb->prev)
2352
2353 #define skb_queue_reverse_walk_from_safe(queue, skb, tmp)                       \
2354                 for (tmp = skb->prev;                                           \
2355                      skb != (struct sk_buff *)(queue);                          \
2356                      skb = tmp, tmp = skb->prev)
2357
2358 static inline bool skb_has_frag_list(const struct sk_buff *skb)
2359 {
2360         return skb_shinfo(skb)->frag_list != NULL;
2361 }
2362
2363 static inline void skb_frag_list_init(struct sk_buff *skb)
2364 {
2365         skb_shinfo(skb)->frag_list = NULL;
2366 }
2367
2368 static inline void skb_frag_add_head(struct sk_buff *skb, struct sk_buff *frag)
2369 {
2370         frag->next = skb_shinfo(skb)->frag_list;
2371         skb_shinfo(skb)->frag_list = frag;
2372 }
2373
2374 #define skb_walk_frags(skb, iter)       \
2375         for (iter = skb_shinfo(skb)->frag_list; iter; iter = iter->next)
2376
2377 extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags,
2378                                            int *peeked, int *off, int *err);
2379 extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags,
2380                                          int noblock, int *err);
2381 extern unsigned int    datagram_poll(struct file *file, struct socket *sock,
2382                                      struct poll_table_struct *wait);
2383 extern int             skb_copy_datagram_iovec(const struct sk_buff *from,
2384                                                int offset, struct iovec *to,
2385                                                int size);
2386 extern int             skb_copy_and_csum_datagram_iovec(struct sk_buff *skb,
2387                                                         int hlen,
2388                                                         struct iovec *iov);
2389 extern int             skb_copy_datagram_from_iovec(struct sk_buff *skb,
2390                                                     int offset,
2391                                                     const struct iovec *from,
2392                                                     int from_offset,
2393                                                     int len);
2394 extern int             skb_copy_datagram_const_iovec(const struct sk_buff *from,
2395                                                      int offset,
2396                                                      const struct iovec *to,
2397                                                      int to_offset,
2398                                                      int size);
2399 extern void            skb_free_datagram(struct sock *sk, struct sk_buff *skb);
2400 extern void            skb_free_datagram_locked(struct sock *sk,
2401                                                 struct sk_buff *skb);
2402 extern int             skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
2403                                          unsigned int flags);
2404 extern __wsum          skb_checksum(const struct sk_buff *skb, int offset,
2405                                     int len, __wsum csum);
2406 extern int             skb_copy_bits(const struct sk_buff *skb, int offset,
2407                                      void *to, int len);
2408 extern int             skb_store_bits(struct sk_buff *skb, int offset,
2409                                       const void *from, int len);
2410 extern __wsum          skb_copy_and_csum_bits(const struct sk_buff *skb,
2411                                               int offset, u8 *to, int len,
2412                                               __wsum csum);
2413 extern int             skb_splice_bits(struct sk_buff *skb,
2414                                                 unsigned int offset,
2415                                                 struct pipe_inode_info *pipe,
2416                                                 unsigned int len,
2417                                                 unsigned int flags);
2418 extern void            skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
2419 extern void            skb_split(struct sk_buff *skb,
2420                                  struct sk_buff *skb1, const u32 len);
2421 extern int             skb_shift(struct sk_buff *tgt, struct sk_buff *skb,
2422                                  int shiftlen);
2423
2424 extern struct sk_buff *skb_segment(struct sk_buff *skb,
2425                                    netdev_features_t features);
2426
2427 static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
2428                                        int len, void *buffer)
2429 {
2430         int hlen = skb_headlen(skb);
2431
2432         if (hlen - offset >= len)
2433                 return skb->data + offset;
2434
2435         if (skb_copy_bits(skb, offset, buffer, len) < 0)
2436                 return NULL;
2437
2438         return buffer;
2439 }
2440
2441 static inline void skb_copy_from_linear_data(const struct sk_buff *skb,
2442                                              void *to,
2443                                              const unsigned int len)
2444 {
2445         memcpy(to, skb->data, len);
2446 }
2447
2448 static inline void skb_copy_from_linear_data_offset(const struct sk_buff *skb,
2449                                                     const int offset, void *to,
2450                                                     const unsigned int len)
2451 {
2452         memcpy(to, skb->data + offset, len);
2453 }
2454
2455 static inline void skb_copy_to_linear_data(struct sk_buff *skb,
2456                                            const void *from,
2457                                            const unsigned int len)
2458 {
2459         memcpy(skb->data, from, len);
2460 }
2461
2462 static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb,
2463                                                   const int offset,
2464                                                   const void *from,
2465                                                   const unsigned int len)
2466 {
2467         memcpy(skb->data + offset, from, len);
2468 }
2469
2470 extern void skb_init(void);
2471
2472 static inline ktime_t skb_get_ktime(const struct sk_buff *skb)
2473 {
2474         return skb->tstamp;
2475 }
2476
2477 /**
2478  *      skb_get_timestamp - get timestamp from a skb
2479  *      @skb: skb to get stamp from
2480  *      @stamp: pointer to struct timeval to store stamp in
2481  *
2482  *      Timestamps are stored in the skb as offsets to a base timestamp.
2483  *      This function converts the offset back to a struct timeval and stores
2484  *      it in stamp.
2485  */
2486 static inline void skb_get_timestamp(const struct sk_buff *skb,
2487                                      struct timeval *stamp)
2488 {
2489         *stamp = ktime_to_timeval(skb->tstamp);
2490 }
2491
2492 static inline void skb_get_timestampns(const struct sk_buff *skb,
2493                                        struct timespec *stamp)
2494 {
2495         *stamp = ktime_to_timespec(skb->tstamp);
2496 }
2497
2498 static inline void __net_timestamp(struct sk_buff *skb)
2499 {
2500         skb->tstamp = ktime_get_real();
2501 }
2502
2503 static inline ktime_t net_timedelta(ktime_t t)
2504 {
2505         return ktime_sub(ktime_get_real(), t);
2506 }
2507
2508 static inline ktime_t net_invalid_timestamp(void)
2509 {
2510         return ktime_set(0, 0);
2511 }
2512
2513 extern void skb_timestamping_init(void);
2514
2515 #ifdef CONFIG_NETWORK_PHY_TIMESTAMPING
2516
2517 extern void skb_clone_tx_timestamp(struct sk_buff *skb);
2518 extern bool skb_defer_rx_timestamp(struct sk_buff *skb);
2519
2520 #else /* CONFIG_NETWORK_PHY_TIMESTAMPING */
2521
2522 static inline void skb_clone_tx_timestamp(struct sk_buff *skb)
2523 {
2524 }
2525
2526 static inline bool skb_defer_rx_timestamp(struct sk_buff *skb)
2527 {
2528         return false;
2529 }
2530
2531 #endif /* !CONFIG_NETWORK_PHY_TIMESTAMPING */
2532
2533 /**
2534  * skb_complete_tx_timestamp() - deliver cloned skb with tx timestamps
2535  *
2536  * PHY drivers may accept clones of transmitted packets for
2537  * timestamping via their phy_driver.txtstamp method. These drivers
2538  * must call this function to return the skb back to the stack, with
2539  * or without a timestamp.
2540  *
2541  * @skb: clone of the the original outgoing packet
2542  * @hwtstamps: hardware time stamps, may be NULL if not available
2543  *
2544  */
2545 void skb_complete_tx_timestamp(struct sk_buff *skb,
2546                                struct skb_shared_hwtstamps *hwtstamps);
2547
2548 /**
2549  * skb_tstamp_tx - queue clone of skb with send time stamps
2550  * @orig_skb:   the original outgoing packet
2551  * @hwtstamps:  hardware time stamps, may be NULL if not available
2552  *
2553  * If the skb has a socket associated, then this function clones the
2554  * skb (thus sharing the actual data and optional structures), stores
2555  * the optional hardware time stamping information (if non NULL) or
2556  * generates a software time stamp (otherwise), then queues the clone
2557  * to the error queue of the socket.  Errors are silently ignored.
2558  */
2559 extern void skb_tstamp_tx(struct sk_buff *orig_skb,
2560                         struct skb_shared_hwtstamps *hwtstamps);
2561
2562 static inline void sw_tx_timestamp(struct sk_buff *skb)
2563 {
2564         if (skb_shinfo(skb)->tx_flags & SKBTX_SW_TSTAMP &&
2565             !(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS))
2566                 skb_tstamp_tx(skb, NULL);
2567 }
2568
2569 /**
2570  * skb_tx_timestamp() - Driver hook for transmit timestamping
2571  *
2572  * Ethernet MAC Drivers should call this function in their hard_xmit()
2573  * function immediately before giving the sk_buff to the MAC hardware.
2574  *
2575  * @skb: A socket buffer.
2576  */
2577 static inline void skb_tx_timestamp(struct sk_buff *skb)
2578 {
2579         skb_clone_tx_timestamp(skb);
2580         sw_tx_timestamp(skb);
2581 }
2582
2583 /**
2584  * skb_complete_wifi_ack - deliver skb with wifi status
2585  *
2586  * @skb: the original outgoing packet
2587  * @acked: ack status
2588  *
2589  */
2590 void skb_complete_wifi_ack(struct sk_buff *skb, bool acked);
2591
2592 extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);
2593 extern __sum16 __skb_checksum_complete(struct sk_buff *skb);
2594
2595 static inline int skb_csum_unnecessary(const struct sk_buff *skb)
2596 {
2597         return skb->ip_summed & CHECKSUM_UNNECESSARY;
2598 }
2599
2600 /**
2601  *      skb_checksum_complete - Calculate checksum of an entire packet
2602  *      @skb: packet to process
2603  *
2604  *      This function calculates the checksum over the entire packet plus
2605  *      the value of skb->csum.  The latter can be used to supply the
2606  *      checksum of a pseudo header as used by TCP/UDP.  It returns the
2607  *      checksum.
2608  *
2609  *      For protocols that contain complete checksums such as ICMP/TCP/UDP,
2610  *      this function can be used to verify that checksum on received
2611  *      packets.  In that case the function should return zero if the
2612  *      checksum is correct.  In particular, this function will return zero
2613  *      if skb->ip_summed is CHECKSUM_UNNECESSARY which indicates that the
2614  *      hardware has already verified the correctness of the checksum.
2615  */
2616 static inline __sum16 skb_checksum_complete(struct sk_buff *skb)
2617 {
2618         return skb_csum_unnecessary(skb) ?
2619                0 : __skb_checksum_complete(skb);
2620 }
2621
2622 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
2623 extern void nf_conntrack_destroy(struct nf_conntrack *nfct);
2624 static inline void nf_conntrack_put(struct nf_conntrack *nfct)
2625 {
2626         if (nfct && atomic_dec_and_test(&nfct->use))
2627                 nf_conntrack_destroy(nfct);
2628 }
2629 static inline void nf_conntrack_get(struct nf_conntrack *nfct)
2630 {
2631         if (nfct)
2632                 atomic_inc(&nfct->use);
2633 }
2634 #endif
2635 #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
2636 static inline void nf_conntrack_get_reasm(struct sk_buff *skb)
2637 {
2638         if (skb)
2639                 atomic_inc(&skb->users);
2640 }
2641 static inline void nf_conntrack_put_reasm(struct sk_buff *skb)
2642 {
2643         if (skb)
2644                 kfree_skb(skb);
2645 }
2646 #endif
2647 #ifdef CONFIG_BRIDGE_NETFILTER
2648 static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge)
2649 {
2650         if (nf_bridge && atomic_dec_and_test(&nf_bridge->use))
2651                 kfree(nf_bridge);
2652 }
2653 static inline void nf_bridge_get(struct nf_bridge_info *nf_bridge)
2654 {
2655         if (nf_bridge)
2656                 atomic_inc(&nf_bridge->use);
2657 }
2658 #endif /* CONFIG_BRIDGE_NETFILTER */
2659 static inline void nf_reset(struct sk_buff *skb)
2660 {
2661 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
2662         nf_conntrack_put(skb->nfct);
2663         skb->nfct = NULL;
2664 #endif
2665 #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
2666         nf_conntrack_put_reasm(skb->nfct_reasm);
2667         skb->nfct_reasm = NULL;
2668 #endif
2669 #ifdef CONFIG_BRIDGE_NETFILTER
2670         nf_bridge_put(skb->nf_bridge);
2671         skb->nf_bridge = NULL;
2672 #endif
2673 }
2674
2675 /* Note: This doesn't put any conntrack and bridge info in dst. */
2676 static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)
2677 {
2678 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
2679         dst->nfct = src->nfct;
2680         nf_conntrack_get(src->nfct);
2681         dst->nfctinfo = src->nfctinfo;
2682 #endif
2683 #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
2684         dst->nfct_reasm = src->nfct_reasm;
2685         nf_conntrack_get_reasm(src->nfct_reasm);
2686 #endif
2687 #ifdef CONFIG_BRIDGE_NETFILTER
2688         dst->nf_bridge  = src->nf_bridge;
2689         nf_bridge_get(src->nf_bridge);
2690 #endif
2691 }
2692
2693 static inline void nf_copy(struct sk_buff *dst, const struct sk_buff *src)
2694 {
2695 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
2696         nf_conntrack_put(dst->nfct);
2697 #endif
2698 #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
2699         nf_conntrack_put_reasm(dst->nfct_reasm);
2700 #endif
2701 #ifdef CONFIG_BRIDGE_NETFILTER
2702         nf_bridge_put(dst->nf_bridge);
2703 #endif
2704         __nf_copy(dst, src);
2705 }
2706
2707 #ifdef CONFIG_NETWORK_SECMARK
2708 static inline void skb_copy_secmark(struct sk_buff *to, const struct sk_buff *from)
2709 {
2710         to->secmark = from->secmark;
2711 }
2712
2713 static inline void skb_init_secmark(struct sk_buff *skb)
2714 {
2715         skb->secmark = 0;
2716 }
2717 #else
2718 static inline void skb_copy_secmark(struct sk_buff *to, const struct sk_buff *from)
2719 { }
2720
2721 static inline void skb_init_secmark(struct sk_buff *skb)
2722 { }
2723 #endif
2724
2725 static inline void skb_set_queue_mapping(struct sk_buff *skb, u16 queue_mapping)
2726 {
2727         skb->queue_mapping = queue_mapping;
2728 }
2729
2730 static inline u16 skb_get_queue_mapping(const struct sk_buff *skb)
2731 {
2732         return skb->queue_mapping;
2733 }
2734
2735 static inline void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_buff *from)
2736 {
2737         to->queue_mapping = from->queue_mapping;
2738 }
2739
2740 static inline void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue)
2741 {
2742         skb->queue_mapping = rx_queue + 1;
2743 }
2744
2745 static inline u16 skb_get_rx_queue(const struct sk_buff *skb)
2746 {
2747         return skb->queue_mapping - 1;
2748 }
2749
2750 static inline bool skb_rx_queue_recorded(const struct sk_buff *skb)
2751 {
2752         return skb->queue_mapping != 0;
2753 }
2754
2755 extern u16 __skb_tx_hash(const struct net_device *dev,
2756                          const struct sk_buff *skb,
2757                          unsigned int num_tx_queues);
2758
2759 #ifdef CONFIG_XFRM
2760 static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
2761 {
2762         return skb->sp;
2763 }
2764 #else
2765 static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
2766 {
2767         return NULL;
2768 }
2769 #endif
2770
2771 /* Keeps track of mac header offset relative to skb->head.
2772  * It is useful for TSO of Tunneling protocol. e.g. GRE.
2773  * For non-tunnel skb it points to skb_mac_header() and for
2774  * tunnel skb it points to outer mac header. */
2775 struct skb_gso_cb {
2776         int mac_offset;
2777 };
2778 #define SKB_GSO_CB(skb) ((struct skb_gso_cb *)(skb)->cb)
2779
2780 static inline int skb_tnl_header_len(const struct sk_buff *inner_skb)
2781 {
2782         return (skb_mac_header(inner_skb) - inner_skb->head) -
2783                 SKB_GSO_CB(inner_skb)->mac_offset;
2784 }
2785
2786 static inline bool skb_is_gso(const struct sk_buff *skb)
2787 {
2788         return skb_shinfo(skb)->gso_size;
2789 }
2790
2791 static inline bool skb_is_gso_v6(const struct sk_buff *skb)
2792 {
2793         return skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6;
2794 }
2795
2796 extern void __skb_warn_lro_forwarding(const struct sk_buff *skb);
2797
2798 static inline bool skb_warn_if_lro(const struct sk_buff *skb)
2799 {
2800         /* LRO sets gso_size but not gso_type, whereas if GSO is really
2801          * wanted then gso_type will be set. */
2802         const struct skb_shared_info *shinfo = skb_shinfo(skb);
2803
2804         if (skb_is_nonlinear(skb) && shinfo->gso_size != 0 &&
2805             unlikely(shinfo->gso_type == 0)) {
2806                 __skb_warn_lro_forwarding(skb);
2807                 return true;
2808         }
2809         return false;
2810 }
2811
2812 static inline void skb_forward_csum(struct sk_buff *skb)
2813 {
2814         /* Unfortunately we don't support this one.  Any brave souls? */
2815         if (skb->ip_summed == CHECKSUM_COMPLETE)
2816                 skb->ip_summed = CHECKSUM_NONE;
2817 }
2818
2819 /**
2820  * skb_checksum_none_assert - make sure skb ip_summed is CHECKSUM_NONE
2821  * @skb: skb to check
2822  *
2823  * fresh skbs have their ip_summed set to CHECKSUM_NONE.
2824  * Instead of forcing ip_summed to CHECKSUM_NONE, we can
2825  * use this helper, to document places where we make this assertion.
2826  */
2827 static inline void skb_checksum_none_assert(const struct sk_buff *skb)
2828 {
2829 #ifdef DEBUG
2830         BUG_ON(skb->ip_summed != CHECKSUM_NONE);
2831 #endif
2832 }
2833
2834 bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off);
2835
2836 /**
2837  * skb_head_is_locked - Determine if the skb->head is locked down
2838  * @skb: skb to check
2839  *
2840  * The head on skbs build around a head frag can be removed if they are
2841  * not cloned.  This function returns true if the skb head is locked down
2842  * due to either being allocated via kmalloc, or by being a clone with
2843  * multiple references to the head.
2844  */
2845 static inline bool skb_head_is_locked(const struct sk_buff *skb)
2846 {
2847         return !skb->head_frag || skb_cloned(skb);
2848 }
2849 #endif  /* __KERNEL__ */
2850 #endif  /* _LINUX_SKBUFF_H */