Browse Source

Check for fatal read errors and break out of the read loop in avalon.

Con Kolivas 12 years ago
parent
commit
176747fbc9
1 changed files with 5 additions and 0 deletions
  1. 5 0
      driver-avalon.c

+ 5 - 0
driver-avalon.c

@@ -295,6 +295,8 @@ static int avalon_read(struct cgpu_info *avalon, char *buf, size_t bufsize, int
 	err = usb_read_once(avalon, buf, bufsize, &amount, ep);
 	err = usb_read_once(avalon, buf, bufsize, &amount, ep);
 	applog(LOG_DEBUG, "%s%i: Get avalon read got err %d",
 	applog(LOG_DEBUG, "%s%i: Get avalon read got err %d",
 	       avalon->drv->name, avalon->device_id, err);
 	       avalon->drv->name, avalon->device_id, err);
+	if (unlikely(err && err != LIBUSB_ERROR_TIMEOUT))
+		amount = -1;
 	return amount;
 	return amount;
 }
 }
 
 
@@ -984,6 +986,9 @@ static void *avalon_get_results(void *userdata)
 
 
 		ret = avalon_read(avalon, buf, rsize, C_AVALON_READ);
 		ret = avalon_read(avalon, buf, rsize, C_AVALON_READ);
 
 
+		if (unlikely(ret < 0))
+			break;
+
 		if (ret < 1)
 		if (ret < 1)
 			continue;
 			continue;