Browse Source

Check return codes in getinfo and reset and fail as needed in BF1.

Con Kolivas 12 years ago
parent
commit
b994a4c64d
1 changed files with 31 additions and 12 deletions
  1. 31 12
      driver-bitfury.c

+ 31 - 12
driver-bitfury.c

@@ -67,13 +67,23 @@ static void bitfury_identify(struct cgpu_info *bitfury)
 
 
 static bool bitfury_getinfo(struct cgpu_info *bitfury, struct bitfury_info *info)
 static bool bitfury_getinfo(struct cgpu_info *bitfury, struct bitfury_info *info)
 {
 {
-	char buf[512];
-	int amount;
+	int amount, err;
+	char buf[16];
 
 
-	usb_write_ii(bitfury, 1, "I", 1, &amount, C_BF1_REQINFO);
-	usb_read_ii(bitfury, 1, buf, 14, &amount, C_BF1_GETINFO);
+	err = usb_write_ii(bitfury, 1, "I", 1, &amount, C_BF1_REQINFO);
+	if (err) {
+		applog(LOG_INFO, "%s %d: Failed to write REQINFO",
+		       bitfury->drv->name, bitfury->device_id);
+		return false;
+	}
+	err = usb_read_ii(bitfury, 1, buf, 14, &amount, C_BF1_GETINFO);
+	if (err) {
+		applog(LOG_INFO, "%s %d: Failed to read GETINFO",
+		       bitfury->drv->name, bitfury->device_id);
+		return false;
+	}
 	if (amount != 14) {
 	if (amount != 14) {
-		applog(LOG_INFO, "%s %d: Getinfo received %d bytes",
+		applog(LOG_INFO, "%s %d: Getinfo received %d bytes instead of 14",
 		       bitfury->drv->name, bitfury->device_id, amount);
 		       bitfury->drv->name, bitfury->device_id, amount);
 		return false;
 		return false;
 	}
 	}
@@ -89,18 +99,27 @@ static bool bitfury_getinfo(struct cgpu_info *bitfury, struct bitfury_info *info
 
 
 static bool bitfury_reset(struct cgpu_info *bitfury)
 static bool bitfury_reset(struct cgpu_info *bitfury)
 {
 {
-	char buf[512];
-	int amount;
-
-	usb_write_ii(bitfury, 1, "R", 1, &amount, C_BF1_REQRESET);
-	usb_read_ii_timeout(bitfury, 1, buf, 7, &amount, BF1WAIT, C_BF1_GETRESET);
+	int amount, err;
+	char buf[16];
 
 
+	err = usb_write_ii(bitfury, 1, "R", 1, &amount, C_BF1_REQRESET);
+	if (err) {
+		applog(LOG_INFO, "%s %d: Failed to write REQRESET",
+		       bitfury->drv->name, bitfury->device_id);
+		return false;
+	}
+	err = usb_read_ii_timeout(bitfury, 1, buf, 7, &amount, BF1WAIT, C_BF1_GETRESET);
+	if (err) {
+		applog(LOG_INFO, "%s %d: Failed to read GETRESET",
+		       bitfury->drv->name, bitfury->device_id);
+		return false;
+	}
 	if (amount != 7) {
 	if (amount != 7) {
-		applog(LOG_INFO, "%s %d: Getreset received %d bytes",
+		applog(LOG_INFO, "%s %d: Getreset received %d bytes instead of 7",
 		       bitfury->drv->name, bitfury->device_id, amount);
 		       bitfury->drv->name, bitfury->device_id, amount);
 		return false;
 		return false;
 	}
 	}
-	applog(LOG_INFO, "%s %d: Getreset returned %s", bitfury->drv->name,
+	applog(LOG_DEBUG, "%s %d: Getreset returned %s", bitfury->drv->name,
 	       bitfury->device_id, buf);
 	       bitfury->device_id, buf);
 	bitfury_empty_buffer(bitfury);
 	bitfury_empty_buffer(bitfury);
 	return true;
 	return true;