Skip to content

Commit

Permalink
USB: ir-usb: allow custom bulk buffer size without reallocation
Browse files Browse the repository at this point in the history
Use usb_serial_driver bulk_in_size and bulk_out_size to make sure
buffers of appropriate sizes are allocated in the first place rather than
reallocating them at every open.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Johan Hovold authored and Greg Kroah-Hartman committed May 20, 2010
1 parent 2ff78c0 commit 6f6ed69
Showing 1 changed file with 5 additions and 25 deletions.
30 changes: 5 additions & 25 deletions drivers/usb/serial/ir-usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,35 +297,10 @@ static int ir_startup(struct usb_serial *serial)

static int ir_open(struct tty_struct *tty, struct usb_serial_port *port)
{
char *buffer;
int result = 0;

dbg("%s - port %d", __func__, port->number);

if (buffer_size) {
/* override the default buffer sizes */
buffer = kmalloc(buffer_size, GFP_KERNEL);
if (!buffer) {
dev_err(&port->dev, "%s - out of memory.\n", __func__);
return -ENOMEM;
}
kfree(port->read_urb->transfer_buffer);
port->read_urb->transfer_buffer = buffer;
port->read_urb->transfer_buffer_length = buffer_size;
port->bulk_in_buffer = buffer;

buffer = kmalloc(buffer_size, GFP_KERNEL);
if (!buffer) {
dev_err(&port->dev, "%s - out of memory.\n", __func__);
return -ENOMEM;
}
kfree(port->write_urb->transfer_buffer);
port->write_urb->transfer_buffer = buffer;
port->write_urb->transfer_buffer_length = buffer_size;
port->bulk_out_buffer = buffer;
port->bulk_out_size = buffer_size;
}

/* Start reading from the device */
usb_fill_bulk_urb(
port->read_urb,
Expand Down Expand Up @@ -585,6 +560,11 @@ static int __init ir_init(void)
{
int retval;

if (buffer_size) {
ir_device.bulk_in_size = buffer_size;
ir_device.bulk_out_size = buffer_size;
}

retval = usb_serial_register(&ir_device);
if (retval)
goto failed_usb_serial_register;
Expand Down

0 comments on commit 6f6ed69

Please sign in to comment.