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=9f0c0adb1e376c61ee495f0c35179e8e4c705544;hpb=d295e8e97acae13552a5b220d3fbcff8201064a2;p=openvswitch diff --git a/datapath/dp_sysfs_dp.c b/datapath/dp_sysfs_dp.c index 9f0c0adb..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. @@ -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 */