26 Jun, 2009

1 commit

  • This commit 335f8514f200e63d689113d29cb7253a5c282967 has stopped
    properly checking if there is any usb serial associated with the tty in
    the close function. It happens the close function is called by releasing
    the terminal right after opening the device fails.

    As an example, open fails with a non-existing device, when probe has
    never been called, because the device has never been plugged. This is
    common in systems with static modules and no udev.

    Signed-off-by: Thadeu Lima de Souza Cascardo
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Thadeu Lima de Souza Cascardo
     

16 Jun, 2009

24 commits

  • This patch (as1254) splits up the shutdown method of usb_serial_driver
    into a disconnect and a release method.

    The problem is that the usb-serial core was calling shutdown during
    disconnect handling, but drivers didn't expect it to be called until
    after all the open file references had been closed. The result was an
    oops when the close method tried to use memory that had been
    deallocated by shutdown.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This patch (as1253) prevents the usb-serial core from calling a
    driver's port_probe and port_remove methods more than once per port.
    It also removes some unnecessary try_module_get() calls and adds a
    missing port_remove method call in a failure path.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • The only time a sysrq should get processed is if the attached device
    is a console. This is intended to protect sysrq execution on a host
    connected with a terminal program.

    Here is the problem scenario:

    host A host B

    Host A is using mincom and a usb pl2303 device to connect to host b
    which is a linux system with a usb pl2303 device acting as the serial
    console. When host B is rebooted the pl2303 emits random junk
    characters on reset. These character sequences contain serial break
    signals most of the time and when translated to a sysrq have caused
    host A to get random processes killed, reboots or power down.

    It is true that in this setup with this patch host B might still have
    the same problem as host A if you reboot host A. In most cases host A
    is a development host which seldom gets rebooted, and you could turn
    off sysrq temporarily on host B if you need to reboot host A.

    Signed-off-by: Jason Wessel
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     
  • Add callbacks to process the sysrq when using a pl2303 usb device as a
    console.

    Signed-off-by: Jason Wessel
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     
  • drivers/usb/serial/sierra.c: In function 'sierra_write':
    drivers/usb/serial/sierra.c:375: warning: format '%d' expects type 'int', but argument 5 has type 'size_t'

    Signed-off-by: Andrew Morton
    Cc: Elina Pasheva
    Cc: Rory Filer
    Signed-off-by: Greg Kroah-Hartman

    Andrew Morton
     
  • - Removed potential kernel oops from sierra_calc_num_ports() function.
    Calling this function twice would likely have caused an oops because
    the function releases allocated memory after the first call.
    - Modified sierra_probe() function to reflect the changes in
    sierra_calc_num_ports().

    Signed-off-by: Elina Pasheva
    Signed-off-by: Greg Kroah-Hartman

    Elina Pasheva
     
  • - Fixed a problem when re-submitting urb from interrupt callback in
    function sierra_instat_callback(). This suppresses also issuing of
    error messages in /var/log/kern.log
    - Removed redundant debug message at the beginning of
    sierra_instat_callback() function
    - Changed a debug message to be an error message

    Signed-off-by: Elina Pasheva
    Signed-off-by: Greg Kroah-Hartman

    Elina Pasheva
     
  • - Fixed a problem with transferring packets with size a multiple of Bulk
    Xfer size in function sierra_write(). Added transfer flag
    URB_ZERO_PACKET before submitting the urb to trigger Zero-length data
    transfer when packet size is a multiple of Bulk Xfer.

    Signed-off-by: Elina Pasheva
    Signed-off-by: Greg Kroah-Hartman

    Elina Pasheva
     
  • Change driver to make use of the new functions in
    include/linux/usb/serial.h so as to allow the driver to handle the
    sysrq

    Signed-off-by: Jason Wessel
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     
  • The usb_debug driver was modified to implement serial break handling
    by using a "magic" data packet comprised of the sequence:

    0x00 0xff 0x01 0xfe 0x00 0xfe 0x01 0xff

    When the tty layer requests a serial break the usb_debug driver sends
    the magic packet. On the receiving side the magic packet is thrown
    away or a sysrq is activated depending on what kernel .config options
    have been set.

    The generic serial driver was modified as well as the usb serial
    headers to generically implement sysrq processing in the same way the
    non usb uart based drivers implement the sysrq handling. This will
    allow other usb serial devices to implement sysrq handling as desired.

    The new usb serial functions are named similarly and implemented
    similarly to the uart functions as follows:

    usb_serial_handle_break uart_handle_break
    usb_serial_handle_sysrq_char uart_handle_sysrq_char

    Signed-off-by: Jason Wessel
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     
  • Alan Stern commented that the private driver counts must be updated
    regard less of the status return on the urb when the write call back
    is executed.

    This patch alters the behavior to update the private driver counts by
    simply moving the status check to after the driver count update.

    Signed-off-by: Jason Wessel
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     
  • The usb_debug driver, when used as the console, will always fail to
    insert the carriage return and new line sequence as well as randomly
    drop console output. This is a result of only having the single
    write_urb and that the tty layer will have a lock that prevents the
    processing of the back to back urb requests.

    The solution is to allow more than one urb to be outstanding and have
    a slightly deeper transmit queue. The idea and some code is borrowed
    from the ftdi_sio usb driver.

    The generic usb serial driver was modified so as to allow the classic
    method of 1 write urb, or a multi write urb scheme with N allowed
    outstanding urbs where N is controlled by max_in_flight_urbs. When
    max_in_flight_urbs in a "struct usb_serial_driver" is non zero the
    multi write urb scheme will be used.

    The size of 4000 was selected for the usb_debug driver so that the
    driver lowers possibility of losing the queued console messages during
    the kernel startup.

    Signed-off-by: Jason Wessel
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     
  • This patch fixes a problem in function sierra_indat_callback() which
    would stop receiving traffic from a modem if a number of URB failures
    occur. Failed URBs are not resubmitted for the next read and there is
    only a limited number of URBs allocated for the IN path. After this
    number of failures, the receive path stops working on a particular
    interface.

    Signed-off-by: Elina Pasheva

    Elina Pasheva
     
  • - Updated Copyright notice with new authors names
    - Version number set to 1.3.6
    - Added a MAX_TRANSFER constant following Greg Kroah-Hartman's
    recommended setting of PAGE_SIZE-512 for USB transfer buffers and
    modified accordingly sierra_write() function.

    Signed-off-by: Elina Pasheva
    Signed-off-by: Greg Kroah-Hartman

    Elina Pasheva
     
  • The following patch removes the call to usb_reset_device which may occur
    when closing the driver by implementing a new session initialization
    code based on the method used by gpsbabel.

    The patch is against linux-2.6.30-rc3-git1.

    Signed-off-by: Hermann Kneissel herkne@users.sourceforge.net
    Signed-off-by: Greg Kroah-Hartman

    Hermann Kneissel
     
  • Identify the Novatel MC760/U760/USB760 in the option USB serial driver.

    Signed-off-by: Richard Laager
    Signed-off-by: Greg Kroah-Hartman

    Richard Laager
     
  • - Version number set to 1.3.5
    - Added "\n" at the end of each string in dev_dbg() code to improve the debug
    information visibility. Without this change the debug logs are very
    difficult to read.

    Signed-off-by: Elina Pasheva
    Signed-off-by: Greg Kroah-Hartman

    Elina Pasheva
     
  • - Version number set to 1.3.4
    - Increased the number of input/output URBs for improved performance
    (numbers based on an measurement study triggered by a user request).
    We performed the testing using a network simulator that provided full
    speeds in the uplink and downlink directions and this combination of
    URBs provided the best throughput.

    Signed-off-by: Elina Pasheva
    Signed-off-by: Greg Kroah-Hartman

    Elina Pasheva
     
  • This patch removes all the unnecessary "\n"s that the debug print
    statements have, which result in everything appearing double spaced
    and unreadable in the logs.

    Signed-off-by: Tony Cook
    Signed-off-by: Greg Kroah-Hartman

    Tony Cook
     
  • D-Link DWN-652 in Modem mode exposes 3 interfaces
    - First one is the USB storage one
    - Second one is for both control and connection
    - Third one is unknown

    This patch avoids usb-storage trying to switch again when already in
    modem mode, and exposes only 2 ttyUSB instead of 3 by not attaching
    to the storage interface

    Signed-off-by: Pascal Terjan
    Signed-off-by: Greg Kroah-Hartman

    Pascal Terjan
     
  • Added a function to set the packet size to be used based on the value from the
    device endpoint descriptor. The FT2232H and FT4232H hi-speed devices will have
    wMaxPacketSize of 512 bytes when connected to a USB 2.0 hi-speed host, but will
    use alternative descriptors with wMaxPacketSize of 64 bytes if connected to a
    USB 1.1 host or hub. All other FTDI devices have wMaxPacketSize of 64 bytes,
    except some FT232R and FT245R devices which customers have mistakenly
    programmed to have wMaxPacketSize of 0 - this is an error and will be
    overridden to use wMaxPacketSize of 64 bytes. The packet size used is
    important as it determines where the driver removes the status bytes from the
    incoming data. If it is incorrect, it will lead to data corruption.

    Signed-off-by: Mark J. Adamson
    Signed-off-by: Greg Kroah-Hartman

    Mark Adamson
     
  • Added support for FTDI's USB 2.0 hi-speed devices - FT2232H (2
    interfaces) and FT4232H (4 interfaces), including a new baud rate
    calculation for these devices which can now achieve up to 12Mbaud by
    turning off a divide by 2.5 in the baud rate generator of the chips. In
    order to achieve baud rates of
    Signed-off-by: Greg Kroah-Hartman

    Mark Adamson
     
  • This patch adds support for the Toshiba HSDPA Minicard (which is just a
    rebranded Novatel EU870D) used in some Toshiba laptops.

    This is my first patch attempt, I hope I got the conventions right.

    Signed-off-by: Michele Valzelli
    Signed-off-by: Greg Kroah-Hartman

    Michele Valzelli
     
  • I would like to have added new device to usbserial/ftdi_sio driver.
    These ids used USB track device (http://www.l-and-b.dk/access_alt.html).
    They use differend device IDs, but it works as standard usb-serial
    conventer.

    From: Daniel Suchy
    Signed-off-by: Greg Kroah-Hartman

    Daniel Suchy
     

13 Jun, 2009

1 commit


11 Jun, 2009

13 commits

  • Interface blacklisting is necessary for non-serial interfaces that are handled
    by a different driver. The interface blacklisting is implemented in sierra
    driver per device. Each device in need of a blacklist has a static information
    array kept in the driver. This array contains the interface numbers that are
    blacklisted. The pointer for each blacklist array and the length
    of that blacklist are 'bundled' in data structure sierra_iface_info. A pointer
    to this information is set in id_table when the device is added to the id_table.

    The following is summary of changes we have made to sierra.c driver in
    this patch dealing with interface blacklisting support:
    - Added data structure sierra_iface_info and function is_blacklisted()
    to support blacklisting
    - Modified sierra_probe() to handle blacklisted interfaces accordingly
    - Improved comments in id_table
    - Added new device in id_table with blacklist interface support

    Signed-off-by: Elina Pasheva
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Elina Pasheva
     
  • [Folded from eight patches into one as the original set according to the
    author "All of the patches need to be applied to obtain a working product"
    so keeping them split seems unhelpful

    Merge fixes done versus other conflicting changes and moved the
    spin_lock_init from open to setup time -- Alan]

    Summary of the changes and code re-organization in this patch:

    - The memory for urbs is allocated and urbs are submitted only for the active
    interfaces (instead of pre-allocating these for all interfaces). This will
    save memory especially in the case of using composite devices.
    - The code has been re-organized and functionality has been extracted from
    sierra_startup(), sierra_shutdown(), sierra_open(), sierra_close() and added
    in helper functions sierra_release_urb(), sierra_stop_rx_urbs(),
    sierra_submit_rx_urbs() and sierra_setup_urb()

    - Added function sierra_release_urb() to free an urb and its transfer
    buffer.
    - Removed unecessary include file reference and comment.
    - Added function sierra_stop_rx_urbs() that takes care of the release of
    receive and interrupt urbs. This function is to be called by sierra_close()
    whenever an interface is de-activated.
    - Added new function sierra_submit_rx_urbs() that handles the submission of
    receive urbs and interrupt urbs (if any) during the interface activation.
    This function is to be called by sierra_open(). Added a second parameter to
    pass the memory allocation (as suggested by Oliver Neukum) so that this
    function can be used in post_reset() and resume().
    - Added new function sierra_setup_urb() that contains the functionality to
    allocate an urb, fill bulk urb using the supplied memory allocation flag
    and release urb upon error. Added parameter so that the caller pass the
    memory allocation flag for flexibility.
    - Moved sierra_close() before sierra_open() to resolve dependencies
    introduced by the code reorganization.
    - Modified sierra_close() to call sierra_stop_rx_urbs() and
    sierra_release_urb() functions added in previous patch.
    - Modified sierra_open() to call sierra_setup_urb() and sierra_submit_rx_urbs()
    functions; note urbs are allocated and submitted for each activated interface.
    - Modified sierra_startup() so that allocation of urbs happens whenever an
    interface is activated (urb allocation is moved to sierra_open()).
    - Modified sierra_shutdown() so that urbs are freed whenever an interface is
    de-activated (urb freeing moved to sierra_close() as shown in previous patch
    from the series)
    - Removed unecessary data structure from sierra_port_private_data
    - Suppress an entry in logs by not re-submitting an urb when usb_submit_urb()
    returns -EPERM, as this shows that usb_kill_urb() is running (as suggested by
    Oliver Neukum)

    Signed-off-by: Elina Pasheva
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Elina Pasheva
     
  • The various merges into the sierra driver inadvertently undid
    commit 212b8f0c3f5a2280bfa1d6ab13a6fe98552becaa by Elina Pasheva
    . Put it back so the OBEX port works again.

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • The new open/close logic handles DTR and friends, so don't do it in our own
    open routine as well.

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • This allows users to use the standard setserial command with this FT232
    feature as well as obscure chip specific interfaces we have now. We keep
    track of and respect the sysfs value for non-low-latency cases. In theory we
    could do smart stuff with VTIME and the like but this seems of questionable
    worth.

    Closes-bug: http://bugzilla.kernel.org/show_bug.cgi?id=9120
    Signed-off-by: Alan Cox

    Alan Cox
     
  • This patch replaces the string "CP2101" with "CP210x" within cp210x.c
    This is to reduce confusion about the fact that the driver is actually
    compatible with CP2101, CP2102 and CP2103 devices.

    Signed-off-by: Craig Shelley

    (Fixed some collisions merging)

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Craig Shelley
     
  • The CP210X driver was developed without official device specifications.
    This has lead to an incorrect assumption that all GET request codes are
    equal to the corresponding SET request code +1.
    This patch removes this incorrect assumption, and uses request code
    definitions based on the updated GPL driver from SiLabs.
    This modification is needed before extended functionality such as GPIO
    on CP2103 can be supported.

    Signed-off-by: Craig Shelley
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Craig Shelley
     
  • Signed-off-by: Craig Shelley
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Craig Shelley
     
  • Signed-off-by: Olivier Bornet
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Olivier Bornet
     
  • set_termios can now be used for setting the parity and the stopbits. This is
    needed to use with cards which use a different parity then the parity used at
    start (even).

    If the iuu_uart_baud function return an error, we will return the old_termios
    instead of the new one.

    Signed-off-by: Olivier Bornet

    This was then revamped to use the various helpers, not copy non-hardware
    bits any to add mark/space parity and csize reporting

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Olivier Bornet
     
  • Signed-off-by: Olivier Bornet
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Olivier Bornet
     
  • Bring in the relevant bits of the 0.9 vendor driver.

    Signed-off-by: Olivier Bornet
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Olivier Bornet
     
  • This allows us to clean stuff up, but is probably also going to cause
    some app breakage with buggy apps as we now implement proper POSIX behaviour
    for USB ports matching all the other ports. This does also mean other apps
    that break on USB will now work properly.

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     

29 May, 2009

1 commit

  • This patch (as1244) fixes a crash in usb-serial that occurs when a
    sub-driver returns a positive value from its attach method, indicating
    that new firmware was loaded and the device will disconnect and
    reconnect. The usb-serial core then skips the step of registering the
    port devices; when the disconnect occurs, the attempt to unregister
    the ports fails dramatically.

    This problem shows up with Keyspan devices and it might affect others
    as well.

    When the attach method returns a positive value, the patch sets
    num_ports to 0. This tells usb_serial_disconnect() not to try
    unregistering any of the ports; instead they are cleaned up by
    destroy_serial().

    Signed-off-by: Alan Stern
    Tested-by: Benjamin Herrenschmidt
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern