Wireshark-bugs: [Wireshark-bugs] [Bug 5370] Add support for USB isochronous
Date: Tue, 23 Nov 2010 12:44:27 -0800 (PST)
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5370 --- Comment #13 from Márton Németh <nm127@xxxxxxxxxxx> 2010-11-23 12:44:27 PST --- (In reply to comment #10) ű> pcap-common.c: > 1) Shouldn't lines 1095 and 1132 read something like the following to account > for both transfers in or out?: > > if ((phdr->transfer_type & ~URB_TRANSFER_IN) == URB_ISOCHRONOUS) { We are talking about the "xfer_type" field of the struct mon_bin_hdr of http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/usb/mon/mon_bin.c;h=c436e1e2c3b6274f0fdcdb699ec1fd10a9b2273f;hb=HEAD . This field is initialized at line 536 and line 632. Both cases this initialization looks like this: ep->xfer_type = xfer_to_pipe[usb_endpoint_type(&urb->ep->desc)]; As you can see this only contains the transfer type, but *not* the direction. This is handled wrongly in Wireshark several places. > 2) The iso_numdesc isn't really needed since phdr->s.iso.numdesc can be > directly used in the for() loop at line 1140 instead. I tried to aviod using pointer aritmetic inside the "for" loop. That's why I introduced iso_numdesc. I don't know what code the compiler would generate if the phdr->... indirection is computed for each iteration in the loop. > packet-usb.c: > 1) All multi-byte fields in the USB pseudo header have been byte-swapped, if > needed, in pcap-common.c so that the values are now in host byte order, i.e. > the host doing the dissecting. This means that none of these pseudo header > fields can be added using proto_tree_add_item(tree, hf_xyz, tvb, offset, > length, endian), since "endian" can only be ENC_BIG_ENDIAN or > ENC_LITTLE_ENDIAN. There is no ENC_HOST_ENDIAN. So ... where the ISO > hf_usb_iso_error_count and hf_usb_iso_numdesc fields are added at ~lines > 2200-2208, this has to instead mimic what dissect_linux_usb_pseudo_header() > does by doing tvb_memcpy()'s and then calling the proto_tree_add_uint(). This > applies down around ~lines 2242-2254 as well with hf_usb_iso_status, > hf_usb_iso_off, hf_usb_iso_len, and even hf_usb_iso_pad. That's right, this needs to be corrected in the patch. > 2) I'm confused with this block of code: > if (!iso_status && iso_len && data_base + iso_off + iso_len <= > tvb_length(tvb)) > proto_tree_add_item(tree, hf_usb_iso_data, tvb, data_base + > iso_off, iso_len, TRUE); > offset += 4; > > You are adding some data in between the iso_len and iso_pad? Is the iso_pad > only present if there is no data? But if that's the case, then why always add > the iso_pad? Should the data come after the iso_pad, since the mon_bin_isodesc > struct is defined as follows?: > > struct mon_bin_isodesc { > int iso_status; > unsigned int iso_off; > unsigned int iso_len; > u32 _pad; > }; The data is the byte array to where the iso_off points. The data bytes are starting at iso_off offset and has the length iso_len. The padding is a different thing here, it is coming from the struct mon_bin_isodesc. There is, however sometimes padding bytes between the data blocks also, but they are not handled by this patch. See the example capture file from comment #12. > 3) For hf_usb_iso_off and hf_usb_iso_len, I think "Offset [bytes]" and "Length > [bytes]" can just be "Offset" and "Length". If necessary (which I don't think > it is), use the blurb field for a more detailed description of the field. This is following the style of the "URB length [bytes]" and "Data length [bytes]". I think it is always a good idea to have the unit shown near to the value. Is this maybe handled differently in other parts of Wireshark? -- Configure bugmail: https://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.
- References:
- [Wireshark-bugs] [Bug 5370] New: Add support for USB isochronous
- From: bugzilla-daemon
- [Wireshark-bugs] [Bug 5370] New: Add support for USB isochronous
- Prev by Date: [Wireshark-bugs] [Bug 3961] Can't convert from .pcapng to .pcap with versions 1.2.1 and 1.3.0
- Next by Date: [Wireshark-bugs] [Bug 5370] Add support for USB isochronous
- Previous by thread: [Wireshark-bugs] [Bug 5370] Add support for USB isochronous
- Next by thread: [Wireshark-bugs] [Bug 5370] Add support for USB isochronous
- Index(es):