usb: Add support for EHSET
Subsystems (3)
A message that is not in the archive (sent off-list or not yet received): 1591113.JYQdTBbFW7@dabox
cover usb: Add support for EHSET
PATCH 1/2 is a device driver supporting the Embedded Host High-Speed Electrical Test (EHSET) test fixture. This driver supports the set of VID/PIDs specified in the EHSET and activates the various test (TEST_J, TEST_K, et al) modes by issuing a USB_PORT_FEAT_TEST SetFeature request to the hub, or by directly toggling USB_PORT_FEAT_SUSPEND, in the case of the port suspend test.
In RFC/PATCH 2/2 *[1] the SINGLE_STEP_SET_FEATURE test is implemented. The fixture driver designates test selector=6 and sends the USB_PORT_FEAT_TEST request directly to the root hub. The EHCI hub driver is expected to handle this by calling functions in the queue driver to submit separate QTDs for the SETUP and DATA/STATUS stages of a GetDescriptor request, in essence duplicating the work of ehci_urb_enqueue(), but with the requisite added delay.
Quoted 3 lines · Alan Stern
It does sound like a lot of mucking around inside ehci-hcd for a relatively small benefit. But if people want it, I guess it can be added.
Thus this patch is an RFC because I'm pretty sure this method of "mucking around" isn't gonna sit well with most folks. So any alternative suggestions are welcome.
*[1] This second patch is mostly unmodified from the original commit made on the out-of-tree MSM kernel, so please excuse trivial style inconsistencies:
https://www.codeaurora.org/cgit/quic/la/kernel/msm/commit?id=c2084930fd49f04571627be0762ff40e5c5d90d8
Manu Gautam (2):
usb: misc: EHSET Test Fixture device driver for host compliance
usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
drivers/usb/host/ehci-hub.c | 144 ++++++++++++++++++++++++++++++++++++++++- drivers/usb/host/ehci-q.c | 101 ++++++++++++++++++++++++++++ drivers/usb/misc/Kconfig | 13 ++++ drivers/usb/misc/Makefile | 1 + drivers/usb/misc/ehset.c | 152 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 410 insertions(+), 1 deletions(-) create mode 100644 drivers/usb/misc/ehset.c
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
PATCH 1/2 usb: misc: EHSET Test Fixture device driver for host compliance
From: Manu Gautam <[email protected]>
An Embedded Host High-Speed Electrical Test (EHSET) test fixture is used to initiate test modes on a host controller in order to perform the high speed electrical testing procedure for USB-IF compliance. When this test fixture is connected to a host, it can enumerate as one of several selectable VID/PID pairs, each corresponding to one of the following test modes:
* TEST_SE0_NAK
* TEST_J
* TEST_K
* TEST_PACKET
* HS_HOST_PORT_SUSPEND_RESUME
* SINGLE_STEP_GET_DEV_DESC
* SINGLE_STEP_SET_FEATURE
The USB EHSET procedure can be found here:
http://www.usb.org/developers/onthego/EHSET_v1.01.pdf
[[email protected]: imported from commit 073c9409 on codeaurora.org;
minor cleanup and updated author email]
--- drivers/usb/misc/Kconfig | 13 ++++ drivers/usb/misc/Makefile | 1 + drivers/usb/misc/ehset.c | 134 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+), 0 deletions(-) create mode 100644 drivers/usb/misc/ehset.c
drivers/usb/misc/Kconfig +13 -0
@@ -200,6 +200,19 @@ config USB_TEST See <http://www.linux-usb.org/usbtest/> for more information, including sample test device firmware and "how to use it". +config USB_EHSET_TEST_FIXTURE + tristate "USB EHSET Test Fixture driver" + help + Say Y here if you want to support the special test fixture device + used for the USB-IF Embedded Host High-Speed Electrical Test procedure. + + When the test fixture is connected, it can enumerate as one of several + VID/PID pairs. This driver then initiates a corresponding test mode on + the downstream port to which the test fixture is attached. + + See <http://www.usb.org/developers/onthego/EHSET_v1.01.pdf> for more + information. + config USB_ISIGHTFW tristate "iSight firmware loading support" select FW_LOADER
drivers/usb/misc/Makefile +1 -0
@@ -22,6 +22,7 @@ obj-$(CONFIG_USB_LED) += usbled.o obj-$(CONFIG_USB_LEGOTOWER) += legousbtower.o obj-$(CONFIG_USB_RIO500) += rio500.o obj-$(CONFIG_USB_TEST) += usbtest.o +obj-$(CONFIG_USB_EHSET_TEST_FIXTURE) += ehset.o obj-$(CONFIG_USB_TRANCEVIBRATOR) += trancevibrator.o obj-$(CONFIG_USB_USS720) += uss720.o obj-$(CONFIG_USB_SEVSEG) += usbsevseg.o
drivers/usb/misc/ehset.c new file +134 -0
134 lines not on this page · raw message
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
PATCH 2/2 usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
In reply to Jack PhamFrom: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the SINGLE_STEP_SET_FEATURE test as follows:
1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the data
This patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of 0x06. From there it mimics ehci_urb_enqueue() but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.
--- drivers/usb/host/ehci-hub.c | 144 ++++++++++++++++++++++++++++++++++++++++++- drivers/usb/host/ehci-q.c | 101 ++++++++++++++++++++++++++++++ drivers/usb/misc/ehset.c | 20 ++++++- 3 files changed, 263 insertions(+), 2 deletions(-)
drivers/usb/host/ehci-hub.c +143 -1
@@ -711,6 +711,142 @@ ehci_hub_descriptor ( }/*-------------------------------------------------------------------------*/ +#define EHSET_TEST_SINGLE_STEP_SET_FEATURE 0x06 + +static void usb_ehset_completion (struct urb *urb) +{ +struct completion *done = urb->context; + +complete (done); +} +static int submit_single_step_set_feature ( +struct usb_hcd *hcd, +struct urb *urb, +int is_setup +); + +/* +* Allocate and initialize a control URB. This request will be used by the +* EHSET SINGLE_STEP_SET_FEATURE test in which the DATA and STATUS stages +* of the GetDescriptor request are sent 15 seconds after the SETUP stage. +* Return NULL if failed. +*/ +static struct urb *request_single_step_set_feature_urb ( +struct usb_device *udev, +void *dr, +void *buf, +struct completion *done +) { +struct urb *urb; +struct usb_hcd *hcd =bus_to_hcd (udev->bus); +struct usb_host_endpoint *ep; + + urb =usb_alloc_urb (0 ,GFP_KERNEL ); +if (!urb) +return NULL ; + + urb->pipe =usb_rcvctrlpipe (udev,0 ); + ep = (usb_pipein (urb->pipe) ? udev->ep_in : udev->ep_out) + [usb_pipeendpoint (urb->pipe)]; +if (!ep) { +usb_free_urb (urb); +return NULL ; + } + + urb->ep = ep; + urb->dev = udev; + urb->setup_packet = (void *)dr; + urb->transfer_buffer = buf; + urb->transfer_buffer_length =USB_DT_DEVICE_SIZE ; + urb->complete = usb_ehset_completion; + urb->status = -EINPROGRESS ; + urb->actual_length =0 ; + urb->transfer_flags =URB_DIR_IN ; +usb_get_urb (urb); +atomic_inc (&urb->use_count); +atomic_inc (&urb->dev->urbnum); + urb->setup_dma =dma_map_single ( + hcd->self.controller, + urb->setup_packet, +sizeof (struct usb_ctrlrequest ), +DMA_TO_DEVICE ); + urb->transfer_dma =dma_map_single ( + hcd->self.controller, + urb->transfer_buffer, + urb->transfer_buffer_length, +DMA_FROM_DEVICE ); + urb->context = done; +return urb; +} + +static int ehset_single_step_set_feature (struct usb_hcd *hcd,int port) +{ +int retval = -ENOMEM ; +struct usb_ctrlrequest *dr; +struct urb *urb; +struct usb_device *udev; +struct ehci_hcd *ehci =hcd_to_ehci (hcd); +struct usb_device_descriptor *buf; +DECLARE_COMPLETION_ONSTACK (done); + +/* Obtain udev of the rhub's child port */ + udev = hcd->self.root_hub->children[port]; +if (!udev) { +ehci_err (ehci,"No device attached to the RootHub\n" ); +return -ENODEV ; + } + buf =kmalloc (USB_DT_DEVICE_SIZE ,GFP_KERNEL ); +if (!buf) +return -ENOMEM ; + + dr =kmalloc (sizeof (struct usb_ctrlrequest ),GFP_KERNEL ); +if (!dr) { +kfree (buf); +return -ENOMEM ; + } + +/* Fill Setup packet for GetDescriptor */ + dr->bRequestType =USB_DIR_IN ; + dr->bRequest =USB_REQ_GET_DESCRIPTOR ; + dr->wValue =cpu_to_le16 (USB_DT_DEVICE <<8 ); + dr->wIndex =0 ; + dr->wLength =cpu_to_le16 (USB_DT_DEVICE_SIZE ); + urb =request_single_step_set_feature_urb (udev, dr, buf, &done); +if (!urb) + goto cleanup; + +/* Submit just the SETUP stage */ + retval =submit_single_step_set_feature (hcd, urb,1 ); +if (retval) + goto out1; +if (!wait_for_completion_timeout (&done,msecs_to_jiffies (2000 ))) { +usb_kill_urb (urb); + retval = -ETIMEDOUT ; +ehci_err (ehci,"%s SETUP stage timed out on ep0\n" , __func__); + goto out1; + } +msleep (15 *1000 ); + +/* Complete remaining DATA and STATUS stages using the same URB */ + urb->status = -EINPROGRESS ; +usb_get_urb (urb); +atomic_inc (&urb->use_count); +atomic_inc (&urb->dev->urbnum); + retval =submit_single_step_set_feature (hcd, urb,0 ); +if (!retval && !wait_for_completion_timeout (&done, +msecs_to_jiffies (2000 ))) { +usb_kill_urb (urb); + retval = -ETIMEDOUT ; +ehci_err (ehci,"%s IN stage timed out on ep0\n" , __func__); + } +out1: +usb_free_urb (urb); +cleanup: +kfree (dr); +kfree (buf); +return retval; +} +/*-------------------------------------------------------------------------*/ static int ehci_hub_control ( struct usb_hcd *hcd,
@@ -1091,7 +1227,13 @@ static int ehci_hub_control (* about the EHCI-specific stuff. */ case USB_PORT_FEAT_TEST : -if (!selector || selector >5 ) +if (selector ==6 ) { +spin_unlock_irqrestore (&ehci->lock, flags); + retval =ehset_single_step_set_feature (hcd, + wIndex); +spin_lock_irqsave (&ehci->lock, flags); +break ; + }else if (!selector || selector >5 ) goto error;spin_unlock_irqrestore (&ehci->lock, flags);ehci_quiesce (ehci);
drivers/usb/host/ehci-q.c +101 -0
107 lines not on this page · raw message
drivers/usb/misc/ehset.c +19 -1
@@ -96,7 +96,25 @@ static int ehset_probe(struct usb_interface *intf,kfree (buf);break ;case TEST_SINGLE_STEP_SET_FEATURE : -/* unsupported for now */ +/* +* GetDescriptor SETUP request -> 15secs delay -> IN & STATUS +* +* Note, this test is only supported on root hubs since the +* SetPortFeature handling can only be done inside the HCD's +* hub_control callback function. +*/ +if (hub_udev != dev->bus->root_hub) { +dev_err (&intf->dev,"SINGLE_STEP_SET_FEATURE test only supported on root hub\n" ); +break ; + } + + ret =usb_control_msg (hub_udev,usb_sndctrlpipe (hub_udev,0 ), +USB_REQ_SET_FEATURE ,USB_RT_PORT , +USB_PORT_FEAT_TEST , + (6 <<8 ) | portnum, +NULL ,0 ,60 *1000 ); + +break ;default :dev_err (&intf->dev,"%s: unsupported PID: 0x%x\n" , __func__, test_pid);
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 14 lines · Jack Pham
From: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the
SINGLE_STEP_SET_FEATUREtest as follows:1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the data
Quoted 8 lines
This patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of
0x06. From there it mimicsehci_urb_enqueue()but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.Signed-off-by Manu Gautam <[email protected]>Signed-off-by Jack Pham <[email protected]>
Alan, any thoughts about this patch?
thanks,
greg k-h
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 21 lines · Greg KH
Quoted 20 lines · Jack Pham
From: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the
SINGLE_STEP_SET_FEATUREtest as follows:1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the dataThis patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of
0x06. From there it mimicsehci_urb_enqueue()but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.
Quoted 4 lines
Quoted 2 lines
Signed-off-by Manu Gautam <[email protected]>Signed-off-by Jack Pham <[email protected]>Alan, any thoughts about this patch?
Sorry, this slipped my mind.
It looks okay. I haven't tested it yet (and it's so specialized that it probably will never receive very much testing). It is somewhat fragile, in that it copies part of usbcore into ehci-hcd; updates to the core will have to be mirrored in the driver.
On the other hand, there's no real reason to reject it, and it could end up helping people who want to test new USB devices. So...
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 35 lines · Alan Stern
Quoted 21 lines · Greg KH
Quoted 20 lines · Jack Pham
From: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the
SINGLE_STEP_SET_FEATUREtest as follows:1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the dataThis patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of
0x06. From there it mimicsehci_urb_enqueue()but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.Quoted 4 lines
Quoted 2 lines
Signed-off-by Manu Gautam <[email protected]>Signed-off-by Jack Pham <[email protected]>Alan, any thoughts about this patch?
Sorry, this slipped my mind.
It looks okay. I haven't tested it yet (and it's so specialized that it probably will never receive very much testing). It is somewhat fragile, in that it copies part of usbcore into ehci-hcd; updates to the core will have to be mirrored in the driver.
Quoted 4 lines
On the other hand, there's no real reason to reject it, and it could end up helping people who want to test new USB devices. So...
Acked-by Alan Stern <[email protected]>
Wait a minute, didn't we discuss a while back that these test features should be built into usbcore so that we could have a usbcv clone for linux ?
Signature · 1 line
balbi
Alan Stern
maintainerRe: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 36 lines · Felipe Balbi
Quoted 35 lines · Alan Stern
Quoted 21 lines · Greg KH
Quoted 20 lines · Jack Pham
From: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the
SINGLE_STEP_SET_FEATUREtest as follows:1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the dataThis patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of
0x06. From there it mimicsehci_urb_enqueue()but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.Quoted 4 lines
Quoted 2 lines
Signed-off-by Manu Gautam <[email protected]>Signed-off-by Jack Pham <[email protected]>Alan, any thoughts about this patch?
Sorry, this slipped my mind.
It looks okay. I haven't tested it yet (and it's so specialized that it probably will never receive very much testing). It is somewhat fragile, in that it copies part of usbcore into ehci-hcd; updates to the core will have to be mirrored in the driver.
Quoted 8 lines
Quoted 4 lines
On the other hand, there's no real reason to reject it, and it could end up helping people who want to test new USB devices. So...
Acked-by Alan Stern <[email protected]>Wait a minute, didn't we discuss a while back that these test features should be built into usbcore so that we could have a usbcv clone for linux ?
There's no way this can be built into the core. This test requires the behavior of the host controller to be modified at a low level (introducing a 15-second delay between the Setup and Data stages of a control transfer). Only the HCD can do that.
Besides, doesn't USB-CV install its own version of Windows' EHCI driver while it runs its tests?
Alan Stern
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Hi,
Quoted 41 lines · Alan Stern
Quoted 41 lines · Alan Stern
Quoted 39 lines · Greg KH
Quoted 22 lines · Jack Pham
Quoted 20 lines
From: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the
SINGLE_STEP_SET_FEATUREtest as follows:1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the dataThis patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of
0x06. From there it mimicsehci_urb_enqueue()but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.Quoted 4 lines
Quoted 2 lines
Signed-off-by Manu Gautam <[email protected]>Signed-off-by Jack Pham <[email protected]>Alan, any thoughts about this patch?
Sorry, this slipped my mind.
It looks okay. I haven't tested it yet (and it's so specialized that it probably will never receive very much testing). It is somewhat fragile, in that it copies part of usbcore into ehci-hcd; updates to the core will have to be mirrored in the driver.
On the other hand, there's no real reason to reject it, and it could end up helping people who want to test new USB devices. So...
Acked-by Alan Stern <[email protected]>
Quoted 8 lines
Quoted 3 lines
Wait a minute, didn't we discuss a while back that these test features should be built into usbcore so that we could have a usbcv clone for linux ?
There's no way this can be built into the core. This test requires the behavior of the host controller to be modified at a low level (introducing a 15-second delay between the Setup and Data stages of a control transfer). Only the HCD can do that.
heh, it doesn't need to be entirely in the core. Core could have the generic calls and HCDs could implement some callbacks, but I think quite a bit of the code will be similar if we implement the same thing on all HCDs.
Quoted 2 lines
Besides, doesn't USB-CV install its own version of Windows' EHCI driver while it runs its tests?
IIRC only USB20CV, the new USB30CV (which also tests USB2) doesn't do that.
Signature · 1 line
balbi
Alan Stern
maintainerRe: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 9 lines · Felipe Balbi
Quoted 8 lines
Quoted 3 lines
Wait a minute, didn't we discuss a while back that these test features should be built into usbcore so that we could have a usbcv clone for linux ?
There's no way this can be built into the core. This test requires the behavior of the host controller to be modified at a low level (introducing a 15-second delay between the Setup and Data stages of a control transfer). Only the HCD can do that.
Quoted 4 lines
heh, it doesn't need to be entirely in the core. Core could have the generic calls and HCDs could implement some callbacks, but I think quite a bit of the code will be similar if we implement the same thing on all HCDs.
What generic calls and callbacks would you suggest? I assume you want enough to cover not just this one test but the entire USB-CV suite.
Quoted 5 lines
Quoted 2 lines
Besides, doesn't USB-CV install its own version of Windows' EHCI driver while it runs its tests?
IIRC only USB20CV, the new USB30CV (which also tests USB2) doesn't do that.
I don't have more than the foggiest notion of how these things really work under Windows.
Alan Stern
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Hi,
Quoted 9 lines · Alan Stern
Quoted 9 lines
Quoted 8 lines
Quoted 3 lines
Wait a minute, didn't we discuss a while back that these test features should be built into usbcore so that we could have a usbcv clone for linux ?
There's no way this can be built into the core. This test requires the behavior of the host controller to be modified at a low level (introducing a 15-second delay between the Setup and Data stages of a control transfer). Only the HCD can do that.
Quoted 7 lines
Quoted 4 lines
heh, it doesn't need to be entirely in the core. Core could have the generic calls and HCDs could implement some callbacks, but I think quite a bit of the code will be similar if we implement the same thing on all HCDs.
What generic calls and callbacks would you suggest? I assume you want enough to cover not just this one test but the entire USB-CV suite.
maybe a single callback for supporting 'testmodes' ? which receives the test mode as argument ?
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Besides, doesn't USB-CV install its own version of Windows' EHCI driver while it runs its tests?
IIRC only USB20CV, the new USB30CV (which also tests USB2) doesn't do that.
I don't have more than the foggiest notion of how these things really work under Windows.
and that's hardly necessary to understand...
Signature · 1 line
balbi
Alan Stern
maintainerRe: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 10 lines · Felipe Balbi
Quoted 7 lines
Quoted 4 lines
heh, it doesn't need to be entirely in the core. Core could have the generic calls and HCDs could implement some callbacks, but I think quite a bit of the code will be similar if we implement the same thing on all HCDs.
What generic calls and callbacks would you suggest? I assume you want enough to cover not just this one test but the entire USB-CV suite.
maybe a single callback for supporting 'testmodes' ? which receives the test mode as argument ?
I don't have a clear picture of how you would apply such an approach to this case. There would have to be a way to tell the HCD to insert a 15-second delay between the Setup and Data stages of a particular control URB. How would you do that? Whatever method you choose, implementing it in every HCD would be a huge amount of work.
What other test modes would you want to support?
Is it worth adding this support to the standard host controller drivers, or should there be a special version (a Kconfig option like CONFIG_RCU_TORTURE_TEST) to enable it? Putting a lot of testing code in distribution kernels where it will never be used seems like a big waste.
Alan Stern
A message that is not in the archive (sent off-list or not yet received): Pine.LNX.4.44L0.1308091053450.1405-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Hi,
Quoted 8 lines · Alan Stern
Quoted 8 lines
Quoted 7 lines
Quoted 4 lines
heh, it doesn't need to be entirely in the core. Core could have the generic calls and HCDs could implement some callbacks, but I think quite a bit of the code will be similar if we implement the same thing on all HCDs.
What generic calls and callbacks would you suggest? I assume you want enough to cover not just this one test but the entire USB-CV suite.
Quoted 7 lines
Quoted 2 lines
maybe a single callback for supporting 'testmodes' ? which receives the test mode as argument ?
I don't have a clear picture of how you would apply such an approach to this case. There would have to be a way to tell the HCD to insert a 15-second delay between the Setup and Data stages of a particular control URB. How would you do that? Whatever method you choose,
each test is started after enumerating a known Vid/Pid pair. Based on that, you *know* which test to run.
Quoted 1 line
implementing it in every HCD would be a huge amount of work.
sure, we can support different HCDs with time, but once SINGLE_STEP is implemented in e.g. EHCI, it should be simple to port it to OHCI/xHCI/MUSB/etc.
Quoted 1 line
What other test modes would you want to support?
anything that USB[23]0CV supports today. There are even link layer tests for USB3 and a bunch of others. This SINGLE_STEP_SET_FEATURE is but one of a large(-ish) test suite which needs to be supported.
Quoted 5 lines
Is it worth adding this support to the standard host controller drivers, or should there be a special version (a
Kconfigoption likeCONFIG_RCU_TORTURE_TEST) to enable it? Putting a lot of testing code in distribution kernels where it will never be used seems like a big waste.
right, I think it should be hidden by Kconfig, not arguing against that.
Signature · 1 line
balbi
Alan Stern
maintainerRe: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 10 lines · Felipe Balbi
Quoted 7 lines
Quoted 2 lines
maybe a single callback for supporting 'testmodes' ? which receives the test mode as argument ?
I don't have a clear picture of how you would apply such an approach to this case. There would have to be a way to tell the HCD to insert a 15-second delay between the Setup and Data stages of a particular control URB. How would you do that? Whatever method you choose,
each test is started after enumerating a known Vid/Pid pair. Based on that, you *know* which test to run.
That's not what I meant. Yes, the test-device driver knows what test it wants to run, based on the VID/PID. I was asking how it would communicate this knowledge to the HCD.
For example, it doesn't make sense to have a callback that means "Insert a 15-second delay into the next URB that I submit", because the HCD doesn't know where URBs come from.
Quoted 5 lines
Quoted 1 line
What other test modes would you want to support?
anything that USB[23]0CV supports today. There are even link layer tests for USB3 and a bunch of others. This
SINGLE_STEP_SET_FEATUREis but one of a large(-ish) test suite which needs to be supported.
That's what I'm trying to find out. What are the special features that we would need to implement in order to support the entire test suite?
Quoted 7 lines
Quoted 5 lines
Is it worth adding this support to the standard host controller drivers, or should there be a special version (a
Kconfigoption likeCONFIG_RCU_TORTURE_TEST) to enable it? Putting a lot of testing code in distribution kernels where it will never be used seems like a big waste.right, I think it should be hidden by
Kconfig, not arguing against that.
Therefore we both agree the $SUBJECT patch should not be accepted in its current form. At the very least, the new code in ehci-hcd should be conditional on a CONFIG_USB_HCD_TEST_MODE option. In addition, we may want some of the work (though at this point I'm not still clear on exactly what parts) to be moved into usbcore.
Alan Stern
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 13 lines · Alan Stern
Quoted 10 lines · Felipe Balbi
Quoted 7 lines
Quoted 2 lines
maybe a single callback for supporting 'testmodes' ? which receives the test mode as argument ?
I don't have a clear picture of how you would apply such an approach to this case. There would have to be a way to tell the HCD to insert a 15-second delay between the Setup and Data stages of a particular control URB. How would you do that? Whatever method you choose,
each test is started after enumerating a known Vid/Pid pair. Based on that, you *know* which test to run.
Quoted 7 lines
That's not what I meant. Yes, the test-device driver knows what test it wants to run, based on the VID/PID. I was asking how it would communicate this knowledge to the HCD.
For example, it doesn't make sense to have a callback that means "Insert a 15-second delay into the next URB that I submit", because the HCD doesn't know where URBs come from.
static int ehci_test_mode(struct usb_hcd *hcd, unsigned int test)
{
struct ehci_hcd *ehci = to_ehci(hcd);
....
switch (test) {
case USB_TEST_SINGLE_STEP_GET_DESC:
start_test();
wait_15_seconds();
finish_test();
break;
...
default:
return -ENOTSUP;
}
return ret;
}...
static struct hc_driver ehci_hcd_driver = {
....
.test_mode = ehci_test_mode,
...
};Quoted 8 lines
Quoted 5 lines
Quoted 1 line
What other test modes would you want to support?
anything that USB[23]0CV supports today. There are even link layer tests for USB3 and a bunch of others. This
SINGLE_STEP_SET_FEATUREis but one of a large(-ish) test suite which needs to be supported.That's what I'm trying to find out. What are the special features that we would need to implement in order to support the entire test suite?
I haven't looked at USB??CV spec for a while, maybe Jack knows better ?
Quoted 6 lines
Quoted 6 lines
Quoted 5 lines
Is it worth adding this support to the standard host controller drivers, or should there be a special version (a
Kconfigoption likeCONFIG_RCU_TORTURE_TEST) to enable it? Putting a lot of testing code in distribution kernels where it will never be used seems like a big waste.
Quoted 7 lines
Quoted 1 line
right, I think it should be hidden by
Kconfig, not arguing against that.Therefore we both agree the $SUBJECT patch should not be accepted in its current form. At the very least, the new code in ehci-hcd should be conditional on a
CONFIG_USB_HCD_TEST_MODEoption. In addition, we may want some of the work (though at this point I'm not still clear on exactly what parts) to be moved into usbcore.
right
Signature · 1 line
balbi
Alan Stern
maintainerRe: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 31 lines · Felipe Balbi
Quoted 7 lines
That's not what I meant. Yes, the test-device driver knows what test it wants to run, based on the VID/PID. I was asking how it would communicate this knowledge to the HCD.
For example, it doesn't make sense to have a callback that means "Insert a 15-second delay into the next URB that I submit", because the HCD doesn't know where URBs come from.
static int
ehci_test_mode(struct usb_hcd *hcd, unsigned int test){ struct ehci_hcd *ehci = to_ehci(hcd); .... switch (test) { case USB_TEST_SINGLE_STEP_GET_DESC: start_test(); wait_15_seconds(); finish_test(); break; ... default: return -ENOTSUP; } return ret; }...
Quoted 7 lines
static struct hc_driver ehci_hcd_driver = {
....
.test_mode = ehci_test_mode,
...
};This is almost exactly the same as the way it is done in the newly merged code. The only difference is that it uses a special test_mode callback instead of a special selector value.
Didn't you say you wanted a large part of the support moved into usbcore? For example, the routines that create and enqueue this "URB with a delay in the middle" are little more than copies of the core code.
Alan Stern
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
In reply to Felipe BalbiQuoted 10 lines · Felipe Balbi
Quoted 7 lines · Alan Stern
Quoted 3 lines · Felipe Balbi
anything that USB[23]0CV supports today. There are even link layer tests for USB3 and a bunch of others. This
SINGLE_STEP_SET_FEATUREis but one of a large(-ish) test suite which needs to be supported.That's what I'm trying to find out. What are the special features that we would need to implement in order to support the entire test suite?
I haven't looked at USB??CV spec for a while, maybe Jack knows better ?
I've been going off of
http://www.usb.org/developers/onthego/EHSET_v1.01.pdf which is specific to OTG and Embedded hosts, but I think it overlaps pretty close with with what USB20CV/HSET is trying to cover.
So far the SINGLE_STEP_GET_DEVICE_DESCRIPTOR and SINGLE_STEP_SET_FEATURE tests are the only ones we've had to implement in software for, and obviously with the latter requiring further modification in the HCD itself for that 15-second delay insertion.
The other test modes that the USB20CV/HSETT tool appears to invoke (TEST_J, TEST_K, etc.) are actually defined in USB 2.0 Section 7.1.20 and also reserved in EHCI's PORTSC bits [19:16], so whatever invokes these tests modes--unlike SINGLE_STEP--simply issue a SET_FEATURE(PORT_FEAT_TEST) and can expect the hardware to handle it.
Quoted 3 lines
Quoted 3 lines
Therefore we both agree the $SUBJECT patch should not be accepted in its current form. At the very least, the new code in ehci-hcd should be conditional on a
CONFIG_USB_HCD_TEST_MODEoption.
Already submitted a follow-on patch for that.
Quoted 2 lines
Quoted 2 lines
In addition, we may want some of the work (though at this point I'm not still clear on exactly what parts) to be moved into usbcore.
+1. I am open to suggestions on how best to achieve this. I have a another patch in the for doing the same 15-second delay in xHCI but am hesitant to submit it just yet, pending ideas on a better way to do it in the common HCD core.
Thanks,
Jack
Signature · 3 lines
Employee of Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Alan Stern
maintainerRe: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 7 lines · Jack Pham
Quoted 2 lines
Quoted 2 lines
In addition, we may want some of the work (though at this point I'm not still clear on exactly what parts) to be moved into usbcore.
+1. I am open to suggestions on how best to achieve this. I have a another patch in the for doing the same 15-second delay in xHCI but am hesitant to submit it just yet, pending ideas on a better way to do it in the common HCD core.
Well, here's one possibility, not fully thought out. Suppose there was a way to tell the HCD to carry out _just_ the Setup stage of a control transfer. Or to omit the Setup stage and go directly to the Data stage. Then the SINGLE_STEP_GET_DEVICE_DESCRIPTOR test could be implemented very simply by submitting two URBs with a delay between.
Alan Stern
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 10 lines · Alan Stern
Quoted 7 lines · Jack Pham
Quoted 2 lines
Quoted 2 lines
In addition, we may want some of the work (though at this point I'm not still clear on exactly what parts) to be moved into usbcore.
+1. I am open to suggestions on how best to achieve this. I have a another patch in the for doing the same 15-second delay in xHCI but am hesitant to submit it just yet, pending ideas on a better way to do it in the common HCD core.
Quoted 5 lines
Well, here's one possibility, not fully thought out. Suppose there was a way to tell the HCD to carry out _just_ the Setup stage of a control transfer. Or to omit the Setup stage and go directly to the Data stage. Then the
SINGLE_STEP_GET_DEVICE_DESCRIPTORtest could be implemented very simply by submitting two URBs with a delay between.
Ok, but that would be in the form of a hook from usbcore to the HCD driver or an URB flag right? In both ehci-hcd and xhci-hcd, setup transfers are handled in their entirety and my work was simply duplicating those functions to be able to split them up. To do this in a generic fashion would still need HCD-specific implementation. But it would at least still allow moving the "submit setup urb", "wait", and "submit data/status urb" steps into usbcore instead, which is much cleaner.
Jack
Signature · 3 lines
Employee of Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Re: [RFC/PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
In reply to Jack PhamQuoted 9 lines · Jack Pham
The USB Embedded High-speed Host Electrical Test (EHSET) defines the
SINGLE_STEP_SET_FEATUREtest as follows:drivers/usb/host/ehci-hub.c +2
-0+static int ehset_single_step_set_feature (struct usb_hcd *hcd,int port) +{
drivers/usb/host/ehci-hub.c ehci_hub_descriptor ( · line 793
Quoted 10 lines
drivers/usb/host/ehci-hub.c +10
-0+int retval = -ENOMEM ; +struct usb_ctrlrequest *dr; +struct urb *urb; +struct usb_device *udev; +struct ehci_hcd *ehci =hcd_to_ehci (hcd); +struct usb_device_descriptor *buf; +DECLARE_COMPLETION_ONSTACK (done); + +/* Obtain udev of the rhub's child port */ + udev = hcd->self.root_hub->children[port];
Oops, I forgot to add this additional fix needed after refreshing to latest:
- udev = hcd->self.root_hub->children[port];
+ udev = usb_hub_find_child(hcd->self.root_hub, port);
I'll wait for Felipe's response regarding whether it's appropriate to do this in the HCD, and then will re-send without the RFC tag.
Jack
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
A message that is not in the archive (sent off-list or not yet received): 20130725220925.GA28634-NjF/[email protected]
PATCH 2/2 usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
From: Manu Gautam <[email protected]>
The USB Embedded High-speed Host Electrical Test (EHSET) defines the SINGLE_STEP_SET_FEATURE test as follows:
1) The host enumerates the test device with VID:0x1A0A, PID:0x0108
2) The host sends the SETUP stage of a GetDescriptor(Device)
3) The device ACKs the request
4) The host issues SOFs for 15 seconds allowing the test operator to raise the scope trigger just above the SOF voltage level
5) The host sends the IN packet
6) The device sends data in response, triggering the scope
7) The host sends an ACK in response to the data
This patch adds additional handling to the EHCI hub driver and allows the EHSET driver to initiate this test mode by issuing a a SetFeature request to the root hub with a Test Selector value of 0x06. From there it mimics ehci_urb_enqueue() but separately submits QTDs for the SETUP and DATA/STATUS stages in order to insert a delay in between.
[[email protected]: imported from commit c2084930 on codeaurora.org;
minor cleanup and updated author email]
---
Changes from RFC:
- replaced reference to non-existent root_hub->children with call to usb_hub_find_child()
- use EHSET_TEST_SINGLE_STEP_SET_FEATURE constant
This should be applied to usb-next atop or after commit 1353aa53.
drivers/usb/host/ehci-hub.c | 144 ++++++++++++++++++++++++++++++++++++++++++- drivers/usb/host/ehci-q.c | 101 ++++++++++++++++++++++++++++++ drivers/usb/misc/ehset.c | 20 ++++++- 3 files changed, 263 insertions(+), 2 deletions(-)
drivers/usb/host/ehci-hub.c +143 -1
@@ -711,6 +711,142 @@ ehci_hub_descriptor ( }/*-------------------------------------------------------------------------*/ +#define EHSET_TEST_SINGLE_STEP_SET_FEATURE 0x06 + +static void usb_ehset_completion (struct urb *urb) +{ +struct completion *done = urb->context; + +complete (done); +} +static int submit_single_step_set_feature ( +struct usb_hcd *hcd, +struct urb *urb, +int is_setup +); + +/* +* Allocate and initialize a control URB. This request will be used by the +* EHSET SINGLE_STEP_SET_FEATURE test in which the DATA and STATUS stages +* of the GetDescriptor request are sent 15 seconds after the SETUP stage. +* Return NULL if failed. +*/ +static struct urb *request_single_step_set_feature_urb ( +struct usb_device *udev, +void *dr, +void *buf, +struct completion *done +) { +struct urb *urb; +struct usb_hcd *hcd =bus_to_hcd (udev->bus); +struct usb_host_endpoint *ep; + + urb =usb_alloc_urb (0 ,GFP_KERNEL ); +if (!urb) +return NULL ; + + urb->pipe =usb_rcvctrlpipe (udev,0 ); + ep = (usb_pipein (urb->pipe) ? udev->ep_in : udev->ep_out) + [usb_pipeendpoint (urb->pipe)]; +if (!ep) { +usb_free_urb (urb); +return NULL ; + } + + urb->ep = ep; + urb->dev = udev; + urb->setup_packet = (void *)dr; + urb->transfer_buffer = buf; + urb->transfer_buffer_length =USB_DT_DEVICE_SIZE ; + urb->complete = usb_ehset_completion; + urb->status = -EINPROGRESS ; + urb->actual_length =0 ; + urb->transfer_flags =URB_DIR_IN ; +usb_get_urb (urb); +atomic_inc (&urb->use_count); +atomic_inc (&urb->dev->urbnum); + urb->setup_dma =dma_map_single ( + hcd->self.controller, + urb->setup_packet, +sizeof (struct usb_ctrlrequest ), +DMA_TO_DEVICE ); + urb->transfer_dma =dma_map_single ( + hcd->self.controller, + urb->transfer_buffer, + urb->transfer_buffer_length, +DMA_FROM_DEVICE ); + urb->context = done; +return urb; +} + +static int ehset_single_step_set_feature (struct usb_hcd *hcd,int port) +{ +int retval = -ENOMEM ; +struct usb_ctrlrequest *dr; +struct urb *urb; +struct usb_device *udev; +struct ehci_hcd *ehci =hcd_to_ehci (hcd); +struct usb_device_descriptor *buf; +DECLARE_COMPLETION_ONSTACK (done); + +/* Obtain udev of the rhub's child port */ + udev =usb_hub_find_child (hcd->self.root_hub, port); +if (!udev) { +ehci_err (ehci,"No device attached to the RootHub\n" ); +return -ENODEV ; + } + buf =kmalloc (USB_DT_DEVICE_SIZE ,GFP_KERNEL ); +if (!buf) +return -ENOMEM ; + + dr =kmalloc (sizeof (struct usb_ctrlrequest ),GFP_KERNEL ); +if (!dr) { +kfree (buf); +return -ENOMEM ; + } + +/* Fill Setup packet for GetDescriptor */ + dr->bRequestType =USB_DIR_IN ; + dr->bRequest =USB_REQ_GET_DESCRIPTOR ; + dr->wValue =cpu_to_le16 (USB_DT_DEVICE <<8 ); + dr->wIndex =0 ; + dr->wLength =cpu_to_le16 (USB_DT_DEVICE_SIZE ); + urb =request_single_step_set_feature_urb (udev, dr, buf, &done); +if (!urb) + goto cleanup; + +/* Submit just the SETUP stage */ + retval =submit_single_step_set_feature (hcd, urb,1 ); +if (retval) + goto out1; +if (!wait_for_completion_timeout (&done,msecs_to_jiffies (2000 ))) { +usb_kill_urb (urb); + retval = -ETIMEDOUT ; +ehci_err (ehci,"%s SETUP stage timed out on ep0\n" , __func__); + goto out1; + } +msleep (15 *1000 ); + +/* Complete remaining DATA and STATUS stages using the same URB */ + urb->status = -EINPROGRESS ; +usb_get_urb (urb); +atomic_inc (&urb->use_count); +atomic_inc (&urb->dev->urbnum); + retval =submit_single_step_set_feature (hcd, urb,0 ); +if (!retval && !wait_for_completion_timeout (&done, +msecs_to_jiffies (2000 ))) { +usb_kill_urb (urb); + retval = -ETIMEDOUT ; +ehci_err (ehci,"%s IN stage timed out on ep0\n" , __func__); + } +out1: +usb_free_urb (urb); +cleanup: +kfree (dr); +kfree (buf); +return retval; +} +/*-------------------------------------------------------------------------*/ static int ehci_hub_control ( struct usb_hcd *hcd,
@@ -1091,7 +1227,13 @@ static int ehci_hub_control (* about the EHCI-specific stuff. */ case USB_PORT_FEAT_TEST : -if (!selector || selector >5 ) +if (selector ==EHSET_TEST_SINGLE_STEP_SET_FEATURE ) { +spin_unlock_irqrestore (&ehci->lock, flags); + retval =ehset_single_step_set_feature (hcd, + wIndex); +spin_lock_irqsave (&ehci->lock, flags); +break ; + }else if (!selector || selector >5 ) goto error;spin_unlock_irqrestore (&ehci->lock, flags);ehci_quiesce (ehci);
drivers/usb/host/ehci-q.c +101 -0
107 lines not on this page · raw message
drivers/usb/misc/ehset.c +19 -1
@@ -96,7 +96,25 @@ static int ehset_probe(struct usb_interface *intf,kfree (buf);break ;case TEST_SINGLE_STEP_SET_FEATURE : -/* unsupported for now */ +/* +* GetDescriptor SETUP request -> 15secs delay -> IN & STATUS +* +* Note, this test is only supported on root hubs since the +* SetPortFeature handling can only be done inside the HCD's +* hub_control callback function. +*/ +if (hub_udev != dev->bus->root_hub) { +dev_err (&intf->dev,"SINGLE_STEP_SET_FEATURE test only supported on root hub\n" ); +break ; + } + + ret =usb_control_msg (hub_udev,usb_sndctrlpipe (hub_udev,0 ), +USB_REQ_SET_FEATURE ,USB_RT_PORT , +USB_PORT_FEAT_TEST , + (6 <<8 ) | portnum, +NULL ,0 ,60 *1000 ); + +break ;default :dev_err (&intf->dev,"%s: unsupported PID: 0x%x\n" , __func__, test_pid);
Signature · 7 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 1 line · Jack Pham
From: Manu Gautam <[email protected]>
I don't seem to have a patch 1/2 from you, did it not get sent somehow?
thanks,
greg k-h
Re: [PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Hi Greg,
Quoted 1 line · Greg KH
I don't seem to have a patch 1/2 from you, did it not get sent somehow?
Here was patch 1/2: http://marc.info/?l=linux-usb&m=137282127113409&w=2
which you've applied to usb-next already as commit 1353aa53. I kept the sequence numbering in the subject as it was in response to the RFC version I originally sent which was the 2/2. Should I resend this as a standalone (i.e. with a revised subject tag) instead?
Jack
Signature · 3 lines
Employee of Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Re: [PATCH 2/2] usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET
Quoted 10 lines · Jack Pham
Hi Greg,
Quoted 1 line · Greg KH
I don't seem to have a patch 1/2 from you, did it not get sent somehow?
Here was patch 1/2: http://marc.info/?l=linux-usb&m=137282127113409&w=2
which you've applied to usb-next already as commit1353aa53. I kept the sequence numbering in the subject as it was in response to the RFC version I originally sent which was the 2/2. Should I resend this as a standalone (i.e. with a revised subject tag) instead?
Ah, ok. Given that this was about 500+ patches ago in my review queue, I didn't remember it at all :)
In the future, when resending something like this, when the 1/2 patch is already accepted, just send it as 1/1, as there is no patch it depends on outstanding.
thanks,
greg k-h