Skip to content

Commit

Permalink
[SCSI] aic7xxx: fix U160 mode
Browse files Browse the repository at this point in the history
The new period/dt setting routines don't get the coupling of these
parameters correct.  This means that Domain Validation never gets DT
set, and thus the drive gets restricted to U80.

Fix this by restoring the couplings in the set routines.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
James Bottomley authored and James Bottomley committed May 20, 2005
1 parent fb3089d commit 2bf2c56
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/scsi/aic7xxx/aic7xxx_osm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2679,6 +2679,11 @@ static void ahc_linux_set_period(struct scsi_target *starget, int period)
if (offset == 0)
offset = MAX_OFFSET;

if (period < 9)
period = 9; /* 12.5ns is our minimum */
if (period == 9)
ppr_options |= MSG_EXT_PPR_DT_REQ;

ahc_compile_devinfo(&devinfo, shost->this_id, starget->id, 0,
starget->channel + 'A', ROLE_INITIATOR);

Expand Down Expand Up @@ -2764,6 +2769,12 @@ static void ahc_linux_set_dt(struct scsi_target *starget, int dt)
unsigned long flags;
struct ahc_syncrate *syncrate;

if (dt) {
period = 9; /* 12.5ns is the only period valid for DT */
ppr_options |= MSG_EXT_PPR_DT_REQ;
} else if (period == 9)
period = 10; /* if resetting DT, period must be >= 25ns */

ahc_compile_devinfo(&devinfo, shost->this_id, starget->id, 0,
starget->channel + 'A', ROLE_INITIATOR);
syncrate = ahc_find_syncrate(ahc, &period, &ppr_options,AHC_SYNCRATE_DT);
Expand Down

0 comments on commit 2bf2c56

Please sign in to comment.