Re: help finding entry point of USB data in the kernel, not drivers/usb/core/devio.c?

Previous thread: [PATCH] pci-e: ignore unknown capability and continue searching by Zhang, Yanmin on Monday, September 29, 2008 - 9:29 pm. (4 messages)

Next thread: test mail - plz ignore by Madhusudhan Chikkature on Monday, September 29, 2008 - 10:20 pm. (1 message)
From: George Nychis
Date: Monday, September 29, 2008 - 10:04 pm

Hi all,

I am trying to find the entry point of USB data in the kernel.  I have a 
USB device and I would like to find the latency between the time the 
data enters the kernel, and I read it in userspace.  My first goal is to 
find where it actually enters the kernel.

The host device driver obtains a URB and reads the data from urb->buffer.

 From digging around the kernel code, I had assumed the entry point for 
all USB data was in drivers/usb/core/devio.c::usbdev_read() ... but it 
seems as though that is not the case.

Right after the device is locked in this function, I added a simple 
printk:   printk("Reading %d bytes\n", nbytes); // Line 135

Then around line 154 after it reads the usb device descriptor, I added:
     if(temp_desc.idVendor==0xfffe && temp_desc.idProduct==0x0002) {
       printk("...Data from USRP\n");
     }

That gives me an idea that the data is coming from the device I am 
looking for.

But, it seems as though this method is only related to control 
information to/from the USB device?  Whenever I start my application, I 
get about 1614 total bytes read from my first printout, and I see only 
one of my second printout messages.  Whereas, I am reading a total of 
about 8MB from the USB device over the period of time.  So I think I am 
completely missing my actual data entry point.

Additionally, lsusb generates this same exact amount 1614 total bytes of 
data... so it seems to be control related to me.

I'd greatly appreciate any guidance.

Thanks!
George
--

From: Greg KH
Date: Monday, September 29, 2008 - 10:12 pm

I suggest asking this on the linux-usb mailing list instead, it would


No, that entry point is for usbfs, not the individual drivers, and not

Are you watching all of the different USB device endpoints?

thanks,

greg k-h
--

From: George Nychis
Date: Monday, September 29, 2008 - 10:22 pm

Yes, I am not filtering really.  But if this code is for usbfs, then 
this is definitely not what I am looking for.

I think what I am looking for might be in devices.c::usb_device_read() 
... poking around there now.  It calls usb_device_dump() which takes a 
user space buffer as a parameter for which it dumps data in to.

Thanks for the response!

- George
--

Previous thread: [PATCH] pci-e: ignore unknown capability and continue searching by Zhang, Yanmin on Monday, September 29, 2008 - 9:29 pm. (4 messages)

Next thread: test mail - plz ignore by Madhusudhan Chikkature on Monday, September 29, 2008 - 10:20 pm. (1 message)