Date: Tue, 26 Nov 2019 09:19:00 +0100 From: Hans Petter Selasky <hps@selasky.org> To: Farhan Khan <farhan@farhan.codes>, freebsd-usb@freebsd.org Subject: Re: Matching 'struct usb_config' with usbconfig Message-ID: <f30569af-6fcd-a769-a997-c251490cd5e2@selasky.org> In-Reply-To: <b89cfdf5-c615-41b0-b791-e92606da31b1@www.fastmail.com> References: <b89cfdf5-c615-41b0-b791-e92606da31b1@www.fastmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2019-11-26 00:21, Farhan Khan wrote: > Hi all, > > I have a clarification question about the USB protocol. > > I ran "lsusb -v" (same as usbconfig dump_info) and saw that a device's wMaxPacketSize was 0x0200 (512 bytes). However, the "struct usb_config" seems to set the bufsize field as 16384 (16 * 1024). What is the reason for this difference? Also, why would the number of usb_config Endpoints and the usb_config struct differ? Hi, The buffer size is usually larger to avoid buffer underruns, but should be a multiplum of the wMaxPacketSize. We have an own flag for that, proxy buffer. usb_config is usually a sub-set of the endpoints the device has, and for sake of double buffering you may repeat the same entry. --HPS > > Full context, the device is a Realtek RTL8188EU. The USB configuration variable is rtwn_config_common, as defined in sys/dev/rtwn/usb/rtwn_usb_ep.c. The bufsize is set to RTWN_USB_TXBUFSZ, which is defined as: > #define RTWN_USB_TXBUFSZ (16 * 1024) > > Also, note that there are 3 Endpoints, but 5 elements in the rtwn_config_common structure. What explains this? > > Thanks! And see configuration below: > > -----BEGIN COMMAND BLOCK----- > Bus 003 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 0 (Defined at Interface level) > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > idVendor 0x0bda Realtek Semiconductor Corp. > idProduct 0x8179 RTL8188EUS 802.11n Wireless Network Adapter > bcdDevice 0.00 > iManufacturer 1 > iProduct 2 > iSerial 3 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 39 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0xa0 > (Bus Powered) > Remote Wakeup > MaxPower 500mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 3 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 255 Vendor Specific Protocol > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x03 EP 3 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 0 > -----END COMMAND BLOCK----- > > > > -- > Farhan Khan > PGP Fingerprint: 1312 89CE 663E 1EB2 179C 1C83 C41D 2281 F8DA C0DE > > _______________________________________________ > freebsd-usb@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-usb > To unsubscribe, send any mail to "freebsd-usb-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f30569af-6fcd-a769-a997-c251490cd5e2>