Date: Fri, 03 Jan 2014 14:48:59 +0100 From: Hans Petter Selasky <hps@bitfrost.no> To: "Lundberg, Johannes" <johannes@brilliantservice.co.jp> Cc: "freebsd-usb@freebsd.org" <freebsd-usb@freebsd.org> Subject: Re: usb_interrupt_read speed different on USB 2 vs 3 port. Message-ID: <52C6BFCB.9080300@bitfrost.no> In-Reply-To: <CAASDrVnA5Gv3svFrrkoH0kdRcEec2O7YvG=rDdPf-8rOVD6PkQ@mail.gmail.com> References: <CAASDrV=Onk2VbnSp-1s=XxJ0b89-M8--NWOeFPXjSgMLC8sVEA@mail.gmail.com> <52C6B770.401@bitfrost.no> <CAASDrVnA5Gv3svFrrkoH0kdRcEec2O7YvG=rDdPf-8rOVD6PkQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, For USB 3.0, sys/dev/usb/controller/xhci.c, the interval is set by: switch (type) { case UE_INTERRUPT: if (fps_shift > 3) fps_shift--; temp |= XHCI_EPCTX_0_IVAL_SET(fps_shift); break; case UE_ISOCHRONOUS: Add some prints to the kernel and print "fps_shift" in the UE_INTERRUPT case. The value has unit 125 * (2**fps_shift) us. The call is: usb_interrupt_read(devh, 0x00000083, buf, 0x000002a, 1000); BTW: Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0083 <IN> bmAttributes = 0x0003 <INTERRUPT> wMaxPacketSize = 0x002a bInterval = 0x000a ^^^^ 10ms I think for FULL speed (XHCI will use 16ms interval) bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0004 <OUT> bmAttributes = 0x0003 <INTERRUPT> wMaxPacketSize = 0x0040 bInterval = 0x000a ^^^^ 10ms I think for FULL speed bRefresh = 0x0000 bSynchAddress = 0x0000 So a round trip of 20ms is like expected. Maybe the EHCI driver will schedule a bit differently. If in the kernel, it is possible to override this value. --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52C6BFCB.9080300>