* [Qemu-devel] [PATCH 1/2] usb-host: update tracing
@ 2012-11-15 15:19 Gerd Hoffmann
2012-11-15 15:19 ` [Qemu-devel] [PATCH 2/2] usb-host: fix splitted transfers Gerd Hoffmann
2012-11-15 15:23 ` [Qemu-devel] [PATCH 1/2] usb-host: update tracing Hans de Goede
0 siblings, 2 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2012-11-15 15:19 UTC (permalink / raw)
To: qemu-devel; +Cc: hdegoede, Gerd Hoffmann
Now that we have separate status and length fields in USBPacket
update the completion tracepoint to log both.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/host-linux.c | 20 ++++++++++++--------
trace-events | 2 +-
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/hw/usb/host-linux.c b/hw/usb/host-linux.c
index b17e1dc..e3d394f 100644
--- a/hw/usb/host-linux.c
+++ b/hw/usb/host-linux.c
@@ -385,10 +385,12 @@ static void async_complete(void *opaque)
}
if (aurb->urb.type == USBDEVFS_URB_TYPE_CONTROL) {
- trace_usb_host_req_complete(s->bus_num, s->addr, p, p->status);
+ trace_usb_host_req_complete(s->bus_num, s->addr, p,
+ p->status, aurb->urb.actual_length);
usb_generic_async_ctrl_complete(&s->dev, p);
} else if (!aurb->more) {
- trace_usb_host_req_complete(s->bus_num, s->addr, p, p->status);
+ trace_usb_host_req_complete(s->bus_num, s->addr, p,
+ p->status, aurb->urb.actual_length);
usb_packet_complete(&s->dev, p);
}
}
@@ -863,8 +865,9 @@ static void usb_host_handle_data(USBDevice *dev, USBPacket *p)
p->ep->nr, p->iov.size);
if (!is_valid(s, p->pid, p->ep->nr)) {
- trace_usb_host_req_complete(s->bus_num, s->addr, p, USB_RET_NAK);
p->status = USB_RET_NAK;
+ trace_usb_host_req_complete(s->bus_num, s->addr, p,
+ p->status, p->actual_length);
return;
}
@@ -879,8 +882,9 @@ static void usb_host_handle_data(USBDevice *dev, USBPacket *p)
ret = ioctl(s->fd, USBDEVFS_CLEAR_HALT, &arg);
if (ret < 0) {
perror("USBDEVFS_CLEAR_HALT");
- trace_usb_host_req_complete(s->bus_num, s->addr, p, USB_RET_NAK);
p->status = USB_RET_NAK;
+ trace_usb_host_req_complete(s->bus_num, s->addr, p,
+ p->status, p->actual_length);
return;
}
clear_halt(s, p->pid, p->ep->nr);
@@ -936,15 +940,15 @@ static void usb_host_handle_data(USBDevice *dev, USBPacket *p)
switch(errno) {
case ETIMEDOUT:
- trace_usb_host_req_complete(s->bus_num, s->addr, p,
- USB_RET_NAK);
p->status = USB_RET_NAK;
+ trace_usb_host_req_complete(s->bus_num, s->addr, p,
+ p->status, p->actual_length);
break;
case EPIPE:
default:
- trace_usb_host_req_complete(s->bus_num, s->addr, p,
- USB_RET_STALL);
p->status = USB_RET_STALL;
+ trace_usb_host_req_complete(s->bus_num, s->addr, p,
+ p->status, p->actual_length);
}
return;
}
diff --git a/trace-events b/trace-events
index 913e00b..02cdabc 100644
--- a/trace-events
+++ b/trace-events
@@ -431,7 +431,7 @@ usb_host_claim_interfaces(int bus, int addr, int config, int nif) "dev %d:%d, co
usb_host_release_interfaces(int bus, int addr) "dev %d:%d"
usb_host_req_control(int bus, int addr, void *p, int req, int value, int index) "dev %d:%d, packet %p, req 0x%x, value %d, index %d"
usb_host_req_data(int bus, int addr, void *p, int in, int ep, int size) "dev %d:%d, packet %p, in %d, ep %d, size %d"
-usb_host_req_complete(int bus, int addr, void *p, int status) "dev %d:%d, packet %p, status %d"
+usb_host_req_complete(int bus, int addr, void *p, int status, int length) "dev %d:%d, packet %p, status %d, length %d"
usb_host_req_emulated(int bus, int addr, void *p, int status) "dev %d:%d, packet %p, status %d"
usb_host_req_canceled(int bus, int addr, void *p) "dev %d:%d, packet %p"
usb_host_urb_submit(int bus, int addr, void *aurb, int length, int more) "dev %d:%d, aurb %p, length %d, more %d"
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* [Qemu-devel] [PATCH 2/2] usb-host: fix splitted transfers
2012-11-15 15:19 [Qemu-devel] [PATCH 1/2] usb-host: update tracing Gerd Hoffmann
@ 2012-11-15 15:19 ` Gerd Hoffmann
2012-11-15 15:23 ` [Qemu-devel] [PATCH 1/2] usb-host: update tracing Hans de Goede
1 sibling, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2012-11-15 15:19 UTC (permalink / raw)
To: qemu-devel; +Cc: hdegoede, Gerd Hoffmann
USBPacket->actual_length wasn't updated correctly for USBPackets
splitted into multiple urbs. Fix it.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/host-linux.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/hw/usb/host-linux.c b/hw/usb/host-linux.c
index e3d394f..aa77b77 100644
--- a/hw/usb/host-linux.c
+++ b/hw/usb/host-linux.c
@@ -366,8 +366,11 @@ static void async_complete(void *opaque)
if (p) {
switch (aurb->urb.status) {
case 0:
- p->actual_length = aurb->urb.actual_length;
- p->status = USB_RET_SUCCESS; /* Clear previous ASYNC status */
+ p->actual_length += aurb->urb.actual_length;
+ if (!aurb->more) {
+ /* Clear previous ASYNC status */
+ p->status = USB_RET_SUCCESS;
+ }
break;
case -EPIPE:
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [Qemu-devel] [PATCH 1/2] usb-host: update tracing
2012-11-15 15:19 [Qemu-devel] [PATCH 1/2] usb-host: update tracing Gerd Hoffmann
2012-11-15 15:19 ` [Qemu-devel] [PATCH 2/2] usb-host: fix splitted transfers Gerd Hoffmann
@ 2012-11-15 15:23 ` Hans de Goede
1 sibling, 0 replies; 3+ messages in thread
From: Hans de Goede @ 2012-11-15 15:23 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel
ACK series.
Regards,
Hans
On 11/15/2012 04:19 PM, Gerd Hoffmann wrote:
> Now that we have separate status and length fields in USBPacket
> update the completion tracepoint to log both.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> hw/usb/host-linux.c | 20 ++++++++++++--------
> trace-events | 2 +-
> 2 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/hw/usb/host-linux.c b/hw/usb/host-linux.c
> index b17e1dc..e3d394f 100644
> --- a/hw/usb/host-linux.c
> +++ b/hw/usb/host-linux.c
> @@ -385,10 +385,12 @@ static void async_complete(void *opaque)
> }
>
> if (aurb->urb.type == USBDEVFS_URB_TYPE_CONTROL) {
> - trace_usb_host_req_complete(s->bus_num, s->addr, p, p->status);
> + trace_usb_host_req_complete(s->bus_num, s->addr, p,
> + p->status, aurb->urb.actual_length);
> usb_generic_async_ctrl_complete(&s->dev, p);
> } else if (!aurb->more) {
> - trace_usb_host_req_complete(s->bus_num, s->addr, p, p->status);
> + trace_usb_host_req_complete(s->bus_num, s->addr, p,
> + p->status, aurb->urb.actual_length);
> usb_packet_complete(&s->dev, p);
> }
> }
> @@ -863,8 +865,9 @@ static void usb_host_handle_data(USBDevice *dev, USBPacket *p)
> p->ep->nr, p->iov.size);
>
> if (!is_valid(s, p->pid, p->ep->nr)) {
> - trace_usb_host_req_complete(s->bus_num, s->addr, p, USB_RET_NAK);
> p->status = USB_RET_NAK;
> + trace_usb_host_req_complete(s->bus_num, s->addr, p,
> + p->status, p->actual_length);
> return;
> }
>
> @@ -879,8 +882,9 @@ static void usb_host_handle_data(USBDevice *dev, USBPacket *p)
> ret = ioctl(s->fd, USBDEVFS_CLEAR_HALT, &arg);
> if (ret < 0) {
> perror("USBDEVFS_CLEAR_HALT");
> - trace_usb_host_req_complete(s->bus_num, s->addr, p, USB_RET_NAK);
> p->status = USB_RET_NAK;
> + trace_usb_host_req_complete(s->bus_num, s->addr, p,
> + p->status, p->actual_length);
> return;
> }
> clear_halt(s, p->pid, p->ep->nr);
> @@ -936,15 +940,15 @@ static void usb_host_handle_data(USBDevice *dev, USBPacket *p)
>
> switch(errno) {
> case ETIMEDOUT:
> - trace_usb_host_req_complete(s->bus_num, s->addr, p,
> - USB_RET_NAK);
> p->status = USB_RET_NAK;
> + trace_usb_host_req_complete(s->bus_num, s->addr, p,
> + p->status, p->actual_length);
> break;
> case EPIPE:
> default:
> - trace_usb_host_req_complete(s->bus_num, s->addr, p,
> - USB_RET_STALL);
> p->status = USB_RET_STALL;
> + trace_usb_host_req_complete(s->bus_num, s->addr, p,
> + p->status, p->actual_length);
> }
> return;
> }
> diff --git a/trace-events b/trace-events
> index 913e00b..02cdabc 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -431,7 +431,7 @@ usb_host_claim_interfaces(int bus, int addr, int config, int nif) "dev %d:%d, co
> usb_host_release_interfaces(int bus, int addr) "dev %d:%d"
> usb_host_req_control(int bus, int addr, void *p, int req, int value, int index) "dev %d:%d, packet %p, req 0x%x, value %d, index %d"
> usb_host_req_data(int bus, int addr, void *p, int in, int ep, int size) "dev %d:%d, packet %p, in %d, ep %d, size %d"
> -usb_host_req_complete(int bus, int addr, void *p, int status) "dev %d:%d, packet %p, status %d"
> +usb_host_req_complete(int bus, int addr, void *p, int status, int length) "dev %d:%d, packet %p, status %d, length %d"
> usb_host_req_emulated(int bus, int addr, void *p, int status) "dev %d:%d, packet %p, status %d"
> usb_host_req_canceled(int bus, int addr, void *p) "dev %d:%d, packet %p"
> usb_host_urb_submit(int bus, int addr, void *aurb, int length, int more) "dev %d:%d, aurb %p, length %d, more %d"
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-11-15 15:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-15 15:19 [Qemu-devel] [PATCH 1/2] usb-host: update tracing Gerd Hoffmann
2012-11-15 15:19 ` [Qemu-devel] [PATCH 2/2] usb-host: fix splitted transfers Gerd Hoffmann
2012-11-15 15:23 ` [Qemu-devel] [PATCH 1/2] usb-host: update tracing Hans de Goede
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.