Browse Source

Titan flush optimization: Bugfix: Flush time measurement only worked with one ASIC

Pelle Nilsson 11 years ago
parent
commit
eb588b5007
1 changed files with 3 additions and 3 deletions
  1. 3 3
      driver-titan.c

+ 3 - 3
driver-titan.c

@@ -86,7 +86,7 @@ struct knc_titan_info {
 	int cores;
 	struct knc_titan_die dies[KNC_TITAN_MAX_ASICS][KNC_TITAN_DIES_PER_ASIC];
 	bool asic_served_by_fpga[KNC_TITAN_MAX_ASICS];
-	struct timeval tv_prev[KNC_TITAN_MAX_ASICS];
+	struct timeval tv_prev;
 
 	struct work *workqueue;
 	int workqueue_size;
@@ -602,7 +602,7 @@ static void knc_titan_poll(struct thr_info * const thr)
 					} else {
 						/* Use FPGA accelerated unicasts */
 						if (!fpga_status_checked) {
-							timer_set_now(&knc->tv_prev[asic]);
+							timer_set_now(&knc->tv_prev);
 							knc_titan_get_work_status(first_proc->device->dev_repr, knc->ctx, asic, &num_request_busy);
 							fpga_status_checked = true;
 						}
@@ -617,7 +617,7 @@ static void knc_titan_poll(struct thr_info * const thr)
 						knc_titan_get_work_status(first_proc->device->dev_repr, knc->ctx, asic, &num_request_busy);
 						if (num_request_busy == 0) {
 							timer_set_now(&tv_now);
-							double diff = ((tv_now.tv_sec - knc->tv_prev[asic].tv_sec) * 1000000.0 + (tv_now.tv_usec - knc->tv_prev[asic].tv_usec)) / 1000000.0;
+							double diff = ((tv_now.tv_sec - knc->tv_prev.tv_sec) * 1000000.0 + (tv_now.tv_usec - knc->tv_prev.tv_usec)) / 1000000.0;
 							applog(LOG_INFO, "%s: Flush took %f secs for ASIC %d", knc_titan_drv.dname, diff, asic);
 							knc->asic_served_by_fpga[asic] = false;
 						}