From: Anton Blanchard The sym-do-160 patch should really disappear from your patchset, Mike Anderson came up with the real fix. Willy: are you OK with this patch? drivers/scsi/sym53c8xx_2/sym_hipd.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff -puN drivers/scsi/sym53c8xx_2/sym_hipd.c~sym-speed-fix drivers/scsi/sym53c8xx_2/sym_hipd.c --- 25/drivers/scsi/sym53c8xx_2/sym_hipd.c~sym-speed-fix 2003-12-30 16:44:51.000000000 -0800 +++ 25-akpm/drivers/scsi/sym53c8xx_2/sym_hipd.c 2003-12-30 16:44:51.000000000 -0800 @@ -1058,12 +1058,10 @@ static int sym_prepare_setting(hcb_p np, * and BUS width. */ if (np->features & FE_ULTRA3) { - if (tp->tinfo.user.period <= 9 && - tp->tinfo.user.width == BUS_16_BIT) { - tp->tinfo.user.options |= PPR_OPT_DT; - tp->tinfo.user.offset = np->maxoffs_dt; - tp->tinfo.user.spi_version = 3; - } + tp->tinfo.user.options |= PPR_OPT_DT; + tp->tinfo.user.period = np->minsync_dt; + tp->tinfo.user.offset = np->maxoffs_dt; + tp->tinfo.user.spi_version = 3; } if (!tp->usrtags) @@ -2126,9 +2124,15 @@ sym_setsync(hcb_p np, int target, sym_settrans(np, target, 0, ofs, per, wide, div, fak); - tp->tinfo.goal.period = tp->tinfo.curr.period = per; - tp->tinfo.goal.offset = tp->tinfo.curr.offset = ofs; - tp->tinfo.goal.options = tp->tinfo.curr.options = 0; + tp->tinfo.curr.period = per; + tp->tinfo.curr.offset = ofs; + tp->tinfo.curr.options = 0; + + if (!(tp->tinfo.goal.options & PPR_OPT_MASK)) { + tp->tinfo.goal.period = per; + tp->tinfo.goal.offset = ofs; + tp->tinfo.goal.options = 0; + } sym_xpt_async_nego_sync(np, target); } _