Hi, Peter Chen <peter.chen@xxxxxxx> writes: > >> 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. That can be done as a separate patch on top of this. No issues. Also, we're pretty close to -rc7, there won't be enough time to get your stuff ready for v5.1. -- balbi
Attachment:
signature.asc
Description: PGP signature