RE: [PATCH v13 02/10] usbip: exporting devices: modifications to host side libraries

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

 



Hello,

> This doesn't look like a simple change to rename and reuse an unused
> function. This patch does lot more and is changing the user interface.
> Looks like instead of taking an integer value for device lookup, you
> are changing it to char *.
> 
> Any reason why you have to change the user interface to go to char
> *busid?
> 
> I would like to see a good explanation why this user interface change
> is necessary.

I can't figure out why the second argument was int because it was
unused.

usbip_get_device() is a stub-side (usb-host) function.
As you know, only port number in vhci-side can be int.
Others are bus-id.
Furthermore, the unused code searches list node position. It doesn't
make sense.

Here, this patch set needs to find bound device with bus-id in
stub-side.

I may add explanation above to change log.
Or I can change new function name like usbip_find_device() and leave the
unused function once.

Please, let me know how should I do.

Best Regards,

nobuo.iwata
//
> -----Original Message-----
> From: Shuah Khan [mailto:shuah.kh@xxxxxxxxxxx]
> Sent: Thursday, November 24, 2016 6:02 AM
> To: fx IWATA NOBUO; valentina.manea.m@xxxxxxxxx;
> gregkh@xxxxxxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx
> Cc: fx MICHIMURA TADAO; Shuah Khan
> Subject: Re: [PATCH v13 02/10] usbip: exporting devices: modifications to
> host side libraries
> 
> On 11/21/2016 11:48 PM, Nobuo Iwata wrote:
> > usbip_get_device() method in usbip_host_driver_ops was not used. It is
> > modified as a function to find an exported device for new operations
> > 'connect' and 'disconnect'.
> >
> > bind and unbind function are exported to reuse by new connect and
> > disconnect operation.
> 
> This doesn't look like a simple change to rename and reuse an unused function.
> This patch does lot more and is changing the user interface.
> Looks like instead of taking an integer value for device lookup, you are
> changing it to char *.
> 
> Any reason why you have to change the user interface to go to char *busid?
> 
> I would like to see a good explanation why this user interface change is
> necessary.
> 
> thanks,
> -- Shuah
> 
> >
> > Here, connect and disconnect is NEW-3 and NEW-4 respactively in
> > diagram below.
> >
> > EXISTING) - invites devices from application(vhci)-side
> >          +------+
> +------------------+
> >  device--+ STUB |                                 | application/VHCI |
> >          +------+
> +------------------+
> >  1) usbipd ... start daemon
> >  = = =
> >  2) usbip list --local
> >  3) usbip bind
> >                     <--- list bound devices ---   4) usbip list --remote
> >                     <--- import a device ------   5) usbip attach
> >  = = =
> >                        X disconnected             6) usbip detach
> >  7) usbip unbind
> >
> > NEW) - dedicates devices from device(stb)-side
> >          +------+
> +------------------+
> >  device--+ STUB |                                 | application/VHCI |
> >          +------+
> +------------------+
> >                                               1) usbipa ... start
> > daemon  = = =
> >  2) usbip list --local
> >  3) usbip connect     --- export a device ------>
> >  = = =
> >  4) usbip disconnect  --- un-export a device --->
> >
> >  Bind and unbind are done in connect and disconnect internally.
> >
> > Signed-off-by: Nobuo Iwata <nobuo.iwata@xxxxxxxxxxxxxxx>
> > ---
> >  tools/usb/usbip/libsrc/usbip_host_common.c | 6 ++----
> > tools/usb/usbip/libsrc/usbip_host_common.h | 8 ++++----
> >  tools/usb/usbip/src/usbip.h                | 3 +++
> >  tools/usb/usbip/src/usbip_bind.c           | 4 ++--
> >  tools/usb/usbip/src/usbip_unbind.c         | 4 ++--
> >  5 files changed, 13 insertions(+), 12 deletions(-)
> >
> > diff --git a/tools/usb/usbip/libsrc/usbip_host_common.c
> > b/tools/usb/usbip/libsrc/usbip_host_common.c
> > index 9d41522..6a98d6c 100644
> > --- a/tools/usb/usbip/libsrc/usbip_host_common.c
> > +++ b/tools/usb/usbip/libsrc/usbip_host_common.c
> > @@ -256,17 +256,15 @@ int usbip_export_device(struct
> > usbip_exported_device *edev, int sockfd)  }
> >
> >  struct usbip_exported_device *usbip_generic_get_device(
> > -		struct usbip_host_driver *hdriver, int num)
> > +		struct usbip_host_driver *hdriver, char *busid)
> >  {
> >  	struct list_head *i;
> >  	struct usbip_exported_device *edev;
> > -	int cnt = 0;
> >
> >  	list_for_each(i, &hdriver->edev_list) {
> >  		edev = list_entry(i, struct usbip_exported_device, node);
> > -		if (num == cnt)
> > +		if (!strncmp(busid, edev->udev.busid,
> SYSFS_BUS_ID_SIZE))
> >  			return edev;
> > -		cnt++;
> >  	}
> >
> >  	return NULL;
> > diff --git a/tools/usb/usbip/libsrc/usbip_host_common.h
> > b/tools/usb/usbip/libsrc/usbip_host_common.h
> > index a64b803..f9a9def 100644
> > --- a/tools/usb/usbip/libsrc/usbip_host_common.h
> > +++ b/tools/usb/usbip/libsrc/usbip_host_common.h
> > @@ -38,7 +38,7 @@ struct usbip_host_driver_ops {
> >  	void (*close)(struct usbip_host_driver *hdriver);
> >  	int (*refresh_device_list)(struct usbip_host_driver *hdriver);
> >  	struct usbip_exported_device * (*get_device)(
> > -		struct usbip_host_driver *hdriver, int num);
> > +		struct usbip_host_driver *hdriver, char *busid);
> >
> >  	int (*read_device)(struct udev_device *sdev,
> >  			   struct usbip_usb_device *dev);
> > @@ -86,11 +86,11 @@ static inline int usbip_refresh_device_list(struct
> > usbip_host_driver *hdriver)  }
> >
> >  static inline struct usbip_exported_device * -usbip_get_device(struct
> > usbip_host_driver *hdriver, int num)
> > +usbip_get_device(struct usbip_host_driver *hdriver, char *busid)
> >  {
> >  	if (!hdriver->ops.get_device)
> >  		return NULL;
> > -	return hdriver->ops.get_device(hdriver, num);
> > +	return hdriver->ops.get_device(hdriver, busid);
> >  }
> >
> >  /* Helper functions for implementing driver backend */ @@ -99,6 +99,6
> > @@ void usbip_generic_driver_close(struct usbip_host_driver *hdriver);
> > int usbip_generic_refresh_device_list(struct usbip_host_driver
> > *hdriver);  int usbip_export_device(struct usbip_exported_device
> > *edev, int sockfd);  struct usbip_exported_device
> *usbip_generic_get_device(
> > -		struct usbip_host_driver *hdriver, int num);
> > +		struct usbip_host_driver *hdriver, char *busid);
> >
> >  #endif /* __USBIP_HOST_COMMON_H */
> > diff --git a/tools/usb/usbip/src/usbip.h b/tools/usb/usbip/src/usbip.h
> > index 84fe66a..c296910 100644
> > --- a/tools/usb/usbip/src/usbip.h
> > +++ b/tools/usb/usbip/src/usbip.h
> > @@ -37,4 +37,7 @@ void usbip_list_usage(void);  void
> > usbip_bind_usage(void);  void usbip_unbind_usage(void);
> >
> > +int usbip_bind_device(char *busid);
> > +int usbip_unbind_device(char *busid);
> > +
> >  #endif /* __USBIP_H */
> > diff --git a/tools/usb/usbip/src/usbip_bind.c
> > b/tools/usb/usbip/src/usbip_bind.c
> > index fa46141..2401745 100644
> > --- a/tools/usb/usbip/src/usbip_bind.c
> > +++ b/tools/usb/usbip/src/usbip_bind.c
> > @@ -139,7 +139,7 @@ static int unbind_other(char *busid)
> >  	return status;
> >  }
> >
> > -static int bind_device(char *busid)
> > +int usbip_bind_device(char *busid)
> >  {
> >  	int rc;
> >  	struct udev *udev;
> > @@ -200,7 +200,7 @@ int usbip_bind(int argc, char *argv[])
> >
> >  		switch (opt) {
> >  		case 'b':
> > -			ret = bind_device(optarg);
> > +			ret = usbip_bind_device(optarg);
> >  			goto out;
> >  		default:
> >  			goto err_out;
> > diff --git a/tools/usb/usbip/src/usbip_unbind.c
> > b/tools/usb/usbip/src/usbip_unbind.c
> > index a4a496c..324d986 100644
> > --- a/tools/usb/usbip/src/usbip_unbind.c
> > +++ b/tools/usb/usbip/src/usbip_unbind.c
> > @@ -39,7 +39,7 @@ void usbip_unbind_usage(void)
> >  	printf("usage: %s", usbip_unbind_usage_string);  }
> >
> > -static int unbind_device(char *busid)
> > +int usbip_unbind_device(char *busid)
> >  {
> >  	char bus_type[] = "usb";
> >  	int rc, ret = -1;
> > @@ -127,7 +127,7 @@ int usbip_unbind(int argc, char *argv[])
> >
> >  		switch (opt) {
> >  		case 'b':
> > -			ret = unbind_device(optarg);
> > +			ret = usbip_unbind_device(optarg);
> >  			goto out;
> >  		default:
> >  			goto err_out;
> >
> 
> 
> --
> Shuah Khan
> Sr. Linux Kernel Developer
> Open Source Innovation Group
> Samsung Research America(Silicon Valley) shuah.kh@xxxxxxxxxxx
--
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