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