Hello,
> I see your point and what you have done in patches.
> I'm only showing you that you may achieve almost the same effect
> without any changes in kernel.
I tested wstunnel.
The performance comparison in my environment is as following.
Round trip time of keyboard key down and up URBs at host.
wstunnel: 4.4msec
usbws(my patch): 2.7msec
wstunnel passes TCP/IP stack twice so it's slower.
I'd like to keep the usbws implementation because it's worth for
performance.
memory usage (VSZ/RSS)
wstunnel usbws
Server wstunnel 734K/20K
usbipa 25K/2K
usbwsa 25K/2K
Client wstunnel 75K/17K
usbipa 113K/3K
Memo about wstunnel
1) Implementation
node.js application
2) installation
# yum install npm
# npm install -g wstunnel
3) Usage for USB/IP
app# insmod usbip-core.ko
app# isnmod vhci-hcd.ko
app# usbipa -t 3240
app$ wstunnel -s 8080 -t localhost:3240
dev# insmod usbip-core.ko
dev# isnmod usbip-host.ko
dev$ wstunnel -t 3240 ws://<app-side-addr>:8080
dev# usbip -t 3240 connect -r localhost -b <bus-id>
usbip -<loop-back>- wstunnel ---<net>--- wstunnel -<loopback>- usbipa
3240 8080 3240
Some issues are found in interoperability (to use usbws with wstunnel).
a) wstunnel needs Sec-WebSocket-Protocol header with value
'tunnel-protocol'.
It means that the other end must be wstunnel too.
b) wstunnel sends multiple packets into one frame.
usbws must implement buffering.
c) wstunnel sends WebSocket with FIN bit=1.
Poco library translates it to OP_CLOSE and succeeding readFrame()
doesn't work.
I may fix later regarding b) if it's needed by other implementations.
Sorry for my late response.
I concentrated to other project.
Thank you for your help,
n.iwata
//