aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/ncr53c8xx.c22
-rw-r--r--drivers/scsi/sym53c8xx_defs.h13
2 files changed, 11 insertions, 24 deletions
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 519486d24b28..9a4f576c0d5e 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -3481,8 +3481,8 @@ static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd)
3481 **---------------------------------------------------- 3481 **----------------------------------------------------
3482 */ 3482 */
3483 if (np->settle_time && cmd->timeout_per_command >= HZ) { 3483 if (np->settle_time && cmd->timeout_per_command >= HZ) {
3484 u_long tlimit = ktime_get(cmd->timeout_per_command - HZ); 3484 u_long tlimit = jiffies + cmd->timeout_per_command - HZ;
3485 if (ktime_dif(np->settle_time, tlimit) > 0) 3485 if (time_after(np->settle_time, tlimit))
3486 np->settle_time = tlimit; 3486 np->settle_time = tlimit;
3487 } 3487 }
3488 3488
@@ -3516,7 +3516,7 @@ static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd)
3516 ** Force ordered tag if necessary to avoid timeouts 3516 ** Force ordered tag if necessary to avoid timeouts
3517 ** and to preserve interactivity. 3517 ** and to preserve interactivity.
3518 */ 3518 */
3519 if (lp && ktime_exp(lp->tags_stime)) { 3519 if (lp && time_after(jiffies, lp->tags_stime)) {
3520 if (lp->tags_smap) { 3520 if (lp->tags_smap) {
3521 order = M_ORDERED_TAG; 3521 order = M_ORDERED_TAG;
3522 if ((DEBUG_FLAGS & DEBUG_TAGS)||bootverbose>2){ 3522 if ((DEBUG_FLAGS & DEBUG_TAGS)||bootverbose>2){
@@ -3524,7 +3524,7 @@ static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd)
3524 "ordered tag forced.\n"); 3524 "ordered tag forced.\n");
3525 } 3525 }
3526 } 3526 }
3527 lp->tags_stime = ktime_get(3*HZ); 3527 lp->tags_stime = jiffies + 3*HZ;
3528 lp->tags_smap = lp->tags_umap; 3528 lp->tags_smap = lp->tags_umap;
3529 } 3529 }
3530 3530
@@ -3792,7 +3792,7 @@ static int ncr_reset_scsi_bus(struct ncb *np, int enab_int, int settle_delay)
3792 u32 term; 3792 u32 term;
3793 int retv = 0; 3793 int retv = 0;
3794 3794
3795 np->settle_time = ktime_get(settle_delay * HZ); 3795 np->settle_time = jiffies + settle_delay * HZ;
3796 3796
3797 if (bootverbose > 1) 3797 if (bootverbose > 1)
3798 printk("%s: resetting, " 3798 printk("%s: resetting, "
@@ -5044,7 +5044,7 @@ static void ncr_setup_tags (struct ncb *np, struct scsi_device *sdev)
5044 5044
5045static void ncr_timeout (struct ncb *np) 5045static void ncr_timeout (struct ncb *np)
5046{ 5046{
5047 u_long thistime = ktime_get(0); 5047 u_long thistime = jiffies;
5048 5048
5049 /* 5049 /*
5050 ** If release process in progress, let's go 5050 ** If release process in progress, let's go
@@ -5057,7 +5057,7 @@ static void ncr_timeout (struct ncb *np)
5057 return; 5057 return;
5058 } 5058 }
5059 5059
5060 np->timer.expires = ktime_get(SCSI_NCR_TIMER_INTERVAL); 5060 np->timer.expires = jiffies + SCSI_NCR_TIMER_INTERVAL;
5061 add_timer(&np->timer); 5061 add_timer(&np->timer);
5062 5062
5063 /* 5063 /*
@@ -5336,8 +5336,8 @@ void ncr_exception (struct ncb *np)
5336 **========================================================= 5336 **=========================================================
5337 */ 5337 */
5338 5338
5339 if (ktime_exp(np->regtime)) { 5339 if (time_after(jiffies, np->regtime)) {
5340 np->regtime = ktime_get(10*HZ); 5340 np->regtime = jiffies + 10*HZ;
5341 for (i = 0; i<sizeof(np->regdump); i++) 5341 for (i = 0; i<sizeof(np->regdump); i++)
5342 ((char*)&np->regdump)[i] = INB_OFF(i); 5342 ((char*)&np->regdump)[i] = INB_OFF(i);
5343 np->regdump.nc_dstat = dstat; 5343 np->regdump.nc_dstat = dstat;
@@ -5453,7 +5453,7 @@ static int ncr_int_sbmc (struct ncb *np)
5453 ** Suspend command processing for 1 second and 5453 ** Suspend command processing for 1 second and
5454 ** reinitialize all except the chip. 5454 ** reinitialize all except the chip.
5455 */ 5455 */
5456 np->settle_time = ktime_get(1*HZ); 5456 np->settle_time = jiffies + HZ;
5457 ncr_init (np, 0, bootverbose ? "scsi mode change" : NULL, HS_RESET); 5457 ncr_init (np, 0, bootverbose ? "scsi mode change" : NULL, HS_RESET);
5458 return 1; 5458 return 1;
5459 } 5459 }
@@ -6923,7 +6923,7 @@ static struct lcb *ncr_setup_lcb (struct ncb *np, struct scsi_device *sdev)
6923 for (i = 0 ; i < MAX_TAGS ; i++) 6923 for (i = 0 ; i < MAX_TAGS ; i++)
6924 lp->cb_tags[i] = i; 6924 lp->cb_tags[i] = i;
6925 lp->maxnxs = MAX_TAGS; 6925 lp->maxnxs = MAX_TAGS;
6926 lp->tags_stime = ktime_get(3*HZ); 6926 lp->tags_stime = jiffies + 3*HZ;
6927 ncr_setup_tags (np, sdev); 6927 ncr_setup_tags (np, sdev);
6928 } 6928 }
6929 6929
diff --git a/drivers/scsi/sym53c8xx_defs.h b/drivers/scsi/sym53c8xx_defs.h
index 4c4ae7d4713f..139cd0e12e62 100644
--- a/drivers/scsi/sym53c8xx_defs.h
+++ b/drivers/scsi/sym53c8xx_defs.h
@@ -281,19 +281,6 @@
281#endif 281#endif
282 282
283/* 283/*
284** These simple macros limit expression involving
285** kernel time values (jiffies) to some that have
286** chance not to be too much incorrect. :-)
287*/
288#define ktime_get(o) (jiffies + (u_long) o)
289#define ktime_exp(b) ((long)(jiffies) - (long)(b) >= 0)
290#define ktime_dif(a, b) ((long)(a) - (long)(b))
291/* These ones are not used in this driver */
292#define ktime_add(a, o) ((a) + (u_long)(o))
293#define ktime_sub(a, o) ((a) - (u_long)(o))
294
295
296/*
297 * IO functions definition for big/little endian CPU support. 284 * IO functions definition for big/little endian CPU support.
298 * For now, the NCR is only supported in little endian addressing mode, 285 * For now, the NCR is only supported in little endian addressing mode,
299 */ 286 */