aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usbdump.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/usbdump.c b/usbdump.c
index 4f9d1bd..8e002cf 100644
--- a/usbdump.c
+++ b/usbdump.c
@@ -42,6 +42,7 @@
int opt_unique_num = 0;
int opt_data_limit = -1;
int opt_control_only = 0;
+int opt_no_control_ack = 0;
int opt_ts_diff = 0;
int64_t start_ts = 0;
@@ -96,6 +97,10 @@ void process_packet(struct usbmon_packet *hdr, char *data)
/* ack to a write packet */
return;
}
+ } else {
+ if (opt_no_control_ack && hdr->type == 'C' && hdr->len_cap == 0)
+ /* ack with no data */
+ return;
}
if (!start_ts && !start_ts_us) {
@@ -311,7 +316,7 @@ void usage(void)
{
printf("usbdump Copyright (C) 2011 Bert Vermeulen <bert@biot.com>\n");
- printf("usage: usbdump -d <vid:pid> [-u <num lines>] [-l <data limit>] [-c] [-t]\n");
+ printf("usage: usbdump -d <vid:pid> [-u <num lines>] [-l <data limit>] [-c] [-C] [-t]\n");
}
@@ -321,7 +326,7 @@ int main(int argc, char **argv)
char *device, *entry;
device = NULL;
- while ((opt = getopt(argc, argv, "d:u:l:ct")) != -1) {
+ while ((opt = getopt(argc, argv, "d:u:l:cCt")) != -1) {
switch (opt) {
case 'd':
if (strlen(optarg) != 9 || strspn(optarg, "01234567890abcdef:") != 9)
@@ -338,6 +343,9 @@ int main(int argc, char **argv)
case 'c':
opt_control_only = 1;
break;
+ case 'C':
+ opt_no_control_ack = 1;
+ break;
case 't':
opt_ts_diff = 1;
break;