[PATCH] Set default transfer size to 1024 bytes

Tormod Volden lists.tormod at gmail.com
Fri Nov 5 23:03:40 CET 2010


From: Tormod Volden <debian.tormod at gmail.com>

It used to default to the host kernel page size, which seems rather
irrelevant. 1024 bytes seems like a reasonable default size, if one is
needed. At any rate, it should really be determined from the DFU
functional descriptor, so this default should not matter much.
---

Another patch for dfu-util

Hopefully my previous patch makes this default transfer size
irrelevant in almost all cases :)

Anyway, 1024 is a safer choice than 4096 which the previous
logic would provide on most (Linux) boxen.

Tormod


 src/main.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/main.c b/src/main.c
index 9d0b72a..c1d6256 100644
--- a/src/main.c
+++ b/src/main.c
@@ -452,6 +452,7 @@ int main(int argc, char **argv)
 	int num_devs;
 	int num_ifs;
 	unsigned int transfer_size = 0;
+	unsigned int default_transfer_size = 1024;
 	enum mode mode = MODE_NONE;
 	struct dfu_status status;
 	struct usb_dfu_func_descriptor func_dfu;
@@ -459,7 +460,6 @@ int main(int argc, char **argv)
 	char *alt_name = NULL; /* query alt name if non-NULL */
 	char *end;
 	int final_reset = 0;
-	int page_size = getpagesize();
 	int ret;
 	
 	printf("dfu-util - (C) 2007-2008 by OpenMoko Inc.\n"
@@ -822,14 +822,13 @@ status_again:
 		if (ret < 0) {
 			fprintf(stderr, "Error obtaining DFU functional "
 				"descriptor: %s\n", usb_strerror());
-			transfer_size = page_size;
+			transfer_size = default_transfer_size;
 		} else {
 			transfer_size = get_int16_le(&func_dfu.wTransferSize);
 		}
 	}
 
-	if (transfer_size > page_size)
-		transfer_size = page_size;
+	/* FIXME: Ensure bMaxPacketSize0 <= transfer_size <= wTransferSize */
 	
 	printf("Transfer Size = 0x%04x\n", transfer_size);
 
-- 
1.7.0.4




More information about the devel mailing list