Hi Oliver, just tested your patch and it works properly. I get over 100 kB/s too. Thanks! Best regards Michal 2011/7/12 Oliver Neukum <oneukum@xxxxxxx>: > Am Freitag, 8. Juli 2011, 17:55:59 schrieb Greg KH: >> On Fri, Jul 08, 2011 at 03:28:00PM +0200, Michal Hybner wrote: > >> > Any advices how to solve this? If the bottleneck is really the buffer >> > size, isn't it possible to set it somehow in the 'ipw' driver? Maybe >> > it is simple to find, but I can't code :-(. Few days ago I found this >> > patch[1] - maybe something similar could be done for 'ipw' driver too? >> > 'lsusb -v' and 'lspci -v' attached. >> >> Yes, a patch like that one should help out a lot here, are you able to >> test patches? >> >> If so, can you try the one below and let me know if it helps you out or >> not? > > Hi, > > if you are testing, could you also test this patch? > > Regards > Oliver > > From 2d487c10136f76cf3705881d34868e8592839cfe Mon Sep 17 00:00:00 2001 > From: Oliver Neukum <oliver@xxxxxxxxxx> > Date: Tue, 12 Jul 2011 15:36:51 +0200 > Subject: [PATCH] USB: ipw: convert to usb-wwan framework > > This patch allows the ipw driver to use the multibuffer > infrastructure of usb-wwan. This improves speed. > > Signed-off-by: Oliver Neukum<oneukum@xxxxxxx> > --- > drivers/usb/serial/ipw.c | 33 +++++++++++++++++++++++++++++++-- > 1 files changed, 31 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/serial/ipw.c b/drivers/usb/serial/ipw.c > index ca77e88..5170799 100644 > --- a/drivers/usb/serial/ipw.c > +++ b/drivers/usb/serial/ipw.c > @@ -47,6 +47,7 @@ > #include <linux/usb.h> > #include <linux/usb/serial.h> > #include <linux/uaccess.h> > +#include "usb-wwan.h" > > /* > * Version Information > @@ -185,7 +186,7 @@ static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port) > > /*--2: Start reading from the device */ > dbg("%s: setting up bulk read callback", __func__); > - usb_serial_generic_open(tty, port); > + usb_wwan_open(tty, port); > > /*--3: Tell the modem to open the floodgates on the rx bulk channel */ > dbg("%s:asking modem for RxRead (RXBULK_ON)", __func__); > @@ -219,6 +220,29 @@ static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port) > return 0; > } > > +/* fake probe - only to allocate data structures */ > +static int ipw_probe(struct usb_serial *serial, const struct usb_device_id *id) > +{ > + struct usb_wwan_intf_private *data; > + > + data = kzalloc(sizeof(struct usb_wwan_intf_private), GFP_KERNEL); > + if (!data) > + return -ENOMEM; > + > + spin_lock_init(&data->susp_lock); > + usb_set_serial_data(serial, data); > + return 0; > +} > + > +static void ipw_release(struct usb_serial *serial) > +{ > + struct usb_wwan_intf_private *data = usb_get_serial_data(serial); > + > + usb_wwan_release(serial); > + usb_set_serial_data(serial, NULL); > + kfree(data); > +} > + > static void ipw_dtr_rts(struct usb_serial_port *port, int on) > { > struct usb_device *dev = port->serial->dev; > @@ -285,7 +309,7 @@ static void ipw_close(struct usb_serial_port *port) > dev_err(&port->dev, > "Disabling bulk RxRead failed (error = %d)\n", result); > > - usb_serial_generic_close(port); > + usb_wwan_close(port); > } > > static struct usb_serial_driver ipw_device = { > @@ -297,9 +321,14 @@ static struct usb_serial_driver ipw_device = { > .usb_driver = &usb_ipw_driver, > .id_table = usb_ipw_ids, > .num_ports = 1, > + .disconnect = usb_wwan_disconnect, > .open = ipw_open, > .close = ipw_close, > + .probe = ipw_probe, > + .attach = usb_wwan_startup, > + .release = ipw_release, > .dtr_rts = ipw_dtr_rts, > + .write = usb_wwan_write, > }; > > > -- > 1.7.1 > > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html