Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Jan 2014 13:27:00 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r260587 - head/tools/tools/usbtest
Message-ID:  <201401131327.s0DDR0Nn086741@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Mon Jan 13 13:27:00 2014
New Revision: 260587
URL: http://svnweb.freebsd.org/changeset/base/260587

Log:
  Add new testcase for USB mass storage.

Modified:
  head/tools/tools/usbtest/usb_msc_test.c
  head/tools/tools/usbtest/usb_msc_test.h

Modified: head/tools/tools/usbtest/usb_msc_test.c
==============================================================================
--- head/tools/tools/usbtest/usb_msc_test.c	Mon Jan 13 12:17:41 2014	(r260586)
+++ head/tools/tools/usbtest/usb_msc_test.c	Mon Jan 13 13:27:00 2014	(r260587)
@@ -255,6 +255,35 @@ do_msc_cmd(uint8_t *pcmd, uint8_t cmdlen
 	}
 }
 
+static void
+do_msc_shorter_cmd(uint8_t lun)
+{
+	uint8_t buffer[sizeof(umass_bbb_cbw_t)];
+	int actlen;
+	int error;
+	int x;
+
+	memset(buffer, 0, sizeof(buffer));
+
+	for (x = 0; x != (sizeof(buffer) - 1); x++) {
+		error = libusb20_tr_bulk_intr_sync(xfer_out,
+		    buffer, x, &actlen, 250);
+
+		printf("Sent short %d of %d bytes wrapper block, "
+		    "status = %d\n", x, (int)(sizeof(buffer) - 1),
+		    error);
+
+		do_msc_reset(lun);
+
+		if (error != 0) {
+			printf("ERROR: Too short command wrapper "
+			    "was not accepted\n");
+			stats.xfer_error++;
+			break;
+		}
+	}
+}
+
 static uint8_t
 do_read_10(uint32_t lba, uint32_t len, void *buf, uint8_t lun)
 {
@@ -564,6 +593,11 @@ usb_msc_test(struct usb_msc_params *p)
 	if (capacity_bs != 512)
 		printf("INFO: Blocksize is not 512 bytes\n");
 
+	if (p->try_shorter_wrapper_block) {
+		printf("Trying too short command wrapper:\n");
+		do_msc_shorter_cmd(lun);
+	}
+
 	if (p->try_invalid_scsi_command) {
 		int status;
 
@@ -1195,6 +1229,7 @@ show_host_msc_test(uint8_t level, uint16
 		    "14) Toggle try aborted write transfer: <%s>\n"
 		    "15) Toggle request sense on error: <%s>\n"
 		    "16) Toggle try all LUN: <%s>\n"
+		    "17) Toggle try too short wrapper block: <%s>\n"
 		    "20) Reset parameters\n"
 		    "30) Start test (VID=0x%04x, PID=0x%04x)\n"
 		    "40) Select another device\n"
@@ -1215,6 +1250,7 @@ show_host_msc_test(uint8_t level, uint16
 		    (params.try_abort_data_write ? "YES" : "NO"),
 		    (params.try_sense_on_error ? "YES" : "NO"),
 		    (params.try_all_lun ? "YES" : "NO"),
+		    (params.try_shorter_wrapper_block ? "YES" : "NO"),
 		    vid, pid);
 		switch (retval) {
 		case 0:
@@ -1274,6 +1310,9 @@ show_host_msc_test(uint8_t level, uint16
 		case 16:
 			params.try_all_lun ^= 1;
 			break;
+		case 17:
+			params.try_shorter_wrapper_block ^= 1;
+			break;
 		case 20:
 			set_defaults(&params);
 			break;

Modified: head/tools/tools/usbtest/usb_msc_test.h
==============================================================================
--- head/tools/tools/usbtest/usb_msc_test.h	Mon Jan 13 12:17:41 2014	(r260586)
+++ head/tools/tools/usbtest/usb_msc_test.h	Mon Jan 13 13:27:00 2014	(r260587)
@@ -109,6 +109,7 @@ struct usb_msc_params {
 	uint8_t	try_invalid_scsi_command;
 	uint8_t	try_invalid_wrapper_block;
 	uint8_t	try_invalid_max_packet_size;
+	uint8_t try_shorter_wrapper_block;
 	uint8_t	try_last_lba;
 	uint8_t	try_abort_data_write;
 	uint8_t try_sense_on_error;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401131327.s0DDR0Nn086741>