* [PATCH 2/3] usbback: Add new features
@ 2014-01-21 16:55 Alexander Savchenko
2014-01-21 17:52 ` David Vrabel
0 siblings, 1 reply; 3+ messages in thread
From: Alexander Savchenko @ 2014-01-21 16:55 UTC (permalink / raw)
To: xen-devel; +Cc: Alexander Savchenko
Add new_vport and remove_vport.
Ported from patch Noboru Iwamatsu: PVUSB: backend driver.
Signed-off-by: Alexander Savchenko <oleksandr.savchenko@globallogic.com>
---
drivers/usb/host/xen-usbback/usbdev.c | 93 +++++++++++++++++++++++++++++++--
1 file changed, 88 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/host/xen-usbback/usbdev.c b/drivers/usb/host/xen-usbback/usbdev.c
index 53a14b4..05709f2 100644
--- a/drivers/usb/host/xen-usbback/usbdev.c
+++ b/drivers/usb/host/xen-usbback/usbdev.c
@@ -276,6 +276,73 @@ static ssize_t usbdev_show_ports(struct device_driver *driver, char *buf)
DRIVER_ATTR(port_ids, S_IRUSR, usbdev_show_ports, NULL);
+static inline int str_to_vport(const char *buf, char *phys_bus, int *dom_id,
+ int *dev_id, int *port)
+{
+ char *p;
+ int len;
+ int err;
+
+ /* no physical bus */
+ if (!(p = strchr(buf, ':')))
+ return -EINVAL;
+
+ len = p - buf;
+
+ /* bad physical bus */
+ if (len + 1 > XEN_USB_BUS_ID_SIZE)
+ return -EINVAL;
+
+ strlcpy(phys_bus, buf, len + 1);
+ err = sscanf(p + 1, "%d:%d:%d", dom_id, dev_id, port);
+ if (err == 3)
+ return 0;
+ else
+ return -EINVAL;
+}
+
+static ssize_t usbstub_vport_add(struct device_driver *driver,
+ const char *buf, size_t count)
+{
+ char bus_id[XEN_USB_BUS_ID_SIZE];
+ int err = 0, dom_id, dev_id, portnum;
+
+ err = str_to_vport(buf, &bus_id[0], &dom_id, &dev_id, &portnum);
+ if (err)
+ goto out;
+
+ err = xen_usbport_add(&bus_id[0], dom_id, dev_id, portnum);
+
+out:
+ if (!err)
+ err = count;
+
+ return err;
+}
+
+DRIVER_ATTR(new_vport, S_IWUSR, NULL, usbstub_vport_add);
+
+static ssize_t usbstub_vport_remove(struct device_driver *driver,
+ const char *buf, size_t count)
+{
+ char bus_id[XEN_USB_BUS_ID_SIZE];
+ int err = 0, dom_id, dev_id, portnum;
+
+ err = str_to_vport(buf, &bus_id[0], &dom_id, &dev_id, &portnum);
+ if (err)
+ goto out;
+
+ err = xen_usbport_remove(dom_id, dev_id, portnum);
+
+out:
+ if (!err)
+ err = count;
+
+ return err;
+}
+
+DRIVER_ATTR(remove_vport, S_IWUSR, NULL, usbstub_vport_remove);
+
/* table of devices that matches any usbdevice */
static const struct usb_device_id usbdev_table[] = {
{ .driver_info = 1 }, /* wildcard, see usb_match_id() */
@@ -293,27 +360,43 @@ static struct usb_driver xen_usbdev_driver = {
int __init xen_usbdev_init(void)
{
- int err;
+ int err = 0;
err = usb_register(&xen_usbdev_driver);
if (err < 0) {
pr_alert(DRV_PFX "usb_register failed (error %d)\n",
err);
- goto out;
+ return err;
}
err = driver_create_file(&xen_usbdev_driver.drvwrap.driver,
&driver_attr_port_ids);
if (err)
- usb_deregister(&xen_usbdev_driver);
+ goto err;
+ err = driver_create_file(&xen_usbdev_driver.drvwrap.driver,
+ &driver_attr_remove_vport);
+ if (err)
+ goto err;
+ err = driver_create_file(&xen_usbdev_driver.drvwrap.driver,
+ &driver_attr_new_vport);
+ if (err)
+ goto err;
+
+ return err;
+
+err:
+ usb_deregister(&xen_usbdev_driver);
-out:
return err;
}
void xen_usbdev_exit(void)
{
driver_remove_file(&xen_usbdev_driver.drvwrap.driver,
- &driver_attr_port_ids);
+ &driver_attr_port_ids);
+ driver_remove_file(&xen_usbdev_driver.drvwrap.driver,
+ &driver_attr_remove_vport);
+ driver_remove_file(&xen_usbdev_driver.drvwrap.driver,
+ &driver_attr_new_vport);
usb_deregister(&xen_usbdev_driver);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 2/3] usbback: Add new features
2014-01-21 16:55 [PATCH 2/3] usbback: Add new features Alexander Savchenko
@ 2014-01-21 17:52 ` David Vrabel
2014-01-21 18:04 ` Stefano Stabellini
0 siblings, 1 reply; 3+ messages in thread
From: David Vrabel @ 2014-01-21 17:52 UTC (permalink / raw)
To: Alexander Savchenko; +Cc: xen-devel
On 21/01/14 16:55, Alexander Savchenko wrote:
> Add new_vport and remove_vport.
> Ported from patch Noboru Iwamatsu: PVUSB: backend driver.
>
> Signed-off-by: Alexander Savchenko <oleksandr.savchenko@globallogic.com>
> ---
> drivers/usb/host/xen-usbback/usbdev.c | 93 +++++++++++++++++++++++++++++++--
> 1 file changed, 88 insertions(+), 5 deletions(-)
What is this patch against? Upstream linux doesn't have a backend
driver. Is patch 1/3 (which hasn't arrived on xen-devel) adding it?
David
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 2/3] usbback: Add new features
2014-01-21 17:52 ` David Vrabel
@ 2014-01-21 18:04 ` Stefano Stabellini
0 siblings, 0 replies; 3+ messages in thread
From: Stefano Stabellini @ 2014-01-21 18:04 UTC (permalink / raw)
To: David Vrabel; +Cc: Alexander Savchenko, xen-devel
On Tue, 21 Jan 2014, David Vrabel wrote:
> On 21/01/14 16:55, Alexander Savchenko wrote:
> > Add new_vport and remove_vport.
> > Ported from patch Noboru Iwamatsu: PVUSB: backend driver.
> >
> > Signed-off-by: Alexander Savchenko <oleksandr.savchenko@globallogic.com>
> > ---
> > drivers/usb/host/xen-usbback/usbdev.c | 93 +++++++++++++++++++++++++++++++--
> > 1 file changed, 88 insertions(+), 5 deletions(-)
>
> What is this patch against? Upstream linux doesn't have a backend
> driver. Is patch 1/3 (which hasn't arrived on xen-devel) adding it?
http://marc.info/?l=xen-devel&m=139032355522882
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-01-21 18:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-21 16:55 [PATCH 2/3] usbback: Add new features Alexander Savchenko
2014-01-21 17:52 ` David Vrabel
2014-01-21 18:04 ` Stefano Stabellini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.