Date: Tue, 14 Nov 2006 21:45:38 -0700 From: Scott Long <scottl@samsco.org> To: Matthew Jacob <lydianconcepts@gmail.com> Cc: freebsd-scsi@freebsd.org Subject: Re: basic domain validation patches- 3rd and final call Message-ID: <455A9B72.4000605@samsco.org> In-Reply-To: <7579f7fb0611142023l614c0d3bj4559c0b26b5817b8@mail.gmail.com> References: <7579f7fb0611142023l614c0d3bj4559c0b26b5817b8@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Go for it! Matthew Jacob wrote: > Please review, or these will be going in as the basis for ongoing > work. They aren't perfect, but I believe that they are a sorely needed > start. Speak now or forever hold your piece. > > On 11/2/06, mjacob@freebsd.org <mjacob@freebsd.org> wrote: >> >> See http://people.freebsd.org/~mjacob/DV_PATCHES >> >> The ANSI document on Domain Validation gives an algorithm for doing >> Basic Domain Validation as, in part: >> >> Send an INQUIRY command to a SCSI device 3 times- twice with the >> default transfer agreement and once with the transfer agreement set >> to the fastest supported values. The Basic test fails when the first >> 36 bytes of data returned at the negotiated synchronous speed does not >> match the data received at the asynchronous transfer speed. In >> addition, the Basic test fails if a CRC error (or parity error for >> non-DT clocking) or a timeout occurs. If data miscompare occurs, the >> test should be repeated (e.g., this could be due to the target changing >> INQUIRY data during SCSI device initialization). After a finite number >> of retries, if data miscompare recurs then fall-back should be >> attempted (see 5.5.2). >> >> and 5.5.2 has: >> >> If Basic or Enhanced tests fail, a fall-back setting is set and the >> tests are performed again. The recommended fall-back order is: >> >> 1. fast-160 >> 2. fast-80 >> 3. fast-40 (with DT clocking enabled) >> 4. fast-40 (with ST clocking enabled) >> 5. fast-20 >> 6. fast-10; and >> 7. asynchrnous transfer. >> >> I've done an implementation interwoven into the probe code in cam_xpt >> such that the following occurs.. >> >> The normal sequence is: >> >> ... >> INQUIRY (short) >> INQUIRY (long) >> ... >> ('default' sync settings are enabled) >> ... >> PROBE_TUR_FOR_NEGOTIATION >> <END> >> >> I've changed <END> to be: >> >> PROBE_TUR_FOR_NEGOTIATION >> PROBE_INQUIRY_BASIC_DV1 >> ... >> PROBE_INQUIRY_BASIC_DV2 >> ... >> >> The idea here is to leverage the two initial INQUIRY commands done at >> async mode and compare with the last known one and to do *two* >> additional INQUIRY commands (at speed) to see if they compare with the >> last ASYNC long INQUIRY command. If they don't, we can do backoff and >> just re-enter the state machine at PROBE_TUR_FOR_NEGOTIATION. >> >> The backoff doesn't do DT/ST settings, but just simply increments the >> sync_period factor until we hit 0xf (5 MHz) and then drops to async. >> >> I don't mess with PPR settings on the theory that the SIM will do the >> right thing with PPR settings depending on the values of sync period and >> offset. >> >> By doing fault injection (e..g, failed compares) I've done some testing >> and this *appears* to do what one would want. >> >> Any comments? I *know* there are people out there on this list who have >> more experience with DV than I do so I'd appreciate some comments. >> >> -matt >> >> >> >> >> _______________________________________________ >> freebsd-scsi@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-scsi >> To unsubscribe, send any mail to "freebsd-scsi-unsubscribe@freebsd.org" >> > _______________________________________________ > freebsd-scsi@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-scsi > To unsubscribe, send any mail to "freebsd-scsi-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?455A9B72.4000605>