1 /* $FreeBSD: head/tools/tools/usbtest/usb_msc_test.h 260587 2014-01-13 13:27:00Z hselasky $ */ 2 /*- 3 * Copyright (c) 2010 Hans Petter Selasky. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27 #ifndef _USB_MSC_TEST_H_ 28 #define _USB_MSC_TEST_H_ 29 30 enum { 31 USB_MSC_IO_MODE_READ_ONLY, 32 USB_MSC_IO_MODE_WRITE_ONCE_READ_ONLY, 33 USB_MSC_IO_MODE_WRITE_ONLY, 34 USB_MSC_IO_MODE_READ_WRITE, 35 USB_MSC_IO_MODE_MAX, 36 }; 37 38 enum { 39 USB_MSC_IO_PATTERN_FIXED, 40 USB_MSC_IO_PATTERN_RANDOM, 41 USB_MSC_IO_PATTERN_PRESERVE, 42 USB_MSC_IO_PATTERN_MAX, 43 }; 44 45 enum { 46 USB_MSC_IO_SIZE_RANDOM, 47 USB_MSC_IO_SIZE_INCREASING, 48 USB_MSC_IO_SIZE_FIXED_1BLK, 49 USB_MSC_IO_SIZE_FIXED_2BLK, 50 USB_MSC_IO_SIZE_FIXED_4BLK, 51 USB_MSC_IO_SIZE_FIXED_8BLK, 52 USB_MSC_IO_SIZE_FIXED_16BLK, 53 USB_MSC_IO_SIZE_FIXED_32BLK, 54 USB_MSC_IO_SIZE_FIXED_64BLK, 55 USB_MSC_IO_SIZE_FIXED_128BLK, 56 USB_MSC_IO_SIZE_FIXED_256BLK, 57 USB_MSC_IO_SIZE_FIXED_512BLK, 58 USB_MSC_IO_SIZE_FIXED_1024BLK, 59 USB_MSC_IO_SIZE_MAX, 60 }; 61 62 enum { 63 USB_MSC_IO_DELAY_NONE, 64 USB_MSC_IO_DELAY_RANDOM_10MS, 65 USB_MSC_IO_DELAY_RANDOM_100MS, 66 USB_MSC_IO_DELAY_FIXED_10MS, 67 USB_MSC_IO_DELAY_FIXED_100MS, 68 USB_MSC_IO_DELAY_MAX, 69 }; 70 71 enum { 72 USB_MSC_IO_OFF_START_OF_DISK, 73 USB_MSC_IO_OFF_RANDOM, 74 USB_MSC_IO_OFF_MAX, 75 }; 76 77 enum { 78 USB_MSC_IO_AREA_COMPLETE, 79 USB_MSC_IO_AREA_1MB, 80 USB_MSC_IO_AREA_16MB, 81 USB_MSC_IO_AREA_256MB, 82 USB_MSC_IO_AREA_MAX, 83 }; 84 85 enum { 86 USB_MSC_IO_LUN_0, 87 USB_MSC_IO_LUN_1, 88 USB_MSC_IO_LUN_2, 89 USB_MSC_IO_LUN_3, 90 USB_MSC_IO_LUN_MAX, 91 }; 92 93 struct usb_msc_params { 94 95 uint32_t duration; 96 uint32_t max_errors; 97 98 /* See "USB_MSC_XXX" enums */ 99 100 uint8_t io_mode; 101 uint8_t io_size; 102 uint8_t io_delay; 103 uint8_t io_offset; 104 uint8_t io_area; 105 uint8_t io_pattern; 106 uint8_t io_lun; 107 108 /* booleans */ 109 uint8_t try_invalid_scsi_command; 110 uint8_t try_invalid_wrapper_block; 111 uint8_t try_invalid_max_packet_size; 112 uint8_t try_shorter_wrapper_block; 113 uint8_t try_last_lba; 114 uint8_t try_abort_data_write; 115 uint8_t try_sense_on_error; 116 uint8_t try_all_lun; 117 118 uint8_t done; 119 }; 120 121 #endif /* _USB_MSC_TEST_H_ */ 122