On Fri, 19 Feb 2016 10:23:36 +0100, Takashi Sakamoto wrote: > > Hi, > > On Feb 19 2016 17:19, Takashi Iwai wrote: > > On Fri, 19 Feb 2016 01:55:50 +0100, > > Takashi Sakamoto wrote: > >> > >> With a previous commit, ALSA oxfw driver retries transferring MIDI > >> messages at transaction failure for scs1x. On the other hand, there're > >> fatal transaction error. Then, MIDI messages never reach to the unit > >> anymore. In this case, MIDI substream should be discontinued. > >> > >> This commit stops MIDI transferring after the fatal error occurs. > >> Unfortunately, unlike ALSA PCM functionality, ALSA rawmidi core has no > >> feature to discontinue MIDI substream in kernel side, thus this commit > >> just stops MIDI transferring without notifying it to userspace. > > > > It's fine to take this, and I would take it as is for now. > > OK. > > > But we can extend the rawmidi somehow to deal with such an error, too. > > Maybe just having "error" flag in the rawmidi runtime and adding a > > helper function to set the error and stop the stream should work > > easily. > > You forgot ALSA sequencer. This is a different layer. The sequencer stuff may check the error and handle more gracefully than as of now, but it's a different story from the extension of rawmidi itself. What you're working on is the rawmidi, and what it can give is just returning an error at the right moment. > I had considered about it when working for snd-firewire-digi00x (Mar > 2015), and realised that it may take much time. At least, we work for: > - ALSA rawmidi core > - ALSA rawmidi interface for userspace We don't need to extend rawmidi user-space API so much. Again, what needed is to return an error at read/write, probably -EPIPE, right after the driver got a hardware error. For that, just adding runtime->error flag and checking it appropriate should suffice (in theory). The read/write in rawmidi is pretty simple. And we don't have to reset the flag until the stream is reopened. There is no setup/preparation phase for rawmidi unlike PCM. > Additionally, users mostly use rawmidi devices via ALSA sequencer: > - ALSA sequencer core > - ALSA sequencer interface for userspace > > Furthermore, regression test is required for: > - ALSA drivers with MIDI functionality > - ALSA rawmidi/sequencer applications in userspace > > It's not 2000s. I guess that little developers are attracted for this > work. In my option, the work is really cost-expensive than actual merit. > So currently I'm negative for the idea. A regression test is needed of course, but a simple error check can't regress except for the driver that really supports it. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel