On Tue, Jan 7, 2020 at 6:41 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > Before the patch you sent in yesterday, usbmon reported these requests > as directed to device number 1 (which is the number assigned to root > hubs since they are the first devices registered on their USB buses), > not 0. Thank you for mentioning this. > > Would it be possible to modify the usbmon format, so the > > is_root_hub(urb->dev) flag would be somehow available to the > > user-space tools? > > How about using address 255 in the usbmon output to represent root > hubs? That wouldn't require any format change at all. Yes, that's one possibility. > By the way, there is one bad aspect to your patch. Although the device > addresses output by usbmon will now correspond exactly to the physical > addresses on the bus, they will not correspond to the device numbers > used everywhere else in the kernel. For example, someone monitoring > communcations with /dev/bus/usb/001/005 won't know what device address > to look for in the usbmon output -- it might not be 005. Initially I have modified also the drivers/usb/core/devices.c to change the format_topo to use devaddr instead of devnum. Then I realised it could cause a snowball effect and decided to limit the change to usbmon only. I think the solution to would be to extend usbmon format to include both devnum and devaddr. This unfortunately would require format change.