[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/8] usb-ccid: Add support to dump all USB packets
From: |
Stefan Fritsch |
Subject: |
[Qemu-devel] [PATCH 1/8] usb-ccid: Add support to dump all USB packets |
Date: |
Thu, 20 Jul 2017 10:25:16 +0200 |
From: Stefan Fritsch <address@hidden>
The dump can be activated by the debug command line option for the
device like this "qemu ... -dev usb,ccid,debug=5"
While there move the short read debug message to a higher debug level.
It triggers very often and makes debug output unreadable.
Signed-off-by: Stefan Fritsch <address@hidden>
Signed-off-by: Christian Ehrhardt <address@hidden>
---
hw/usb/dev-smartcard-reader.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index bef1f03c42..624dc2c447 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -54,9 +54,25 @@ do { \
#define D_INFO 2
#define D_MORE_INFO 3
#define D_VERBOSE 4
+#define D_TRACE 5
+#define D_REMOTEIO 10
#define CCID_DEV_NAME "usb-ccid"
#define USB_CCID_DEV(obj) OBJECT_CHECK(USBCCIDState, (obj), CCID_DEV_NAME)
+
+static void usb_packet_dump(int lvl, const char *dir, uint8_t *buf, size_t len)
+{
+ int i;
+ if (lvl < D_TRACE) {
+ return;
+ }
+ printf("usb-ccid: usb packet(%s/%zd):", dir, len);
+ for (i = 0; i < len; ++i) {
+ printf(" %02x", buf[i]);
+ }
+ printf("\n");
+}
+
/*
* The two options for variable sized buffers:
* make them constant size, for large enough constant,
@@ -1007,6 +1023,8 @@ static void ccid_handle_bulk_out(USBCCIDState *s,
USBPacket *p)
goto err;
}
usb_packet_copy(p, s->bulk_out_data + s->bulk_out_pos, p->iov.size);
+ usb_packet_dump(s->debug, "out", s->bulk_out_data + s->bulk_out_pos,
+ p->iov.size);
s->bulk_out_pos += p->iov.size;
if (s->bulk_out_pos < 10) {
DPRINTF(s, 1, "%s: header incomplete\n", __func__);
@@ -1102,6 +1120,9 @@ static void ccid_bulk_in_copy_to_guest(USBCCIDState *s,
USBPacket *p)
p->iov.size);
usb_packet_copy(p, s->current_bulk_in->data +
s->current_bulk_in->pos, len);
+ usb_packet_dump(s->debug, " in",
+ s->current_bulk_in->data + s->current_bulk_in->pos,
+ len);
s->current_bulk_in->pos += len;
if (s->current_bulk_in->pos == s->current_bulk_in->len) {
ccid_bulk_in_release(s);
@@ -1116,7 +1137,7 @@ static void ccid_bulk_in_copy_to_guest(USBCCIDState *s,
USBPacket *p)
__func__, p->iov.size, len);
}
if (len < p->iov.size) {
- DPRINTF(s, 1,
+ DPRINTF(s, D_REMOTEIO,
"%s: returning short (EREMOTEIO) %d < %zd\n",
__func__, len, p->iov.size);
}
@@ -1143,6 +1164,7 @@ static void ccid_handle_data(USBDevice *dev, USBPacket *p)
buf[0] = CCID_MESSAGE_TYPE_RDR_to_PC_NotifySlotChange;
buf[1] = s->bmSlotICCState;
usb_packet_copy(p, buf, 2);
+ usb_packet_dump(s->debug, "irq", buf, 2);
s->notify_slot_change = false;
s->bmSlotICCState &= ~SLOT_0_CHANGED_MASK;
DPRINTF(s, D_INFO,
--
2.11.0
- [Qemu-devel] [PATCH 0/8] usb-ccid: Misc fixes and T=1 support, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 1/8] usb-ccid: Add support to dump all USB packets,
Stefan Fritsch <=
- [Qemu-devel] [PATCH 2/8] usb-ccid: Fix USB packet generation for 64-Bytes sized packets., Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 4/8] usb-ccid: Fix ATR parsing, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 6/8] usb-ccid: Fix chaining fields in CCID USB messages, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 5/8] usb-ccid: Fix USB descriptor, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 7/8] usb-ccid: Increase ccid max APDU size, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 3/8] usb-ccid: Set protocol parameters based on card ATR, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 8/8] usb-ccid: Reduce logging at level WARN, Stefan Fritsch, 2017/07/20
- Re: [Qemu-devel] [PATCH 0/8] usb-ccid: Misc fixes and T=1 support, no-reply, 2017/07/20