From nobody Tue Feb 10 14:49:37 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1500539291311517.308265207003; Thu, 20 Jul 2017 01:28:11 -0700 (PDT) Received: from localhost ([::1]:36659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dY6oa-0007Gs-G5 for importer@patchew.org; Thu, 20 Jul 2017 04:28:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dY6ml-000684-8p for qemu-devel@nongnu.org; Thu, 20 Jul 2017 04:26:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dY6mk-0004on-8Z for qemu-devel@nongnu.org; Thu, 20 Jul 2017 04:26:15 -0400 Received: from manul.sfritsch.de ([2a01:4f8:172:195f:112::2]:36919) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dY6mk-0004oj-1Y for qemu-devel@nongnu.org; Thu, 20 Jul 2017 04:26:14 -0400 From: Stefan Fritsch To: Gerd Hoffmann , qemu-devel@nongnu.org Date: Thu, 20 Jul 2017 10:25:16 +0200 Message-Id: <1500539123-23884-2-git-send-email-sf@sfritsch.de> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1500539123-23884-1-git-send-email-sf@sfritsch.de> References: <1500539123-23884-1-git-send-email-sf@sfritsch.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a01:4f8:172:195f:112::2 Subject: [Qemu-devel] [PATCH 1/8] usb-ccid: Add support to dump all USB packets X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stefan Fritsch Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Stefan Fritsch The dump can be activated by the debug command line option for the device like this "qemu ... -dev usb,ccid,debug=3D5" 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 Signed-off-by: Christian Ehrhardt --- 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 =20 #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 =3D 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, USB= Packet *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 +=3D 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 +=3D len; if (s->current_bulk_in->pos =3D=3D 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, USBPacke= t *p) buf[0] =3D CCID_MESSAGE_TYPE_RDR_to_PC_NotifySlotChange; buf[1] =3D s->bmSlotICCState; usb_packet_copy(p, buf, 2); + usb_packet_dump(s->debug, "irq", buf, 2); s->notify_slot_change =3D false; s->bmSlotICCState &=3D ~SLOT_0_CHANGED_MASK; DPRINTF(s, D_INFO, --=20 2.11.0