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(¶ms); 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>