Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Nov 2006 15:36:18 -0800
From:      "Matthew Jacob" <lydianconcepts@gmail.com>
To:        freebsd-scsi@freebsd.org
Subject:   Re: basic domain validation patches
Message-ID:  <7579f7fb0611061536v3d76e368mc027e5d9844b534b@mail.gmail.com>
In-Reply-To: <20061102154941.S41199@ns1.feral.com>
References:  <20061102154941.S41199@ns1.feral.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I haven't heard anything- please take the time to review these changes.

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"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7579f7fb0611061536v3d76e368mc027e5d9844b534b>