datapath: Update kernel support to 3.2.
authorPravin B Shelar <pshelar@nicira.com>
Tue, 8 Nov 2011 23:25:12 +0000 (15:25 -0800)
committerPravin B Shelar <pshelar@nicira.com>
Tue, 8 Nov 2011 23:25:12 +0000 (15:25 -0800)
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Bug #7772

datapath/brcompat.c
datapath/datapath.c
datapath/linux/compat/include/linux/skbuff.h
datapath/tunnel.c

index 718e4897804492ec30858774c43d3b934200186b..bd223c7dfe070f920f31991bc532913a12e23fba 100644 (file)
@@ -8,6 +8,7 @@
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
+#include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/uaccess.h>
 #include <linux/completion.h>
index d2815e5dc63f524081dd1a694d1585c5e7211e5b..9a22aab8cc4be32e3719eedef61bc0187f0a87a2 100644 (file)
@@ -53,8 +53,8 @@
 #include "vport-internal_dev.h"
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) || \
-    LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
-#error Kernels before 2.6.18 or after 3.1 are not supported by this version of Open vSwitch.
+    LINUX_VERSION_CODE > KERNEL_VERSION(3,2,0)
+#error Kernels before 2.6.18 or after 3.2 are not supported by this version of Open vSwitch.
 #endif
 
 int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd);
index ccf471714854e5d2166a07c6ca9e3e4b3c7872d6..456d7446736c357e6467b1f5cbb66f9058fb384d 100644 (file)
@@ -232,4 +232,11 @@ static inline bool skb_warn_if_lro(const struct sk_buff *skb)
 #define consume_skb kfree_skb
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
+static inline struct page *skb_frag_page(const skb_frag_t *frag)
+{
+       return frag->page;
+}
+#endif
+
 #endif
index 024861fc4f03677f8b44b72636f955ee796c8a6d..19056b97b4f9c3d5a8decaff75abba7c5738128f 100644 (file)
@@ -1045,7 +1045,7 @@ static bool need_linearize(const struct sk_buff *skb)
         * change them from underneath us and we can skip the linearization.
         */
        for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
-               if (unlikely(page_count(skb_shinfo(skb)->frags[i].page) > 1))
+               if (unlikely(page_count(skb_frag_page(&skb_shinfo(skb)->frags[i])) > 1))
                        return true;
 
        return false;