> This is a note to let you know that I've just added the patch titled
> 
>     usb: misc: usbtest: add super-speed isoc support
> 
> to my usb git tree which can be found at
>     git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
> in the usb-testing branch.
> 
> The patch will show up in the next release of the linux-next tree (usually 
> sometime
> within the next 24 hours during the week.)
> 
> The patch will be merged to the usb-next branch sometime soon, after it passes
> testing, and the merge window is open.
> 
> If you have any questions about this process, please let me know.
> 
> 
> From 0d1ec194721f844a6b20f7f4854332adcebc6fb9 Mon Sep 17 00:00:00 2001
> From: Peter Chen <peter.c...@nxp.com>
> Date: Tue, 12 Feb 2019 08:57:27 +0000
> Subject: usb: misc: usbtest: add super-speed isoc support
> 
> The calculation of packet number within microframe is different between 
> high-speed
> and super-speed endpoint, we add support for super-speed in this patch.
> 
> Cc: Pawel Laszczak <paw...@cadence.com>
> Signed-off-by: Peter Chen <peter.c...@nxp.com>
> Signed-off-by: Felipe Balbi <felipe.ba...@linux.intel.com>
> ---
>  drivers/usb/misc/usbtest.c | 28 ++++++++++++++++++++++++----
>  1 file changed, 24 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index
> c7f82310e73e..98ada1a3425c 100644
> --- a/drivers/usb/misc/usbtest.c
> +++ b/drivers/usb/misc/usbtest.c
> @@ -347,6 +347,14 @@ static unsigned get_maxpacket(struct usb_device *udev,
> int pipe)
>       return le16_to_cpup(&ep->desc.wMaxPacketSize);
>  }
> 
> +static int ss_isoc_get_packet_num(struct usb_device *udev, int pipe) {
> +     struct usb_host_endpoint *ep = usb_pipe_endpoint(udev, pipe);
> +
> +     return USB_SS_MULT(ep->ss_ep_comp.bmAttributes)
> +             * (1 + ep->ss_ep_comp.bMaxBurst);
> +}
> +
>  static void simple_fill_buf(struct urb *urb)  {
>       unsigned        i;
> @@ -1976,8 +1984,13 @@ static struct urb *iso_alloc_urb(
> 
>       if (bytes < 0 || !desc)
>               return NULL;
> +
>       maxp = usb_endpoint_maxp(desc);
> -     maxp *= usb_endpoint_maxp_mult(desc);
> +     if (udev->speed >= USB_SPEED_SUPER)
> +             maxp *= ss_isoc_get_packet_num(udev, pipe);
> +     else
> +             maxp *= usb_endpoint_maxp_mult(desc);
> +
>       packets = DIV_ROUND_UP(bytes, maxp);
> 
>       urb = usb_alloc_urb(packets, GFP_KERNEL); @@ -2065,17 +2078,24 @@
> test_queue(struct usbtest_dev *dev, struct usbtest_param_32 *param,
>       packets *= param->iterations;
> 
>       if (context.is_iso) {
> +             int transaction_num;
> +
> +             if (udev->speed >= USB_SPEED_SUPER)
> +                     transaction_num = ss_isoc_get_packet_num(udev, pipe);
> +             else
> +                     transaction_num = usb_endpoint_maxp_mult(desc);
> +
>               dev_info(&dev->intf->dev,
>                       "iso period %d %sframes, wMaxPacket %d,
> transactions: %d\n",
>                       1 << (desc->bInterval - 1),
> -                     (udev->speed == USB_SPEED_HIGH) ? "micro" : "",
> +                     (udev->speed >= USB_SPEED_HIGH) ? "micro" : "",
>                       usb_endpoint_maxp(desc),
> -                     usb_endpoint_maxp_mult(desc));
> +                     transaction_num);
> 
>               dev_info(&dev->intf->dev,
>                       "total %lu msec (%lu packets)\n",
>                       (packets * (1 << (desc->bInterval - 1)))
> -                             / ((udev->speed == USB_SPEED_HIGH) ? 8 : 1),
> +                             / ((udev->speed >= USB_SPEED_HIGH) ? 8 : 1),
>                       packets);
>       }
> 
> --

Hi Greg, Alan suggests ss_isoc_get_packet_num can be moved to ch9.h, and I 
finished
the patch set, but my git has some issues at company today, so still can't send 
out. Could you
drop this patch? Sorry about that.

Peter

Reply via email to