datapath: Omit sysfs-specific data when sysfs is not enabled or not supported.
authorBen Pfaff <blp@nicira.com>
Fri, 8 May 2009 18:24:58 +0000 (11:24 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 12 May 2009 23:21:56 +0000 (16:21 -0700)
This saves a few bytes of memory but it also makes it clear to the reader
what data is used for what.

datapath/brc_sysfs.h
datapath/brc_sysfs_dp.c
datapath/brc_sysfs_if.c
datapath/brcompat.c
datapath/datapath.c
datapath/datapath.h

index 8a550e3c1b3c01529762c7085cacaf510c48d0b2..0c72fb22741b261957928c4277a0b033517adc4e 100644 (file)
@@ -2,8 +2,8 @@
 #define BRC_SYSFS_H 1
 
 struct datapath;
+struct net_bridge_port;
 
-#include <linux/version.h>
 /* brc_sysfs_dp.c */
 int brc_sysfs_add_dp(struct datapath *dp);
 int brc_sysfs_del_dp(struct datapath *dp);
@@ -12,5 +12,14 @@ int brc_sysfs_del_dp(struct datapath *dp);
 int brc_sysfs_add_if(struct net_bridge_port *p);
 int brc_sysfs_del_if(struct net_bridge_port *p);
 
+#include <linux/version.h>
+#if LINUX_VERSION_CODE == KERNEL_VERSION(2,6,18)
+#define SUPPORT_SYSFS 1
+#else
+/* We only support sysfs on Linux 2.6.18 because that's the only place we
+ * really need it (on Xen, for brcompat) and it's a big pain to try to support
+ * multiple versions. */
+#endif
+
 #endif /* brc_sysfs.h */
 
index 3870217695d92eb0619b3f3659edd962c36a347f..b5ac3b9cab46cb5cfddbcba4703f7590b943f5ed 100644 (file)
@@ -20,7 +20,7 @@
 #include "datapath.h"
 #include "dp_dev.h"
 
-#if LINUX_VERSION_CODE == KERNEL_VERSION(2,6,18)
+#ifdef SUPPORT_SYSFS
 #define to_dev(obj)    container_of(obj, struct device, kobj)
 
 /* Hack to attempt to build on more platforms. */
@@ -522,7 +522,7 @@ int brc_sysfs_del_dp(struct datapath *dp)
 
        return 0;
 }
-#else
+#else /* !SUPPORT_SYSFS */
 int brc_sysfs_add_dp(struct datapath *dp) { return 0; }
 int brc_sysfs_del_dp(struct datapath *dp) { return 0; }
 int brc_sysfs_add_if(struct net_bridge_port *p) { return 0; }
@@ -532,4 +532,4 @@ int brc_sysfs_del_if(struct net_bridge_port *p)
        kfree(p);
        return 0;
 }
-#endif
+#endif /* !SUPPORT_SYSFS */
index 9d269d161bcb3e2938fe1567f9d0686b3c8e7b2f..12fa37785cfead08949ba2538bf99ea0809138fc 100644 (file)
@@ -1,6 +1,3 @@
-#include <linux/version.h>
-#if LINUX_VERSION_CODE == KERNEL_VERSION(2,6,18)
-
 /*
  *     Sysfs attributes of bridge ports for OpenVSwitch
  *
 #include <linux/if_bridge.h>
 #include <linux/rtnetlink.h>
 #include <linux/spinlock.h>
-
 #include "brc_sysfs.h"
 #include "datapath.h"
 
+#ifdef SUPPORT_SYSFS
+
 struct brport_attribute {
        struct attribute        attr;
        ssize_t (*show)(struct net_bridge_port *, char *);
@@ -332,4 +330,4 @@ int brc_sysfs_del_if(struct net_bridge_port *p)
 
        return 0;
 }
-#endif /* Only support 2.6.18 */
+#endif /* SUPPORT_SYSFS */
index a675d9e924b160ab89c796267e455d4695cb1ae5..c9aa89040f2cbae38aaba249e9ce454d86dc5e33 100644 (file)
@@ -470,7 +470,7 @@ int brc_add_dp(struct datapath *dp)
 {
        if (!try_module_get(THIS_MODULE))
                return -ENODEV;
-#if CONFIG_SYSFS
+#ifdef SUPPORT_SYSFS
        brc_sysfs_add_dp(dp);
 #endif
 
@@ -479,7 +479,7 @@ int brc_add_dp(struct datapath *dp)
 
 int brc_del_dp(struct datapath *dp) 
 {
-#if CONFIG_SYSFS
+#ifdef SUPPORT_SYSFS
        brc_sysfs_del_dp(dp);
 #endif
        module_put(THIS_MODULE);
@@ -516,7 +516,7 @@ __init brc_init(void)
        dp_del_dp_hook = brc_del_dp;
 
        /* Register hooks for interface adds and deletes */
-#if CONFIG_SYSFS
+#ifdef SUPPORT_SYSFS
        dp_add_if_hook = brc_sysfs_add_if;
        dp_del_if_hook = brc_sysfs_del_if;
 #endif
index 0fc4ad277b2ed662e41b963cbd19df6ecb11e901..e3cc7d8c896aa53fb96de2d25306a5f813cca320 100644 (file)
@@ -449,7 +449,7 @@ int dp_del_port(struct net_bridge_port *p)
 {
        ASSERT_RTNL();
 
-#if CONFIG_SYSFS
+#ifdef SUPPORT_SYSFS
        if ((p->port_no != ODPP_LOCAL) && dp_del_if_hook) 
                sysfs_remove_link(&p->dp->ifobj, p->dev->name);
 #endif
index 416821b34a7f86d5285ba18392ed32a52c8e9491..1458d084d04090ae5d49eca28b0efa19bdabb156 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/workqueue.h>
 #include <linux/skbuff.h>
 #include "flow.h"
+#include "brc_sysfs.h"
 
 struct sk_buff;
 
@@ -63,7 +64,9 @@ struct datapath {
 
        struct net_device *netdev; /* ofX network device. */
 
+#ifdef SUPPORT_SYSFS
        struct kobject ifobj;
+#endif
 
        int drop_frags;
 
@@ -91,7 +94,9 @@ struct net_bridge_port {
        u16 port_no;
        struct datapath *dp;
        struct net_device *dev;
+#ifdef SUPPORT_SYSFS
        struct kobject kobj;
+#endif
 #ifdef SUPPORT_SNAT
        spinlock_t lock;
        struct snat_conf *snat;