PERFORCE change 120273 for review

Hans Petter Selasky hselasky at FreeBSD.org
Wed May 23 19:34:46 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=120273

Change 120273 by hselasky at hselasky_mini_itx on 2007/05/23 19:34:39

	When we are writing data to a Mass Storage Device,
	short write transfers should not be treated like
	errors.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/umass.c#17 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/umass.c#17 (text+ko) ====

@@ -780,7 +780,7 @@
       .endpoint  = -1, /* any */
       .direction = UE_DIR_OUT,
       .bufsize   = UMASS_BULK_SIZE,
-      .flags     = USBD_USE_DMA,
+      .flags     = (USBD_USE_DMA|USBD_SHORT_XFER_OK),
       .callback  = &umass_t_bbb_data_write_callback,
       .timeout   = 0, /* overwritten later */
     },
@@ -875,7 +875,7 @@
       .endpoint  = -1, /* any */
       .direction = UE_DIR_OUT,
       .bufsize   = UMASS_BULK_SIZE,
-      .flags     = USBD_USE_DMA,
+      .flags     = (USBD_USE_DMA|USBD_SHORT_XFER_OK),
       .callback  = &umass_t_cbi_data_write_callback,
       .timeout   = 0, /* overwritten later */
     },
@@ -1635,6 +1635,11 @@
 	sc->sc_transfer.data_ptr += xfer->actlen;
 	sc->sc_transfer.actlen += xfer->actlen;
 
+	if (xfer->actlen < xfer->length) {
+	    /* short transfer */
+	    sc->sc_transfer.data_rem = 0;
+	}
+
  tr_setup:
 	DPRINTF(sc, UDMASS_BBB, "max_bulk=%d, data_rem=%d\n",
 		max_bulk, sc->sc_transfer.data_rem);
@@ -2134,6 +2139,11 @@
 	sc->sc_transfer.data_ptr += xfer->actlen;
 	sc->sc_transfer.actlen += xfer->actlen;
 
+	if (xfer->actlen < xfer->length) {
+	    /* short transfer */
+	    sc->sc_transfer.data_rem = 0;
+	}
+
  tr_setup:
 	DPRINTF(sc, UDMASS_CBI, "max_bulk=%d, data_rem=%d\n",
 		max_bulk, sc->sc_transfer.data_rem);


More information about the p4-projects mailing list