On Tue, Apr 19, 2011 at 07:57:56PM +0000, Jonathan A. Kollasch wrote: > Hi, > > I'm (again) considering adding NCQ support to the ATA subsystem. > > I've gained some experience with out of order transaction completion > in a virtio block driver I've worked on, however that was rather > simplistic compared to shoehorning it into existing and somewhat > dissimilar code. > > I am rather bewildered by the prospects of redesigning the whole ATA > subsystem. Basically, I am looking for ideas on a proper design of > NCQ support, so any pointers on where to start would be appreciated.
The ATA layer doesn't yet support multiple outstanding commands, but some provision for this is already there: for example, wd_softc has a openings member, we have a queue of commands. What's missing is tag handling in the wd driver; idea can probably be borrowed from the scsipi layer (scsipi_{get,put}_tag()). The code is so small I'm not sure it's worth trying to share it. -- Manuel Bouyer <bou...@antioche.eu.org> NetBSD: 26 ans d'experience feront toujours la difference --