firewire: core: ignore link-active bit of new nodes, fix device recognition
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Mon, 14 Mar 2011 23:08:41 +0000 (00:08 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 20 Mar 2011 15:45:25 +0000 (16:45 +0100)
commit115881d395959b75c8c3bb94913f2ce869b8aa7a
tree8beae4353389d5d26bbd6c7f4b7ca9f45d38aff9
parent7a4e1e9c682cd87fe8a749b435b13afeef083c34
firewire: core: ignore link-active bit of new nodes, fix device recognition

Like the older ieee1394 core driver, firewire-core skipped scanning of
any new node whose PHY sent a self ID without "link active" bit.  If a
device had this bit off mistakenly, it meant that it was inaccessible to
kernel drivers with the old IEEE 1394 driver stack but could still be
accessed by userspace drivers through the raw1394 interface.

But with firewire-core, userspace drivers don't get to see such buggy
devices anymore.  This is effectively a driver regression since this
device bug is otherwise harmless.

We now attempt to scan all devices, even repeaters that don't have a
link or powered-down devices that have everything but their PHY shut
down when plugged in.  This results in futile repeated scanning attempts
in case of such devices that really don't have an active link, but this
doesn't hurt since recent workqueue infrastructure lets us run more
concurrent scanning jobs than we can shake a stick at.

This should fix accessibility of Focusrite Saffire PRO 26 I/O:
http://sourceforge.net/mailarchive/forum.php?thread_name=20110314215622.5c751bb0%40stein&forum_name=ffado-user

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/core-device.c