[PATCH v7 0/2] usbip: vhci number of ports extension

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series of patches extends number of ports limitaion in application 
(vhci) side.

Driver portion of static extension has been merged at 4.9-rc1. 1/2 
modifies userspace tools. It's effective not only for static extension 
but also for dynamic. 2/2 modifies driver for dynamic extenstion.

1. Background

Assuming a system shown below that services distributerd devices in 
home or office via USB/IP, if the devices are set at every doors and 
windows, number devices may be up to tens.

Home/SOHO/Enterprise     Intranet/Internet
 +------+   +------+         USB/IP            +---------+
+|device|--+|Linux |---------------------------|Service  |
|+------+  |+------+---------------------------|on Linux |
+------+   +------+                            +---------+
ex)
Device                                      Service
 sensors ................................... environment analysis
 cameras ................................... monitoring, recording
 ID/biometric readers ...................... authentication

If USB/IP is used for ubiqitous devices or IoT devices, many devices 
might be handled. 

2. About this patch set

In current USB/IP, available number of ports (ie. number of supported 
devices) is VHCI_NPORTS(8) in drivers/usb/usbip/vhci.h. The value of 
the macro can be altered to USB_MAXCHILDREN(31). This limit is came 
from hub status bit array. See also the comment at USB_MAXCHILDREN 
include/uapi/linux/usb/ch11.h.

There are two way to increase number of available ports. The first way 
is to put hub emulator under vhci. This can add ports up to 255 - the 
limit of USB 2.0 host controller. The second way is to add host 
controller. It's as same as machines have several host controllers: 
most desktop or note PCs have more than one host controller.

Current USB/IP supports only one controller defined as 'the_controller' 
in drivers/usb/usbip/vhci_hcd.c. This patch takes the second way 
described above and adds virtual controllers. In this patch, the number 
is specified by kernel configuration. 

3. Dynamic extension

According to kernel configuration, vhci devices (platform device) will 
be added and removed when they are not used. When the vhci driver is 
loaded, USBIP_VHCI_INIT_HCS (default is 1) drivers are registered. They 
will be further registered upto USBIP_VHCI_MAX_HCS (default is 1). They 
are unregistered when number of free devices becomes more than 
VHCI_FREE_HCS(2) except the first device.

4. Wording

Wording inconsistencies in function and variable names are corrected 
according to the rule below. They were not strict because only one host 
controller was handled.

rhport, HC_PORTS: ports within a controller (or root hub).
port, nports: ports across the controllers.

5. Dependencies

This series depends on 'usbip: exporting devices' patch set because 
this includes changes to application side daemon which introduced the 
patch set.

---
Version information

v7)
# Recreated based on linux-next 20161117.
# Removed a reference to merged path was '1/3 usbip: vhci extension: 
modifications to vhci driver' from change log of current 2/2.

v6)
# Recreated based on linux-next 20160928.
# Was '1/3 usbip: vhci extension: modifications to vhci driver' is 
excluded because it has been merged at 4.9-rc1.

v5)
# Fixed dynamically allocated sysfs attribute checking error when 
CONFIG_DEBUG_LOCK_ALLOC is set.
# Recreated based on linux-next 20160810.

v4)
# Changed the method to set number of controllers from a module 
parameter to kernel config.
# Excluded event thread patch merged to 4.7-rc1.
# Added dynamic extension.

v3)
# Fixed conflicts against linux-next 20160209.
# Changed sysfs object and attribute name for old tools compatibility.
# Changed nports status format not to include num_controllers value.
# Fixed checkpatch errors and warnings.

v2)
# Added static to some functions and variables not called from other 
files. 

*** BLURB HERE ***

Nobuo Iwata (2):
  usbip: vhci extension: modifications to userspace
  usbip: vhci extension: dynamic extension

 drivers/usb/usbip/Kconfig            |  17 +-
 drivers/usb/usbip/vhci.h             |  36 ++-
 drivers/usb/usbip/vhci_hcd.c         | 250 ++++++++++++++---
 drivers/usb/usbip/vhci_rx.c          |  10 +-
 drivers/usb/usbip/vhci_sysfs.c       |  49 ++--
 drivers/usb/usbip/vhci_tx.c          |   6 +-
 tools/usb/usbip/libsrc/vhci_driver.c | 398 +++++++++++++++------------
 tools/usb/usbip/libsrc/vhci_driver.h |  45 +--
 tools/usb/usbip/src/usbip_attach.c   |   8 +-
 tools/usb/usbip/src/usbip_port.c     |  13 +-
 tools/usb/usbip/src/usbipd_app.c     |  48 ++--
 11 files changed, 546 insertions(+), 334 deletions(-)

-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux