From: "Németh Márton" <nm127@freemail.hu>
To: Greg KH <greg@kroah.com>, Matthew Wilcox <matthew@wil.cx>,
linux-usb@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
usbip-devel@lists.sourceforge.net
Subject: Re: USBIP protocol documentation?
Date: Wed, 25 May 2011 07:29:57 +0200 [thread overview]
Message-ID: <4DDC93D5.9070607@freemail.hu> (raw)
In-Reply-To: <20110525031222.GB14290@haskell.muteddisk.com>
matt mooney wrote:
> On 22:25 Tue 24 May , Németh Márton wrote:
>> Greg KH wrote:
>>> I think the code is the "real" documentation.
>
> I concur!
>
>> If it is, then I need to read it in the right way, through it is not an easy task.
>> I tried to find the points in the USBIP kernel code where opening, sending,
>> receiving and closing of the TCP connection takes place. I took all function names
>> from linux/net.h and I found the following places so far:
>>
>> $ grep -n -E
>>
'sock_wake_async|sock_register|sock_unregister|sock_create|sock_create_kern|sock_create_lite|sock_release|sock_sendmsg|sock_recvmsg|sock_map_fd|sockfd_lookup|sockfd_put|net_ratelimit|kernel_sendmsg|kernel_recvmsg|kernel_bind|kernel_listen|kernel_accept|kernel_connect|kernel_getsockname|kernel_getpeername|kernel_getsockopt|kernel_setsockopt|kernel_sendpage|kernel_sock_ioctl|kernel_sock_shutdown|SHUT_'
>> linux-2.6/drivers/staging/usbip/*
>>
>> linux-2.6/drivers/staging/usbip/stub_dev.c:201: kernel_sock_shutdown(ud->tcp_socket, SHUT_RDWR);
>> linux-2.6/drivers/staging/usbip/stub_dev.c:216: sock_release(ud->tcp_socket);
>> linux-2.6/drivers/staging/usbip/stub_tx.c:263: ret = kernel_sendmsg(sdev->ud.tcp_socket, &msg,
>> linux-2.6/drivers/staging/usbip/stub_tx.c:338: ret = kernel_sendmsg(sdev->ud.tcp_socket, &msg, iov,
>> linux-2.6/drivers/staging/usbip/usbip_common.c:382: result = kernel_sendmsg(sock, &msg, &iov, 1, size);
>> linux-2.6/drivers/staging/usbip/usbip_common.c:384: result = kernel_recvmsg(sock, &msg, &iov, 1, size,
>> linux-2.6/drivers/staging/usbip/vhci_hcd.c:845: kernel_sock_shutdown(ud->tcp_socket, SHUT_RDWR);
>> linux-2.6/drivers/staging/usbip/vhci_hcd.c:858: sock_release(vdev->ud.tcp_socket);
>> linux-2.6/drivers/staging/usbip/vhci_tx.c:119: ret = kernel_sendmsg(vdev->ud.tcp_socket, &msg, iov, 3, txsize);
>> linux-2.6/drivers/staging/usbip/vhci_tx.c:189: ret = kernel_sendmsg(vdev->ud.tcp_socket, &msg, iov, 1, txsize);
>>
>> I guess this is not all, there is also a protocol defined to the user-space world.
>
> Very true, and part of what is taking place is a unification of the userspace
> and kernel protocols. Then there will be some degree of documentation. Mainly in
> the form of packet diagrams to show on-wire communication.
Could you please give some hints witch function names to look for and
where to start "reading" the source code to see how the userspace protocol
looks like?
> On Tue, May 24, 2011 at 10:25:18PM +0200, Németh Márton wrote:
>> The current protocol implementation is based on top of TCP. In the message
>> at http://marc.info/?l=linux-kernel&m=122001883519653&w=2 the SCTP is mentioned.
>> Have anybody worked on finding out what benefits the SCTP could give to USBIP
>> and what would be the drawbacks?
Greg KH wrote:
> It might not work well on Windows, which the current code does today.
>
> I think that the TCP vs. SCTP is the least of the protocol issues at the
> moment, there are lots of other things to work on :)
matt mooney wrote:
> I think sctp would be interesting, but as greg said, and I tend to agree, this
> is the least of usbip's problems.
>
> (Maybe eliminating the need to interact w/ windows would be a good project ;)
> jk!
OK, I see your point. I tried to check the "source code" for a TODO list,
but I think I failed at that point because I just found:
| $ cat linux-2.6/drivers/staging/usbip/README
| TODO:
| - more discussion about the protocol
| - testing
| - review of the userspace interface
|
| Please send patches for this code to Greg Kroah-Hartman <greg@kroah.com>
These are quite hard tasks to solve. More discussion about the protocol? I
think the first problem is that it is difficult (at least for me) to see clearly
the protocol because of lack of documentation.
Testing: when you test something you compare the running code against something.
If you compare the running code against the source code then you will not test
the USBIP implementation/protocol, but the compiler itself, whether the compiler
generated the same code which is available in source format.
Review of the userspace interface: first I will need to understand how it looks
like befor I can do anything on this point.
Do you have a bit detailed TODO list somewhere written down or in your heads
so beginners can also help? E.g. running "scripts/checkpatch.pl -f" and
solving the errors/warnings helps at this point? Or compiling with "make W=1 C=1 ..."
and solving those warnings helps?
Regards,
Márton Németh
next prev parent reply other threads:[~2011-05-25 5:30 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-24 18:28 USBIP protocol documentation? Németh Márton
2011-05-24 18:34 ` Greg KH
2011-05-24 20:25 ` Németh Márton
2011-05-24 21:25 ` Greg KH
2011-05-25 3:12 ` matt mooney
2011-05-25 5:29 ` Németh Márton [this message]
2011-05-26 7:13 ` Németh Márton
2011-06-28 6:52 ` [PATCH, RFC] USBIP protocol documentation Németh Márton
2011-06-29 8:04 ` David Chang
2011-07-04 3:11 ` David Chang
2011-07-04 5:38 ` Németh Márton
2011-07-04 8:24 ` Matt Chen
2011-07-07 4:14 ` matt mooney
2011-07-07 6:20 ` Matt Chen
2011-07-25 4:30 ` Matt Chen
2011-06-29 23:34 ` matt mooney
[not found] ` <BANLkTi=qXgnapyrsSANJ0XZuE=kz7QgsvA@mail.gmail.com>
2011-06-30 5:56 ` Németh Márton
2011-06-30 6:54 ` Matt Chen
2011-06-30 19:38 ` Németh Márton
2011-08-09 9:23 ` David Chang
2011-08-09 14:22 ` Greg KH
2011-08-10 6:41 ` David Chang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4DDC93D5.9070607@freemail.hu \
--to=nm127@freemail.hu \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=usbip-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.