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