> 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.chen@xxxxxxx> > 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 <pawell@xxxxxxxxxxx> > Signed-off-by: Peter Chen <peter.chen@xxxxxxx> > Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> > --- > 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