Re: [PATCH] Airprime driver improvements to allow full speed EvDO transfers

Sergei Organov
2006-07-11T18:31:59Z

Andy Gay <andy@andynet.net> writes:
> Adapted from an earlier patch by Greg KH <gregkh@suse.de>.
> That patch added multiple read urbs and larger transfer buffers to allow
> data transfers at full EvDO speed.

Below are two more problems with the patch, one of which existed in the
original Greg's patch resulting in return with "Message too long"
(EMSGSIZE) from driver's open() function.

[...]

> + /* something happened, so free up the memory for this urb /*

There should be '*/' at the end of this line, not '/*', otherwise the
driver even doesn't compile.

[...]
> +static int airprime_open(struct usb_serial_port *port, struct file *filp)
> +{
[...]
> + usb_fill_bulk_urb(urb, serial->dev,
> + usb_rcvbulkpipe(serial->dev,
> + port->bulk_out_endpointAddress),

Here, it should obviously be port->bulk_in_endpointAddress, not
port->bulk_out_endpointAddress, otherwise devices that have endpoints
numeration like, say 0x01-out, 0x82-in (unlike more usual usual
0x01-out, 0x81-in), won't work returning -EMSGSIZE from open().

After these fixes, I've been able to run the driver with my own USB
device and achieved about 320 Kbytes/s read speed. That's still not very
exciting as I have another driver here in development that seems to be
able to do about 650 Kbytes/s with the same device.

--
Sergei.