X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fdp_sysfs_dp.c;h=16aa787908175b8f4312f0e292f9dc8bcb84b9b5;hb=a5d6fc245ed1e3e0796a82e947f5ce638becd4ef;hp=74d0ed0be74eb5cc239380d078d8dbdaaeb54b62;hpb=63db6ec35ddc2432dda059f277257886c2d1ba8f;p=openvswitch diff --git a/datapath/dp_sysfs_dp.c b/datapath/dp_sysfs_dp.c index 74d0ed0b..16aa7879 100644 --- a/datapath/dp_sysfs_dp.c +++ b/datapath/dp_sysfs_dp.c @@ -6,6 +6,8 @@ * kernel, by Linus Torvalds and others. */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #include /* @@ -41,19 +43,10 @@ #define DEV_ATTR(NAME) dev_attr_##NAME #endif -struct datapath *sysfs_get_dp(struct net_device *netdev) +static struct datapath *sysfs_get_dp(struct net_device *netdev) { struct vport *vport = internal_dev_get_vport(netdev); - struct dp_port *dp_port; - - if (!vport) - return NULL; - - dp_port = vport_get_dp_port(vport); - if (!dp_port) - return NULL; - - return dp_port->dp; + return vport ? vport->dp : NULL; } /* * Common code for storing bridge parameters. @@ -75,7 +68,7 @@ static ssize_t store_bridge_parm(DEVICE_PARAMS, /* xxx We use a default value of 0 for all fields. If the caller is * xxx attempting to set the value to our default, just silently - * xxx ignore the request. + * xxx ignore the request. */ if (val != 0) { struct datapath *dp; @@ -84,7 +77,7 @@ static ssize_t store_bridge_parm(DEVICE_PARAMS, dp = sysfs_get_dp(to_net_dev(d)); if (dp) - printk("%s: xxx writing dp parms not supported yet!\n", + printk("%s: xxx writing dp parms not supported yet!\n", dp_name(dp)); else result = -ENODEV; @@ -357,7 +350,8 @@ static struct attribute_group bridge_group = { */ int dp_sysfs_add_dp(struct datapath *dp) { - struct kobject *kobj = vport_get_kobj(dp->ports[ODPP_LOCAL]->vport); + struct kobject *kobj = + vport_get_kobj(rtnl_dereference(dp->ports[OVSP_LOCAL])); int err; /* Create /sys/class/net//bridge directory. */ @@ -386,7 +380,8 @@ int dp_sysfs_add_dp(struct datapath *dp) int dp_sysfs_del_dp(struct datapath *dp) { - struct kobject *kobj = vport_get_kobj(dp->ports[ODPP_LOCAL]->vport); + struct kobject *kobj = + vport_get_kobj(rtnl_dereference(dp->ports[OVSP_LOCAL])); kobject_del(&dp->ifobj); sysfs_remove_group(kobj, &bridge_group); @@ -396,6 +391,6 @@ int dp_sysfs_del_dp(struct datapath *dp) #else /* !CONFIG_SYSFS */ int dp_sysfs_add_dp(struct datapath *dp) { return 0; } int dp_sysfs_del_dp(struct datapath *dp) { return 0; } -int dp_sysfs_add_if(struct dp_port *p) { return 0; } -int dp_sysfs_del_if(struct dp_port *p) { return 0; } +int dp_sysfs_add_if(struct vport *p) { return 0; } +int dp_sysfs_del_if(struct vport *p) { return 0; } #endif /* !CONFIG_SYSFS */