1. 11 Jun, 2004 1 commit
    • Alan Stern's avatar
      [PATCH] USB: Mark devices as NOTATTACHED as soon as possible · 63eee2ca
      Alan Stern authored
      This patch implements something we've been lacking for a long time: a way
      to mark devices as USB_STATE_NOTATTACHED as soon as we know that they're
      gone.  The usb_device->state member is no longer protected by the
      ->serialize semaphore; instead there's a new private spinlock.  Usbcore
      routines should no longer set ->state directly; instead they should use
      the new utility routine usb_set_device_state().  There are protections
      against changing states while devices are being added or removed.
      
      	Change assignments to udev->state into calls of
      	usb_set_device_state().
      
      	Add new private device_state_lock to the hub driver, along
      	with usb_set_device_state() and recursively_mark_NOTATTACHED().
      
      	Acquire the new spinlock while adding or removing children[]
      	pointers.
      
      	When disabling a port that has a child device, mark the child
      	as NOTATTACHED.
      
      You mentioned once having tried to do something like this and running into
      trouble.  Take a good look and let me know if you see any difficulties
      here.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      63eee2ca
  2. 10 Jun, 2004 3 commits
  3. 09 Jun, 2004 5 commits
    • Greg Kroah-Hartman's avatar
      USB: crap, I misapplied a patch with the wrong level · b4a8f23b
      Greg Kroah-Hartman authored
      This gets rid of usb/host and puts the file in the proper drivers/usb/host
      directory.
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      b4a8f23b
    • Alan Stern's avatar
      [PATCH] USB: Update root-hub code for the ohci-lh7a404 driver · 12161d56
      Alan Stern authored
      On Wed, 9 Jun 2004, David Brownell wrote:
      
      > Needs an update for ohci-lh7a404.c too ...
      
      I didn't even know this driver existed!  Where did usb/host/* come from?
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      12161d56
    • Alan Stern's avatar
      [PATCH] USB: Minor tidying up of hub driver · 72ab0f27
      Alan Stern authored
      After my last few changesets there were a few small items that needed to
      be tidied up.
      
      	Update kerneldoc to reflect the actual operation of
      	usb_disconnect() and usb_new_device().  The new locking
      	requirements are listed too, though they aren't all
      	implemented yet.
      
      	Fulfill the new locking requirement in hcd_panic().
      
      	Remove unneeded local variables to conserve stack space in
      	usb_disconnect(), which calls itself recursively.
      
      	In hub_port_connect_change(), store the parent's children[]
      	pointer as late as possible and don't lock the new device until
      	then (that's when it becomes globally accessible).  This will
      	minimize the time that the not-fully-configured device structure
      	is visible to other parts of the kernel.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      72ab0f27
    • Alan Stern's avatar
      [PATCH] USB: Fix bus-list root-hub race · f1eb6dba
      Alan Stern authored
      There are a few places where the code enumerates through all the USB
      devices on all the buses, starting with each bus's root hub and working
      down.  However a bus does not always have a root hub, and the code does
      not check that the root_hub pointer is non-NULL.  This patch fixes the
      problem, using the usb_bus_list_lock semaphore to synchronize access when
      root hubs are added or removed.
      
      In addition it seemed like a good idea to minimize the time that a
      non-fully-configured root hub is accessible through the bus's pointer.  So
      this patch delays setting the pointer and holds usb_bus_list_lock while
      configuring a root hub.
      
      It turned out that a bunch of things needed to be changed for all this to
      work:
      
      	Check for NULL root_hub pointer in usb_device_read() and
      	usb_find_device().
      
      	Pass the root-hub device as a separate argument to
      	hcd_register_root().
      
      	Make usb_register_root_hub() acquire the usb_bus_list_lock and
      	set the bus->root_hub pointer.
      
      	For consistency's sake, move the place where the children[]
      	pointer to a non-root-hub device gets stored as close as possible
      	to where usb_new_device() is called.
      
      	Make usb_disconnect() acquire the usb_bus_list_lock when removing
      	a root hub.
      
      	Change usb_hcd_pci_remove() and the non-PCI host drivers so that
      	they call usb_disconnect() with a pointer to the bus's root_hub
      	pointer, not a pointer to a temporary variable.
      
      	Change all the host controller drivers not to store the root_hub
      	pointer in the bus structure but instead to pass it as a new
      	argument to hcd_register_root().
      
      I made some attempt to update the hc_sl811 driver along with the rest, but
      it's pretty clear that driver won't work in the current framework.  Among
      other things, it never reads the root hub's device descriptor.  To what
      extent is the driver really supported?
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      f1eb6dba
    • Oliver Neukum's avatar
      [PATCH] USB: add printer reset ioctl · 18e63cd5
      Oliver Neukum authored
        - add soft reset ioctl
      Signed-off-by: default avatarOliver Neukum <oliver@neukum.name>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      18e63cd5
  4. 08 Jun, 2004 19 commits
  5. 07 Jun, 2004 12 commits
    • David S. Miller's avatar
      Merge davem@nuts.davemloft.net:/disk1/BK/net-2.6 · edc3435b
      David S. Miller authored
      into kernel.bkbits.net:/home/davem/net-2.6
      edc3435b
    • David Brownell's avatar
      [PATCH] USB: rndis (4/4) start documenting spec variances · 123615f1
      David Brownell authored
      This partially reverts one of the changes in an earlier patch,
      starting to document where Microsoft's spec is lying.  Needed
      to interop with Windows ME.
      
      
      The Windows ME implementation of RNDIS relies on a message that
      Microsoft's specification says isn't used.  Restore this (removed
      in earlier cleanup), and start collecting comments specifically
      on where MSFT violates its own specifications.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      123615f1
    • David Brownell's avatar
      [PATCH] USB: rndis (2/4) fix memory leaks · ebf02028
      David Brownell authored
      Tao Huang wrote:
      > I'm writing udc driver for S3C2410. I found RNDIS almost not call my
      > driver's free_request and free_buffer. So after run my driver about 3
      > hours the system will out of memory.
      >
      > This patch will fix the memory leak.
      >
      > There will still have memory leak when driver unload, but I don't known
      > where is the proper place to fix it.
      > 1) rndis.c should free resp_queue when it unload
      > 2) ether.c should free tx_reqs and rx_reqs when it unload (as
      > eth_reset_config)
      
      Thanks ... this is a nice patch to have.
      
      
      From:          Tao Huang <huangt@star-net.cn>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      ebf02028
    • David Brownell's avatar
      [PATCH] USB: rndis (1/4) update OID support · e9bcd70c
      David Brownell authored
      NDIS devices have a generic attribute get/set API where the attributes
      are identified by 32 bit "OIDs".  This fixes some problems with the OIDs
      supported by the original RNDIS patch:
      
        - It included OIDs not found in the RNDIS spec.  These have been
          removed.  As a rule, these weren't exported in the "OIDs I support"
          list, and only a couple wouldn't fail those accesses, so this mostly
          changes what debug printk appears.
      
        - OIDs used for optional 802.3 statistics were partially supported.
          They're all in the OID list now, but the support is #ifdeffed out.
          (Those statistics were mostly just made up, anyway!)
      
        - "Required" OIDs for suspend, resume, and wakeup support weren't
          listed.  Their messages are now defined, but support is #ifdeffed
          out.  Seems the docs aren't entirely accurate, and Windows can
          behave reasonably without them.  (This area needs help from someone
          who knows MS-Windows power management.)
      
      There are also a few minor cleanups, more reasonable default volume level
      for debug messages (never at KERN_INFO, keepalives only if VERBOSE), and
      dumping of all bytes of some undocumented messages Windows XP has been
      seen emitting shortly before the host suspended itself.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      e9bcd70c
    • Alan Stern's avatar
      [PATCH] USB: unusual_devs.h update · 5d14ffeb
      Alan Stern authored
      Given the problems that Dan Scholnik has reported, we should combine the
      unusual_devs.h entries for the Casio QV cameras into one.  The new
      NEED_OVERRIDE flag will prevent complaints about unnecessary overrides,
      and Dan says the same subclass and protocol values should work for all the
      cameras.  If they don't we'll hear about it soon enough!
      
      
      On Tue, 1 Jun 2004, Dan Scholnik wrote:
      > On Tue, 2004-06-01 at 14:14, Alan Stern wrote:
      > > On Tue, 1 Jun 2004, Dan Scholnik wrote:
      > >
      > > > Up until the 2.6 kernels, there was one entry for all the QV cameras
      > > > with both US_SC_8070 and US_PR_CB that I think seemed to work fine for
      > > > everyone.  As far as I know the only problem was all the folks emailing
      > > > the log entry stating that the Casio entry wasn't needed.  So, you could
      > > > revert back to that, or revert back to the 2.6.3ish version (pre-as190)
      > > > that had the overrides just for product IDs 1001-9009.  I'm not really
      > > > an expert on Casio's cameras, I'm afraid, just the one model I own which
      > > > is 4-5 years old now.
      > > >
      > > > I'll be happy to prepare a patch any way you choose to go.
      > >
      > > How does this work for you?
      > >
      > > Alan Stern
      >
      > Works fine for me; that's I think exactly how it was from the beginning
      > until 2.6 and the later 2.4 kernels when all the changes were made.
      > Just cross your fingers that it doesn't somehow break newer Casios, as
      > it would seem every camera they ever made falls under that entry.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      5d14ffeb
    • Alan Stern's avatar
      [PATCH] USB: Fix resource leakage in the hub driver · 729f806b
      Alan Stern authored
      The hub driver is very careless about returning resources when an error
      occurs while installing a new device.  This patch attempts to put some
      order back into the situation.  Details:
      
      	Since usb_new_device() allocates neither the device structure
      	nor the device address, it shouldn't release either one.
      
      	Because usb_new_device() no longer releases the device structure,
      	usb_register_root_hub() doesn't need to take an extra reference
      	to it.
      
      	Since the device address selection and TT setup code is used
      	only for new devices, not ones being reset, move that code from
      	hub_port_init() to hub_port_connect_change().  By the same token,
      	hub_port_init() doesn't have to release the device address or
      	the device structure.
      
      	Just to make things look better, move the failure code in
      	hub_port_init() to the end of the routine.  And when disabling
      	endpoint 0, disable both the IN and OUT parts of the endpoint.
      
      	In hub_port_connect_change(), make all the failure paths
      	execute the same code so that resources are always released.
      	These resources comprise: the pointer from the parent to the
      	new child device, the HCD state for ep0, the device's address,
      	and the device structure itself -- in short, everything that's
      	set up before calling usb_new_device().
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      729f806b
    • Alan Stern's avatar
      [PATCH] USB: Check port reset return code · 70244527
      Alan Stern authored
      This patch adds checking for the SET-FEATURE request that actually does a
      port reset.  Without the check, the hub driver just assumes that the port
      reset command actually was transferred okay.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      70244527
    • Duncan Sands's avatar
      [PATCH] USB devio.c: deadlock fix · 15903813
      Duncan Sands authored
      proc_resetdevice is called with dev->serialize held.
      usb_reset_device takes dev->serialize and then calls
      __usb_reset_device.  To avoid deadlock, proc_resetdevice
      should call __usb_reset_device directly.
      Signed-off-by: default avatarDuncan Sands <baldrick@free.fr>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      15903813
    • David S. Miller's avatar
      e3e77f6e
    • Stephen Hemminger's avatar
      81cfe912
    • Stephen Hemminger's avatar
      66b992e8
    • Duncan Sands's avatar
      [PATCH] USB devio.c: deadlock fix · a6df4e9c
      Duncan Sands authored
      proc_resetdevice is called with dev->serialize held.
      usb_reset_device takes dev->serialize and then calls
      __usb_reset_device.  To avoid deadlock, proc_resetdevice
      should call __usb_reset_device directly.
      Signed-off-by: default avatarDuncan Sands <baldrick@free.fr>
      Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
      a6df4e9c