www.usr.com/support/gpl/USR9107_release.1.4.tar.gz
[bcm963xx.git] / kernel / linux / include / linux / skbuff.h
index 2ba8c2f..5d1734a 100755 (executable)
@@ -247,6 +247,10 @@ struct sk_buff {
        unsigned short          protocol,
                                security;
 
+#if defined(CONFIG_MIPS_BRCM)
+       char                    extif[64];
+#endif
+
        void                    (*destructor)(struct sk_buff *skb);
 #ifdef CONFIG_NETFILTER
         unsigned long          nfmark;
@@ -273,7 +277,7 @@ struct sk_buff {
 
 #endif
 #if defined(CONFIG_MIPS_BRCM)
-#define FROM_WAN               7
+#define FROM_WAN               0x1000
 #define FREE_DATA              0
 #define FREE_SKB               1
        /* Call back function to return the buffer or skb itself back to the free queue
@@ -361,7 +365,7 @@ static inline void skb_hdrinit(unsigned int offset, unsigned int size,
        skb->tail = data + size;
        skb->end  = (unsigned char *) (((unsigned long) data + size + 0x0f) & ~0x0f);
        skb->len = size;
-       skb->rcvfrom = rcvfrom;
+       skb->nfmark |= rcvfrom;
 
        skb->retfreeq_cb = retfreeq_cb;
        skb->retfreeq_context = retfreeq_ctx;
@@ -1167,6 +1171,19 @@ extern void             skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
 extern void           skb_split(struct sk_buff *skb,
                                 struct sk_buff *skb1, const u32 len);
 
+static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
+                                        int len, void *buffer)
+{
+         int hlen = skb_headlen(skb);
+         if (offset + len <= hlen)
+                 return skb->data + offset;
+         if (skb_copy_bits(skb, offset, buffer, len) < 0)
+                 return NULL;
+         return buffer;
+ }
 extern void skb_init(void);
 extern void skb_add_mtu(int mtu);