• Nobuo Iwata's avatar
    usbip: vhci extension: modifications to vhci driver · 0775a9cb
    Nobuo Iwata authored
    Modification to Kconfig, vhci_hc.c, vhci.h and vhci_sysfs.c.
    
    1. kernel config
    
    Followings are added.
    
    USBIP_VHCI_HC_PORTS: Number of ports per USB/IP virtual host
    controller. The default is 8 - same as current VHCI_NPORTS.
    USBIP_VHCI_NR_HCS: Number of USB/IP virtual host controllers. The
    default is 1. This paratmeter is replaced with USBIP_VHCI_INIT_HCS and
    USBIP_VHCI_MAX_HCS included in succeeding dynamic extension patch.
    
    2. the_controller to controllers
    
    the_controller is changed to vhci_pdevs: array of struct
    platform_device.
    
    3. vhci_sysfs.c
    
    Sysfs structure is changed as following.
    
    BEFORE:
        /sys/devices/platform
            +-- vhci
                +-- status
                +-- attach
                +-- detach
                +-- usbip_debug
    
    AFTER: example for CONFIG_USBIP_NR_HCS=4
        /sys/devices/platform
            +-- vhci
            |   +-- nports
            |   +-- status
            |   +-- status.1
            |   +-- status.2
            |   +-- status.3
            |   +-- attach
            |   +-- detach
            |   +-- usbip_debug
            +-- vhci.1
            +-- vhci.2
            +-- vhci.3
    
    vhci[.N] is shown for each host controller kobj. vhch.1, vhci.2, ...
    are shown only when CONFIG_USBIP_NR_HCS is more than 1. Only 'vhci'
    (without number) has user space interfaces. 'nports' is newly added to
    give ports-per-controller and number of controlles. Before that, number
    of ports is acquired by reading status lines. Status is divided for
    each controller to avoid page size (4KB) limitation.
    
    Old userspace tool binaries work with the first status within the first
    controller.
    
    Inconsistency between status header and content is fixed.
    4th and 5th column are
    header:          "dev bus"
    content(unused): "000 000"
    content(used):   "%08x", devid
    Only 1st and 2nd column are used by program. In old version, sscanf()
    in parse_status expect no bus column. And bus_id string is shown in the
    last column. Then bus in the header is removed and unused content is
    replaced with 8 zeros. The sscanf() expects more than 5 columns and new
    has 6 columns so there's no compatibility issue in this change.
    Signed-off-by: default avatarNobuo Iwata <nobuo.iwata@fujixerox.co.jp>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    0775a9cb
vhci_sysfs.c 9.74 KB