From 6ef832f40d7e647f86e93a6bbfdff8e583599f23 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna Date: Fri, 27 Jan 2012 16:29:21 -0800 Subject: [PATCH] usb: Increase USB buffer size to match 9x15 buffer sizes USB S/W on 9x15 is designed to handle 65K packet size for flashless boot and efs-sync functions. Match buffers on 8064 usb host mode driver to achieve better throughput. Change-Id: I6f5b50d08ad4ea59e770e2a3e8ad00d944f05e54 Signed-off-by: Vamsi Krishna --- drivers/usb/serial/usb-wwan.h | 8 ++++---- drivers/usb/serial/usb_wwan.c | 9 ++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/usb/serial/usb-wwan.h b/drivers/usb/serial/usb-wwan.h index c47b6ec0306..de8d4905263 100644 --- a/drivers/usb/serial/usb-wwan.h +++ b/drivers/usb/serial/usb-wwan.h @@ -31,10 +31,10 @@ extern int usb_wwan_resume(struct usb_serial *serial); /* per port private data */ -#define N_IN_URB 4 -#define N_OUT_URB 4 -#define IN_BUFLEN 4096 -#define OUT_BUFLEN 4096 +#define N_IN_URB 5 +#define N_OUT_URB 5 +#define IN_BUFLEN 65536 +#define OUT_BUFLEN 65536 struct usb_wwan_intf_private { spinlock_t susp_lock; diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c index fcf4b086e7d..2a081014d60 100644 --- a/drivers/usb/serial/usb_wwan.c +++ b/drivers/usb/serial/usb_wwan.c @@ -410,6 +410,7 @@ int usb_wwan_open(struct tty_struct *tty, struct usb_serial_port *port) tty->raw = 1; tty->real_raw = 1; + set_bit(TTY_NO_WRITE_SPLIT, &tty->flags); dbg("%s", __func__); /* Start reading from the IN endpoint */ @@ -552,7 +553,7 @@ int usb_wwan_startup(struct usb_serial *serial) init_usb_anchor(&portdata->delayed); for (j = 0; j < N_IN_URB; j++) { - buffer = (u8 *) __get_free_page(GFP_KERNEL); + buffer = kmalloc(IN_BUFLEN, GFP_KERNEL); if (!buffer) goto bail_out_error; portdata->in_buffer[j] = buffer; @@ -581,8 +582,7 @@ bail_out_error2: kfree(portdata->out_buffer[j]); bail_out_error: for (j = 0; j < N_IN_URB; j++) - if (portdata->in_buffer[j]) - free_page((unsigned long)portdata->in_buffer[j]); + kfree(portdata->in_buffer[j]); kfree(portdata); return 1; } @@ -628,8 +628,7 @@ void usb_wwan_release(struct usb_serial *serial) for (j = 0; j < N_IN_URB; j++) { usb_free_urb(portdata->in_urbs[j]); - free_page((unsigned long) - portdata->in_buffer[j]); + kfree(portdata->in_buffer[j]); portdata->in_urbs[j] = NULL; } for (j = 0; j < N_OUT_URB; j++) {