]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/linux/skbuff.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / include / linux / skbuff.h
index f15154a879c711870ba649f867fc6eeb47212f14..b617095adb88b8d85f569d940261cd4d22c6c3c5 100644 (file)
@@ -34,7 +34,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/netdev_features.h>
 #include <linux/sched.h>
-#include <net/flow_keys.h>
+#include <net/flow_dissector.h>
 
 /* A. Checksumming of received packets by device.
  *
@@ -170,12 +170,14 @@ struct nf_bridge_info {
                BRNF_PROTO_UNCHANGED,
                BRNF_PROTO_8021Q,
                BRNF_PROTO_PPPOE
-       } orig_proto;
+       } orig_proto:8;
        bool                    pkt_otherhost;
        unsigned int            mask;
        struct net_device       *physindev;
-       struct net_device       *physoutdev;
-       char                    neigh_header[8];
+       union {
+               struct net_device *physoutdev;
+               char neigh_header[8];
+       };
        __be32                  ipv4_daddr;
 };
 #endif
@@ -919,7 +921,6 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types type)
        skb->hash = hash;
 }
 
-void __skb_get_hash(struct sk_buff *skb);
 static inline __u32 skb_get_hash(struct sk_buff *skb)
 {
        if (!skb->l4_hash && !skb->sw_hash)
@@ -928,6 +929,8 @@ static inline __u32 skb_get_hash(struct sk_buff *skb)
        return skb->hash;
 }
 
+__u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb);
+
 static inline __u32 skb_get_hash_raw(const struct sk_buff *skb)
 {
        return skb->hash;
@@ -1935,8 +1938,8 @@ static inline void skb_probe_transport_header(struct sk_buff *skb,
 
        if (skb_transport_header_was_set(skb))
                return;
-       else if (skb_flow_dissect(skb, &keys))
-               skb_set_transport_header(skb, keys.thoff);
+       else if (skb_flow_dissect_flow_keys(skb, &keys))
+               skb_set_transport_header(skb, keys.basic.thoff);
        else
                skb_set_transport_header(skb, offset_hint);
 }
@@ -2127,10 +2130,6 @@ static inline void __skb_queue_purge(struct sk_buff_head *list)
                kfree_skb(skb);
 }
 
-#define NETDEV_FRAG_PAGE_MAX_ORDER get_order(32768)
-#define NETDEV_FRAG_PAGE_MAX_SIZE  (PAGE_SIZE << NETDEV_FRAG_PAGE_MAX_ORDER)
-#define NETDEV_PAGECNT_MAX_BIAS           NETDEV_FRAG_PAGE_MAX_SIZE
-
 void *netdev_alloc_frag(unsigned int fragsz);
 
 struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int length,
@@ -2185,6 +2184,11 @@ static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev,
        return __netdev_alloc_skb_ip_align(dev, length, GFP_ATOMIC);
 }
 
+static inline void skb_free_frag(void *addr)
+{
+       __free_page_frag(addr);
+}
+
 void *napi_alloc_frag(unsigned int fragsz);
 struct sk_buff *__napi_alloc_skb(struct napi_struct *napi,
                                 unsigned int length, gfp_t gfp_mask);
@@ -3050,7 +3054,7 @@ static inline __sum16 __skb_checksum_validate_complete(struct sk_buff *skb,
                }
        } else if (skb->csum_bad) {
                /* ip_summed == CHECKSUM_NONE in this case */
-               return 1;
+               return (__force __sum16)1;
        }
 
        skb->csum = psum;
@@ -3298,9 +3302,6 @@ static inline bool skb_rx_queue_recorded(const struct sk_buff *skb)
        return skb->queue_mapping != 0;
 }
 
-u16 __skb_tx_hash(const struct net_device *dev, struct sk_buff *skb,
-                 unsigned int num_tx_queues);
-
 static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
 {
 #ifdef CONFIG_XFRM
@@ -3355,15 +3356,14 @@ static inline int gso_pskb_expand_head(struct sk_buff *skb, int extra)
 static inline __sum16 gso_make_checksum(struct sk_buff *skb, __wsum res)
 {
        int plen = SKB_GSO_CB(skb)->csum_start - skb_headroom(skb) -
-           skb_transport_offset(skb);
-       __u16 csum;
+                  skb_transport_offset(skb);
+       __wsum partial;
 
-       csum = csum_fold(csum_partial(skb_transport_header(skb),
-                                     plen, skb->csum));
+       partial = csum_partial(skb_transport_header(skb), plen, skb->csum);
        skb->csum = res;
        SKB_GSO_CB(skb)->csum_start -= plen;
 
-       return csum;
+       return csum_fold(partial);
 }
 
 static inline bool skb_is_gso(const struct sk_buff *skb)
@@ -3418,10 +3418,9 @@ static inline void skb_checksum_none_assert(const struct sk_buff *skb)
 bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off);
 
 int skb_checksum_setup(struct sk_buff *skb, bool recalculate);
-
-u32 skb_get_poff(const struct sk_buff *skb);
-u32 __skb_get_poff(const struct sk_buff *skb, void *data,
-                  const struct flow_keys *keys, int hlen);
+struct sk_buff *skb_checksum_trimmed(struct sk_buff *skb,
+                                    unsigned int transport_len,
+                                    __sum16(*skb_chkf)(struct sk_buff *skb));
 
 /**
  * skb_head_is_locked - Determine if the skb->head is locked down