diff options
author | Johan Hovold <jhovold@gmail.com> | 2010-05-05 23:58:13 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-20 22:21:42 +0200 |
commit | c23e5fc1f7dba228558b4a46e68f7af89515b13c (patch) | |
tree | add71b10dc2275c98d3439fe3756829c2ec0afc9 /drivers/usb/serial/aircable.c | |
parent | USB: serial: reimplement generic fifo-based writes (diff) | |
download | linux-c23e5fc1f7dba228558b4a46e68f7af89515b13c.tar.xz linux-c23e5fc1f7dba228558b4a46e68f7af89515b13c.zip |
USB: serial: remove multi-urb write from generic driver
Remove multi-urb write from the generic driver and simplify the
prepare_write_buffer prototype:
int (*prepare_write_buffer)(struct usb_serial_port *port,
void *dest, size_t size);
The default implementation simply fills dest with data from port write
fifo but drivers can override it if they need to process the outgoing
data (e.g. add headers).
Turn ftdi_sio into a generic fifo-based driver, which lowers CPU usage
significantly for small writes while retaining maximum throughput.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/serial/aircable.c')
-rw-r--r-- | drivers/usb/serial/aircable.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/usb/serial/aircable.c b/drivers/usb/serial/aircable.c index cac5162937b3..8a990a763c21 100644 --- a/drivers/usb/serial/aircable.c +++ b/drivers/usb/serial/aircable.c @@ -84,9 +84,10 @@ static const struct usb_device_id id_table[] = { MODULE_DEVICE_TABLE(usb, id_table); static int aircable_prepare_write_buffer(struct usb_serial_port *port, - void **dest, size_t size, const void *src, size_t count) + void *dest, size_t size) { - unsigned char *buf = *dest; + int count; + unsigned char *buf = dest; count = kfifo_out_locked(&port->write_fifo, buf + HCI_HEADER_LENGTH, size - HCI_HEADER_LENGTH, &port->lock); @@ -185,8 +186,6 @@ static struct usb_serial_driver aircable_device = { .id_table = id_table, .num_ports = 1, .bulk_out_size = HCI_COMPLETE_FRAME, - /* Must modify prepare_write_buffer if multi_urb_write is changed. */ - .multi_urb_write = 0, .probe = aircable_probe, .process_read_urb = aircable_process_read_urb, .prepare_write_buffer = aircable_prepare_write_buffer, |