• Stefan Richter's avatar
    firewire: keep highlevel drivers attached during brief connection loss · 3d36a0df
    Stefan Richter authored
    There are situations when nodes vanish from the bus and come back
    quickly thereafter:
      - When certain bus-powered hubs are plugged in,
      - when certain devices are plugged into 6-port hubs,
      - when certain disk enclosures are switched from self-power to bus
        power or vice versa and break the daisy chain during the transition,
      - when the user plugs a cable out and quickly plugs it back in, e.g.
        to reorder a daisy chain (works on Mac OS X if done quickly enough),
      - when certain hubs temporarily malfunction during high bus traffic.
    
    Until now, firewire-core reported affected nodes as lost to the
    highlevel drivers (firewire-sbp2 and userspace drivers).  We now delay
    the destruction of device representations until after at least two
    seconds after the last bus reset.  If a "new" device is detected in this
    period whose bus information block and root directory header match that
    of a device which is pending for deletion, we resurrect that device and
    send update calls to highlevel drivers.
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    3d36a0df
fw-device.c 27.6 KB