diff options
Diffstat (limited to 'tools/usb/usbip/libsrc')
| -rw-r--r-- | tools/usb/usbip/libsrc/vhci_driver.c | 24 | 
1 files changed, 16 insertions, 8 deletions
diff --git a/tools/usb/usbip/libsrc/vhci_driver.c b/tools/usb/usbip/libsrc/vhci_driver.c index 5727dfb15a83..c9c81614a66a 100644 --- a/tools/usb/usbip/libsrc/vhci_driver.c +++ b/tools/usb/usbip/libsrc/vhci_driver.c @@ -50,14 +50,14 @@ static int parse_status(const char *value)  	while (*c != '\0') {  		int port, status, speed, devid; -		unsigned long socket; +		int sockfd;  		char lbusid[SYSFS_BUS_ID_SIZE];  		struct usbip_imported_device *idev;  		char hub[3]; -		ret = sscanf(c, "%2s  %d %d %d %x %lx %31s\n", +		ret = sscanf(c, "%2s  %d %d %d %x %u %31s\n",  				hub, &port, &status, &speed, -				&devid, &socket, lbusid); +				&devid, &sockfd, lbusid);  		if (ret < 5) {  			dbg("sscanf failed: %d", ret); @@ -66,7 +66,7 @@ static int parse_status(const char *value)  		dbg("hub %s port %d status %d speed %d devid %x",  				hub, port, status, speed, devid); -		dbg("socket %lx lbusid %s", socket, lbusid); +		dbg("sockfd %u lbusid %s", sockfd, lbusid);  		/* if a device is connected, look at it */  		idev = &vhci_driver->idev[port]; @@ -106,7 +106,7 @@ static int parse_status(const char *value)  	return 0;  } -#define MAX_STATUS_NAME 16 +#define MAX_STATUS_NAME 18  static int refresh_imported_device_list(void)  { @@ -329,9 +329,17 @@ err:  int usbip_vhci_get_free_port(uint32_t speed)  {  	for (int i = 0; i < vhci_driver->nports; i++) { -		if (speed == USB_SPEED_SUPER && -		    vhci_driver->idev[i].hub != HUB_SPEED_SUPER) -			continue; + +		switch (speed) { +		case	USB_SPEED_SUPER: +			if (vhci_driver->idev[i].hub != HUB_SPEED_SUPER) +				continue; +		break; +		default: +			if (vhci_driver->idev[i].hub != HUB_SPEED_HIGH) +				continue; +		break; +		}  		if (vhci_driver->idev[i].status == VDEV_ST_NULL)  			return vhci_driver->idev[i].port;  |