1254159Shselasky/* $FreeBSD$ */ 2254159Shselasky/*- 3254159Shselasky * Copyright (c) 2010 Hans Petter Selasky. All rights reserved. 4254159Shselasky * 5254159Shselasky * Redistribution and use in source and binary forms, with or without 6254159Shselasky * modification, are permitted provided that the following conditions 7254159Shselasky * are met: 8254159Shselasky * 1. Redistributions of source code must retain the above copyright 9254159Shselasky * notice, this list of conditions and the following disclaimer. 10254159Shselasky * 2. Redistributions in binary form must reproduce the above copyright 11254159Shselasky * notice, this list of conditions and the following disclaimer in the 12254159Shselasky * documentation and/or other materials provided with the distribution. 13254159Shselasky * 14254159Shselasky * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15254159Shselasky * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16254159Shselasky * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17254159Shselasky * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18254159Shselasky * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19254159Shselasky * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20254159Shselasky * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21254159Shselasky * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22254159Shselasky * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23254159Shselasky * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24254159Shselasky * SUCH DAMAGE. 25254159Shselasky */ 26254159Shselasky 27254159Shselasky#ifndef _USB_MSC_TEST_H_ 28254159Shselasky#define _USB_MSC_TEST_H_ 29254159Shselasky 30254159Shselaskyenum { 31254159Shselasky USB_MSC_IO_MODE_READ_ONLY, 32254159Shselasky USB_MSC_IO_MODE_WRITE_ONCE_READ_ONLY, 33254159Shselasky USB_MSC_IO_MODE_WRITE_ONLY, 34254159Shselasky USB_MSC_IO_MODE_READ_WRITE, 35254159Shselasky USB_MSC_IO_MODE_MAX, 36254159Shselasky}; 37254159Shselasky 38254159Shselaskyenum { 39254159Shselasky USB_MSC_IO_PATTERN_FIXED, 40254159Shselasky USB_MSC_IO_PATTERN_RANDOM, 41254159Shselasky USB_MSC_IO_PATTERN_PRESERVE, 42254159Shselasky USB_MSC_IO_PATTERN_MAX, 43254159Shselasky}; 44254159Shselasky 45254159Shselaskyenum { 46254159Shselasky USB_MSC_IO_SIZE_RANDOM, 47254159Shselasky USB_MSC_IO_SIZE_INCREASING, 48254159Shselasky USB_MSC_IO_SIZE_FIXED_1BLK, 49254159Shselasky USB_MSC_IO_SIZE_FIXED_2BLK, 50254159Shselasky USB_MSC_IO_SIZE_FIXED_4BLK, 51254159Shselasky USB_MSC_IO_SIZE_FIXED_8BLK, 52254159Shselasky USB_MSC_IO_SIZE_FIXED_16BLK, 53254159Shselasky USB_MSC_IO_SIZE_FIXED_32BLK, 54254159Shselasky USB_MSC_IO_SIZE_FIXED_64BLK, 55254159Shselasky USB_MSC_IO_SIZE_FIXED_128BLK, 56254159Shselasky USB_MSC_IO_SIZE_FIXED_256BLK, 57254159Shselasky USB_MSC_IO_SIZE_FIXED_512BLK, 58254159Shselasky USB_MSC_IO_SIZE_FIXED_1024BLK, 59254159Shselasky USB_MSC_IO_SIZE_MAX, 60254159Shselasky}; 61254159Shselasky 62254159Shselaskyenum { 63254159Shselasky USB_MSC_IO_DELAY_NONE, 64254159Shselasky USB_MSC_IO_DELAY_RANDOM_10MS, 65254159Shselasky USB_MSC_IO_DELAY_RANDOM_100MS, 66254159Shselasky USB_MSC_IO_DELAY_FIXED_10MS, 67254159Shselasky USB_MSC_IO_DELAY_FIXED_100MS, 68254159Shselasky USB_MSC_IO_DELAY_MAX, 69254159Shselasky}; 70254159Shselasky 71254159Shselaskyenum { 72254159Shselasky USB_MSC_IO_OFF_START_OF_DISK, 73254159Shselasky USB_MSC_IO_OFF_RANDOM, 74254159Shselasky USB_MSC_IO_OFF_MAX, 75254159Shselasky}; 76254159Shselasky 77254159Shselaskyenum { 78254159Shselasky USB_MSC_IO_AREA_COMPLETE, 79254159Shselasky USB_MSC_IO_AREA_1MB, 80254159Shselasky USB_MSC_IO_AREA_16MB, 81254159Shselasky USB_MSC_IO_AREA_256MB, 82254159Shselasky USB_MSC_IO_AREA_MAX, 83254159Shselasky}; 84254159Shselasky 85254159Shselaskyenum { 86254159Shselasky USB_MSC_IO_LUN_0, 87254159Shselasky USB_MSC_IO_LUN_1, 88254159Shselasky USB_MSC_IO_LUN_2, 89254159Shselasky USB_MSC_IO_LUN_3, 90254159Shselasky USB_MSC_IO_LUN_MAX, 91254159Shselasky}; 92254159Shselasky 93254159Shselaskystruct usb_msc_params { 94254159Shselasky 95254159Shselasky uint32_t duration; 96254159Shselasky uint32_t max_errors; 97254159Shselasky 98254159Shselasky /* See "USB_MSC_XXX" enums */ 99254159Shselasky 100254159Shselasky uint8_t io_mode; 101254159Shselasky uint8_t io_size; 102254159Shselasky uint8_t io_delay; 103254159Shselasky uint8_t io_offset; 104254159Shselasky uint8_t io_area; 105254159Shselasky uint8_t io_pattern; 106254159Shselasky uint8_t io_lun; 107254159Shselasky 108254159Shselasky /* booleans */ 109254159Shselasky uint8_t try_invalid_scsi_command; 110254159Shselasky uint8_t try_invalid_wrapper_block; 111254159Shselasky uint8_t try_invalid_max_packet_size; 112254159Shselasky uint8_t try_last_lba; 113254159Shselasky uint8_t try_abort_data_write; 114254159Shselasky uint8_t try_sense_on_error; 115254159Shselasky uint8_t try_all_lun; 116254159Shselasky 117254159Shselasky uint8_t done; 118254159Shselasky}; 119254159Shselasky 120254159Shselasky#endif /* _USB_MSC_TEST_H_ */ 121