Date: Wed, 7 Aug 1996 21:15:43 +1000 From: Bruce Evans <bde@zeta.org.au> To: current@FreeBSD.ORG, imb@asstdc.com.au Subject: Re: patch for consideration .. multi-block IDE Message-ID: <199608071115.VAA17880@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>I noted that multi-block transfers had been broken .. the following patch >corrects the problem (a line missed in the rearrange, I suspect) .. >*** /sys/i386/isa/wd.c.orig Sun Jul 28 06:52:04 1996 >--- /sys/i386/isa/wd.c Wed Aug 7 18:59:08 1996 >*************** >*** 1665,1670 **** >--- 1665,1671 ---- > du->dk_dd.d_type = DTYPE_ESDI; > du->dk_dd.d_subtype |= DSTYPE_GEOMETRY; > #endif >+ du->dk_multi = wp->wdp_nsecperint & 0xff; > > return (0); > } This is wrong too. du->dk_multi is actually the number of sectors transferred per interrupt (not a multi-mode flag or count) and should be set to 1 unless multi-mode will actually be used, i.e., unless 1) The drive claims to support it, i.e., the above du->dk_multi > 1. 2) It is configured, i.e., (du->cfg_flags & WDOPT_MULTIMASK) > 1. 3) The configured count is <= the supported count. This restriction probably shouldn't exist (use min(configured, supported)). 4) Issuing of the command to program multi-mode succeeds. 5) The command to program multi-mode succeeds. Currently, the exit status of the command is thrown away. It is inconvenient to do all this at probe time. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199608071115.VAA17880>