* [Qemu-devel] [PATCH, RESEND] usb: increase buffer for USB control requests @ 2010-01-24 16:34 Christian Krause 2010-01-24 21:20 ` [Qemu-devel] " Michael S. Tsirkin 2010-02-06 16:15 ` [Qemu-devel] " Aurelien Jarno 0 siblings, 2 replies; 4+ messages in thread From: Christian Krause @ 2010-01-24 16:34 UTC (permalink / raw) To: qemu-devel Resend. The patch was already sent to the list on 2009-12-11. It would be great if it could be reviewed and applied. Thank you very much in advance. The WLAN USB stick ZyXEL NWD271N (0586:3417) uses very large usb control transfers of more than 2048 bytes which won't fit into the buffer of the ctrl_struct. This results in an error message "husb: ctrl buffer too small" and a non-working device. Increasing the buffer size to 8192 seems to be a safe choice. Signed-off-by: Christian Krause <chkr@plauener.de> --- usb-linux.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/usb-linux.c b/usb-linux.c index 285ac22..d205bd3 100644 --- a/usb-linux.c +++ b/usb-linux.c @@ -113,7 +113,7 @@ struct ctrl_struct { uint16_t offset; uint8_t state; struct usb_ctrlrequest req; - uint8_t buffer[2048]; + uint8_t buffer[8192]; }; struct USBAutoFilter { -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] Re: [PATCH, RESEND] usb: increase buffer for USB control requests 2010-01-24 16:34 [Qemu-devel] [PATCH, RESEND] usb: increase buffer for USB control requests Christian Krause @ 2010-01-24 21:20 ` Michael S. Tsirkin 2010-01-25 22:51 ` Christian Krause 2010-02-06 16:15 ` [Qemu-devel] " Aurelien Jarno 1 sibling, 1 reply; 4+ messages in thread From: Michael S. Tsirkin @ 2010-01-24 21:20 UTC (permalink / raw) To: Christian Krause; +Cc: qemu-devel On Sun, Jan 24, 2010 at 05:34:52PM +0100, Christian Krause wrote: > Resend. The patch was already sent to the list on 2009-12-11. It would > be great if it could be reviewed and applied. Thank you very much > in advance. > > The WLAN USB stick ZyXEL NWD271N (0586:3417) uses very large > usb control transfers of more than 2048 bytes which won't fit > into the buffer of the ctrl_struct. This results in an error message > "husb: ctrl buffer too small" and a non-working device. > Increasing the buffer size to 8192 seems to be a safe choice. > > Signed-off-by: Christian Krause <chkr@plauener.de> Are there any drawbacks to make\ing the buffer larger? If no, let's just make it 64K? IIUC that's a maximum length for control transfers as length is a 16 bit field. > --- > usb-linux.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/usb-linux.c b/usb-linux.c > index 285ac22..d205bd3 100644 > --- a/usb-linux.c > +++ b/usb-linux.c > @@ -113,7 +113,7 @@ struct ctrl_struct { > uint16_t offset; > uint8_t state; > struct usb_ctrlrequest req; > - uint8_t buffer[2048]; > + uint8_t buffer[8192]; > }; > > struct USBAutoFilter { > -- > 1.6.2.5 > > ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] Re: [PATCH, RESEND] usb: increase buffer for USB control requests 2010-01-24 21:20 ` [Qemu-devel] " Michael S. Tsirkin @ 2010-01-25 22:51 ` Christian Krause 0 siblings, 0 replies; 4+ messages in thread From: Christian Krause @ 2010-01-25 22:51 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: qemu-devel Hello Michael, On 01/24/2010 10:20 PM, Michael S. Tsirkin wrote: > On Sun, Jan 24, 2010 at 05:34:52PM +0100, Christian Krause wrote: >> Resend. The patch was already sent to the list on 2009-12-11. It would >> be great if it could be reviewed and applied. Thank you very much >> in advance. >> >> The WLAN USB stick ZyXEL NWD271N (0586:3417) uses very large >> usb control transfers of more than 2048 bytes which won't fit >> into the buffer of the ctrl_struct. This results in an error message >> "husb: ctrl buffer too small" and a non-working device. >> Increasing the buffer size to 8192 seems to be a safe choice. >> >> Signed-off-by: Christian Krause <chkr@plauener.de> > > Are there any drawbacks to make\ing the buffer larger? I've roughly looked into the source code of usb-linux.c and I don't see an issue if the buffer would be larger: - if the buffer is used to get data via USBDEVFS_SUBMITURB from the kernel then the check: if (buffer_len > sizeof(s->ctrl.buffer)) { fprintf(stderr, "husb: ctrl buffer too small (%u > %zu)\n", buffer_len, sizeof(s->ctrl.buffer)); return USB_RET_STALL; } already ensures that the we only supply a buffer_len which matches the buffer - on the other hand, when we copy data out of the buffer into the data structures from the HC, then there is also a check that we only copy as much data as the HC requests: if (len > p->len) len = p->len; memcpy(p->data, s->ctrl.buffer + s->ctrl.offset, len); > If no, let's just make it 64K? IIUC that's a maximum > length for control transfers as length is a 16 bit field. I think that's OK since it looks like that the increase of memory would only be 64k per usb host device. Best regards, Christian >> --- >> usb-linux.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/usb-linux.c b/usb-linux.c >> index 285ac22..d205bd3 100644 >> --- a/usb-linux.c >> +++ b/usb-linux.c >> @@ -113,7 +113,7 @@ struct ctrl_struct { >> uint16_t offset; >> uint8_t state; >> struct usb_ctrlrequest req; >> - uint8_t buffer[2048]; >> + uint8_t buffer[8192]; >> }; >> >> struct USBAutoFilter { >> -- >> 1.6.2.5 >> >> > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH, RESEND] usb: increase buffer for USB control requests 2010-01-24 16:34 [Qemu-devel] [PATCH, RESEND] usb: increase buffer for USB control requests Christian Krause 2010-01-24 21:20 ` [Qemu-devel] " Michael S. Tsirkin @ 2010-02-06 16:15 ` Aurelien Jarno 1 sibling, 0 replies; 4+ messages in thread From: Aurelien Jarno @ 2010-02-06 16:15 UTC (permalink / raw) To: Christian Krause; +Cc: qemu-devel On Sun, Jan 24, 2010 at 05:34:52PM +0100, Christian Krause wrote: > Resend. The patch was already sent to the list on 2009-12-11. It would > be great if it could be reviewed and applied. Thank you very much > in advance. > > The WLAN USB stick ZyXEL NWD271N (0586:3417) uses very large > usb control transfers of more than 2048 bytes which won't fit > into the buffer of the ctrl_struct. This results in an error message > "husb: ctrl buffer too small" and a non-working device. > Increasing the buffer size to 8192 seems to be a safe choice. Thanks, applied. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-02-06 16:16 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-01-24 16:34 [Qemu-devel] [PATCH, RESEND] usb: increase buffer for USB control requests Christian Krause 2010-01-24 21:20 ` [Qemu-devel] " Michael S. Tsirkin 2010-01-25 22:51 ` Christian Krause 2010-02-06 16:15 ` [Qemu-devel] " Aurelien Jarno
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).