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;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to