Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e9b8daf31b459acb440647a651b1bda3b30e6188
Commit:     e9b8daf31b459acb440647a651b1bda3b30e6188
Parent:     c2cf3f6ec58cf1d9e2a92cd74506dcf2265b31a1
Author:     Simon Arlott <[EMAIL PROTECTED]>
AuthorDate: Tue Mar 6 02:47:43 2007 -0800
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Fri Apr 27 13:28:34 2007 -0700

    usbatm: create sysfs link "device" from atm class device to usb interface
    
    There is currently no path from the ATM device in /sys to the USB device's
    interface that the driver is using; this patch creates a "device" symlink.  
It
    is then possible to get to the cxacru ADSL statistics
    (http://lkml.org/lkml/2007/2/23/328):
    
    /sys/class/atm/cxacru0/device $ ls *_rate *_margin *_attenuation
    downstream_attenuation  downstream_snr_margin  upstream_rate
    downstream_rate         upstream_attenuation   upstream_snr_margin
    
    If this link is not appropriate I'd have to create device files in
    /sys/class/atm/cxacru0 instead - which seems less appropriate since the ADSL
    statistics are for the USB device not ATM (which is running over the ADSL).
    
    [EMAIL PROTECTED]: cleanups]
    Signed-off-by: Simon Arlott <[EMAIL PROTECTED]>
    Cc: Duncan Sands <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 drivers/usb/atm/usbatm.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index d3e2c5f..746d30f 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -968,6 +968,14 @@ static int usbatm_atm_init(struct usbatm_data *instance)
        /* temp init ATM device, set to 128kbit */
        atm_dev->link_rate = 128 * 1000 / 424;
 
+       ret = sysfs_create_link(&atm_dev->class_dev.kobj,
+                               &instance->usb_intf->dev.kobj, "device");
+       if (ret) {
+               atm_err(instance, "%s: sysfs_create_link failed: %d\n",
+                                       __func__, ret);
+               goto fail_sysfs;
+       }
+
        if (instance->driver->atm_start && ((ret = 
instance->driver->atm_start(instance, atm_dev)) < 0)) {
                atm_err(instance, "%s: atm_start failed: %d!\n", __func__, ret);
                goto fail;
@@ -986,6 +994,8 @@ static int usbatm_atm_init(struct usbatm_data *instance)
        return 0;
 
  fail:
+       sysfs_remove_link(&atm_dev->class_dev.kobj, "device");
+ fail_sysfs:
        instance->atm_dev = NULL;
        atm_dev_deregister(atm_dev); /* usbatm_atm_dev_close will eventually be 
called */
        return ret;
@@ -1318,8 +1328,10 @@ void usbatm_usb_disconnect(struct usb_interface *intf)
        kfree(instance->cell_buf);
 
        /* ATM finalize */
-       if (instance->atm_dev)
+       if (instance->atm_dev) {
+               sysfs_remove_link(&instance->atm_dev->class_dev.kobj, "device");
                atm_dev_deregister(instance->atm_dev);
+       }
 
        usbatm_put_instance(instance);  /* taken in usbatm_usb_probe */
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to