[SCSI] mpt2sas: Corrected time stamp
authorKashyap, Desai <kashyap.desai@lsi.com>
Wed, 17 Mar 2010 10:51:33 +0000 (16:21 +0530)
committerJames Bottomley <James.Bottomley@suse.de>
Sun, 11 Apr 2010 14:23:54 +0000 (09:23 -0500)
incorrect timestamp on 32 bit platforms: The upper 32 bit of
the timestamp was getting truncated when converting seconds to
milliseconds, which was due to the variable being long. To fix the problem,
the variable needs to be u64. Also the microseconds conversion to
milliseconds was incorrect; it should be divide by 1000 instead of divide by
8.

Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/mpt2sas/mpt2sas_base.c

index fb886d099baf0ea8108b5eaacb56f1180576066e..2e6e45a2803fd3d0f087dc512bd012d875d0539a 100644 (file)
@@ -3009,8 +3009,8 @@ _base_send_ioc_init(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
         * since epoch ~ midnight January 1, 1970.
         */
        do_gettimeofday(&current_time);
-       mpi_request.TimeStamp = (current_time.tv_sec * 1000) +
-           (current_time.tv_usec >> 3);
+       mpi_request.TimeStamp = cpu_to_le64((u64)current_time.tv_sec * 1000 +
+           (current_time.tv_usec / 1000));
 
        if (ioc->logging_level & MPT_DEBUG_INIT) {
                u32 *mfp;