X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fbase%2Ftransport_class.c;h=6c2b447a333657133336187b0a7c77e14377d920;hb=f7f1b0f1e2fbadeab12d24236000e778aa9b1ead;hp=3bae11c64a8559ec77f562bcd0caadde21ad7632;hpb=e3f6fb6212a7102bdb56ba38fa1e98fe72950475;p=linux-2.6.git diff --git a/drivers/base/transport_class.c b/drivers/base/transport_class.c index 3bae11c64..6c2b447a3 100644 --- a/drivers/base/transport_class.c +++ b/drivers/base/transport_class.c @@ -145,6 +145,20 @@ void transport_setup_device(struct device *dev) } EXPORT_SYMBOL_GPL(transport_setup_device); +static int transport_add_class_device(struct attribute_container *cont, + struct device *dev, + struct class_device *classdev) +{ + int error = attribute_container_add_class_device(classdev); + struct transport_container *tcont = + attribute_container_to_transport_container(cont); + + if (!error && tcont->statistics) + error = sysfs_create_group(&classdev->kobj, tcont->statistics); + + return error; +} + /** * transport_add_device - declare a new dev for transport class association @@ -159,8 +173,7 @@ EXPORT_SYMBOL_GPL(transport_setup_device); void transport_add_device(struct device *dev) { - attribute_container_device_trigger(dev, - attribute_container_add_class_device_adapter); + attribute_container_device_trigger(dev, transport_add_class_device); } EXPORT_SYMBOL_GPL(transport_add_device); @@ -197,13 +210,18 @@ static int transport_remove_classdev(struct attribute_container *cont, struct device *dev, struct class_device *classdev) { + struct transport_container *tcont = + attribute_container_to_transport_container(cont); struct transport_class *tclass = class_to_transport_class(cont->class); if (tclass->remove) tclass->remove(dev); - if (tclass->remove != anon_transport_dummy_function) + if (tclass->remove != anon_transport_dummy_function) { + if (tcont->statistics) + sysfs_remove_group(&classdev->kobj, tcont->statistics); attribute_container_class_device_del(classdev); + } return 0; }