usbmon: add bus number to text API
authorPete Zaitcev <zaitcev@redhat.com>
Tue, 5 Jan 2010 18:50:07 +0000 (11:50 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:53:30 +0000 (14:53 -0800)
Due to a simple oversight when bus zero was added, the text API fails to
deliver the bus number in 'E' messages (which are equivalent of 'C'
messages, only for error case). This makes it harder, for instance,
use a search-and-highlight in a text editor. So fix it.

Also, Alan Stern requested adding timestamps to 'E' messages. This is
purely cosmetic, but makes it easier to read the trace. This is done
for both text and binary APIs.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/mon/mon_bin.c
drivers/usb/mon/mon_text.c

index 385ec052016705386e4f10fa8bffc51a44dec9e9..6dd44bc1f5ff4cb98791691a077d344960894690 100644 (file)
@@ -460,8 +460,8 @@ static void mon_bin_event(struct mon_reader_bin *rp, struct urb *urb,
     char ev_type, int status)
 {
        const struct usb_endpoint_descriptor *epd = &urb->ep->desc;
-       unsigned long flags;
        struct timeval ts;
+       unsigned long flags;
        unsigned int urb_length;
        unsigned int offset;
        unsigned int length;
@@ -600,10 +600,13 @@ static void mon_bin_complete(void *data, struct urb *urb, int status)
 static void mon_bin_error(void *data, struct urb *urb, int error)
 {
        struct mon_reader_bin *rp = data;
+       struct timeval ts;
        unsigned long flags;
        unsigned int offset;
        struct mon_bin_hdr *ep;
 
+       do_gettimeofday(&ts);
+
        spin_lock_irqsave(&rp->b_lock, flags);
 
        offset = mon_buff_area_alloc(rp, PKT_SIZE);
@@ -623,6 +626,8 @@ static void mon_bin_error(void *data, struct urb *urb, int error)
        ep->devnum = urb->dev->devnum;
        ep->busnum = urb->dev->bus->busnum;
        ep->id = (unsigned long) urb;
+       ep->ts_sec = ts.tv_sec;
+       ep->ts_usec = ts.tv_usec;
        ep->status = error;
 
        ep->flag_setup = '-';
index 047568ff223db60743435effeaaf522b995d3e20..16bfb61d24f9bd5f1a5bd61baa966ce24bbb6570 100644 (file)
@@ -273,12 +273,12 @@ static void mon_text_error(void *data, struct urb *urb, int error)
 
        ep->type = 'E';
        ep->id = (unsigned long) urb;
-       ep->busnum = 0;
+       ep->busnum = urb->dev->bus->busnum;
        ep->devnum = urb->dev->devnum;
        ep->epnum = usb_endpoint_num(&urb->ep->desc);
        ep->xfertype = usb_endpoint_type(&urb->ep->desc);
        ep->is_in = usb_urb_dir_in(urb);
-       ep->tstamp = 0;
+       ep->tstamp = mon_get_timestamp();
        ep->length = 0;
        ep->status = error;