1. 14 8月, 2008 2 次提交
    • D
      usb gadget: issue notifications from ACM function · 1f1ba11b
      David Brownell 提交于
      Update the CDC-ACM gadget code to support the peripheral-to-host
      notifications when the tty is opened or closed, or issues a BREAK.
      The serial framework code calls new generic hooks; right now only
      CDC-ACM uses those hooks.  This resolves several REVISIT comments
      in the code.  (Based on a patch from Felipe Balbi.)
      
      Note that this doesn't expose USB_CDC_CAP_BRK to the host, since
      this code still rejects USB_CDC_REQ_SEND_BREAK control requests
      for host-to-peripheral BREAK signaling (received via /dev/ttyGS*).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Felipe Balbi <felipe.balbi@nokia.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1f1ba11b
    • D
      USB: serial gadget: rx path data loss fixes · 937ef73d
      David Brownell 提交于
      Update RX path handling in new serial gadget code to cope better with
      RX blockage:  queue every RX packet until its contents can safely be
      passed up to the ldisc.  Most of the RX path work is now done in the
      RX tasklet, instead of just the final "push to ldisc" step.  This
      addresses some cases of data loss:
      
        - A longstanding serial gadget bug: when tty_insert_flip_string()
          didn't copy the entire buffer, the rest of the characters were
          dropped!  Now that packet stays queued until the rest of its data
          is pushed to the ldisc.
      
        - Another longstanding issue:  in the unlikely case that an RX
          transfer returns data and also reports a fault, that data is
          no longer discarded.
      
        - In the recently added RX throttling logic:  it needs to stop
          pushing data into the TTY layer, instead of just not submitting
          new USB read requests.  When the TTY is throttled long enough,
          backpressure will eventually make the OUT endpoint NAK.
      
      Also: an #ifdef is removed (no longer necessary); and start switching
      to a better convention for debug messages (prefix them with tty name).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      937ef73d
  2. 22 7月, 2008 2 次提交
    • D
      usb_gadget: composite cdc gadget fault handling · ac90e365
      David Brownell 提交于
      These two fixes ensure the new "CDC Composite Device" gadget
      fails cleanly when it's loaded on hardware that can't support
      this particular gadget driver.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ac90e365
    • D
      usb gadget: split out serial core · c1dca562
      David Brownell 提交于
      This abstracts the "gadget serial" driver TTY glue into a separate
      component, cleaning it up and disentangling it from connection state.
      
      It also changed some behaviors for the better:
      
        - Stops using "experimental" major #127, and switches over to
          having the TTY layer allocate the dev_t numbers.
          
        - Provides /sys/class/tty/ttyGS* nodes, thus mdev/udev support.
          (Note "mdev" hotplug bug in Busybox v1.7.2: /dev/ttyGS0 will
          be a *block* device without CONFIG_SYSFS_DEPRECATED_V2.)
      
        - The tty nodes no longer reject opens when there's no host.
          Now they can support normal getty configs in /etc/inttab...
      
        - Now implements RX throttling.  When the line discipline says
          it doesn't want any more data, only packets in flight will be
          delivered (currently, max 1K/8K at full/high speeds) until it
          unthrottles the data.
      
        - Supports low_latency.  This is a good policy for all USB serial
          adapters, since it eliminates scheduler overhead on RX paths.
      
      This also includes much cleanup including better comments, fixing
      memory leaks and other bugs (including some locking fixes), messaging
      cleanup, and an interface audit and tightening.  This added up to a
      significant object code shrinkage, on the order of 20% (!) depending
      on CPU and compiler.
      
      A separate patch actually kicks in this new code, using the functions
      declared in this new header, and removes the previous glue.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c1dca562