aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/hcd.c
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@intel.com>2007-10-03 17:56:03 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-10-12 17:55:30 -0400
commit4d59d8a11383ebf0e0260ee481a4e766959fd7d9 (patch)
tree240cf81cc56896a69c1467b7c8bc4f3f4022c3fd /drivers/usb/core/hcd.c
parent437f375f262417b484f28007c3e8d21bd01d0e01 (diff)
USB: Export URB statistics for powertop
powertop currently tracks interrupts generated by uhci, ehci, and ohci, but it has no way of telling which USB device to blame USB bus activity on. This patch exports the number of URBs that are submitted for a given device. Cat the file 'urbnum' in /sys/bus/usb/devices/.../ Signed-off-by: Sarah Sharp <sarah.a.sharp@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/hcd.c')
-rw-r--r--drivers/usb/core/hcd.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 2c79aa6ca2b..3dd997df850 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1176,6 +1176,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
1176 */ 1176 */
1177 usb_get_urb(urb); 1177 usb_get_urb(urb);
1178 atomic_inc(&urb->use_count); 1178 atomic_inc(&urb->use_count);
1179 atomic_inc(&urb->dev->urbnum);
1179 usbmon_urb_submit(&hcd->self, urb); 1180 usbmon_urb_submit(&hcd->self, urb);
1180 1181
1181 /* NOTE requirements on root-hub callers (usbfs and the hub 1182 /* NOTE requirements on root-hub callers (usbfs and the hub
@@ -1197,6 +1198,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
1197 urb->hcpriv = NULL; 1198 urb->hcpriv = NULL;
1198 INIT_LIST_HEAD(&urb->urb_list); 1199 INIT_LIST_HEAD(&urb->urb_list);
1199 atomic_dec(&urb->use_count); 1200 atomic_dec(&urb->use_count);
1201 atomic_dec(&urb->dev->urbnum);
1200 if (urb->reject) 1202 if (urb->reject)
1201 wake_up(&usb_kill_urb_queue); 1203 wake_up(&usb_kill_urb_queue);
1202 usb_put_urb(urb); 1204 usb_put_urb(urb);