datapath: Break out test for dev_disable_lro().
authorJesse Gross <jesse@nicira.com>
Thu, 6 May 2010 22:15:50 +0000 (15:15 -0700)
committerJesse Gross <jesse@nicira.com>
Thu, 6 May 2010 22:28:46 +0000 (15:28 -0700)
It seems that dev_disable_lro() and skb_warn_if_lro() are not always
defined at the same time, despite the fact that they are typically
used together.  This independently tests for them.

acinclude.m4
datapath/linux-2.6/compat-2.6/dev-openvswitch.c
datapath/linux-2.6/compat-2.6/include/linux/netdevice.h
datapath/linux-2.6/compat-2.6/skbuff-openvswitch.c

index e52a884de00a99811c3a010c326daf5dedb630a4..4c8cbdb3a4e62adc64c23d43ba5f1b41abd28433 100644 (file)
@@ -166,6 +166,8 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [
                   [kmemdup], [OVS_DEFINE([HAVE_KMEMDUP])])
   OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_warn_if_lro],
                   [OVS_DEFINE([HAVE_SKB_WARN_LRO])])
+  OVS_GREP_IFELSE([$KSRC26/include/linux/netdevice.h], [dev_disable_lro],
+                  [OVS_DEFINE([HAVE_DEV_DISABLE_LRO])])
   # Check for the proto_data_valid member in struct sk_buff.  The [^@]
   # is necessary because some versions of this header remove the
   # member but retain the kerneldoc comment that describes it (which
index 2bec471390358175691ff75c519ffb705d187fdd..5b7444bb3f20e70f581b0eb9371735afc9653ce4 100644 (file)
@@ -1,4 +1,4 @@
-#ifndef HAVE_SKB_WARN_LRO
+#ifndef HAVE_DEV_DISABLE_LRO
 
 #include <linux/netdevice.h>
 
@@ -25,7 +25,8 @@ void dev_disable_lro(struct net_device *dev)
        }
        WARN_ON(dev->features & NETIF_F_LRO);
 }
-
+#else
+void dev_disable_lro(struct net_device *dev) { }
 #endif /* NETIF_F_LRO */
 
-#endif /* HAVE_SKB_WARN_LRO */
+#endif /* HAVE_DEV_DISABLE_LRO */
index b7fe8deb1a42220c66b08a523acaf3165026d195..2a05f3705576346582e833e7fc6743d2ac0ba49f 100644 (file)
@@ -73,7 +73,7 @@ extern void unregister_netdevice_queue(struct net_device *dev,
 extern void unregister_netdevice_many(struct list_head *head);
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
+#ifndef HAVE_DEV_DISABLE_LRO
 extern void dev_disable_lro(struct net_device *dev);
 #endif
 
index 7991706531ee962f6f7e4f5484b0c00ad07ccefc..e639b5a183b44100909ee800126a4dd550503390 100644 (file)
@@ -1,4 +1,4 @@
-#ifndef HAVE_SKB_WARN_LRO
+#if !defined(HAVE_SKB_WARN_LRO) && defined(NETIF_F_LRO)
 
 #include <linux/netdevice.h>
 
@@ -9,4 +9,4 @@ void __skb_warn_lro_forwarding(const struct sk_buff *skb)
                                    " while LRO is enabled\n", skb->dev->name);
 }
 
-#endif /* HAVE_SKB_WARN_LRO */
+#endif