On Feb 28 Takashi Sakamoto wrote:
This commit allows this driver to support some models which M-Audio produces with DM1000 but its firmware is special. They are:
- Firewire 1814
- ProjectMix I/O
[...]
M-Audio special firmware quirks:
[...]
- They often handle requests without responding. In this reason, this driver often fail to handle them correctly.
[...]
An fallback at timeout in the operations for CMP was already added by previous commit. But for isochronous resource management, no fallbacks are added. Further works are needed for Linux Firewire Subsystem.
We could add a workaround in drivers/firewire/core-iso.c which works similar to your CMP related workaround in patch 18/39. I.e., after a timed-out lock request to CHANNELS_AVAILABLE or BANDWIDTH_AVAILABLE, perform a read request to see what happened. Like your CMP workaround, this is fragile because it races with concurrent lock requests.
Or we could add a workaround in drivers/firewire/core-card.c which would attempt to make the local node root node (and thereby IRM) if it detects that an M-Audio device is currently IRM.
Not sure what's better.