Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
scsi
aic7xxx
cam.h
Go to the documentation of this file.
1
/*
2
* Data structures and definitions for the CAM system.
3
*
4
* Copyright (c) 1997 Justin T. Gibbs.
5
* Copyright (c) 2000 Adaptec Inc.
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions, and the following disclaimer,
13
* without modification.
14
* 2. The name of the author may not be used to endorse or promote products
15
* derived from this software without specific prior written permission.
16
*
17
* Alternatively, this software may be distributed under the terms of the
18
* GNU General Public License ("GPL").
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
21
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
24
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30
* SUCH DAMAGE.
31
*
32
* $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/cam.h#15 $
33
*/
34
35
#ifndef _AIC7XXX_CAM_H
36
#define _AIC7XXX_CAM_H 1
37
38
#include <linux/types.h>
39
40
#define CAM_BUS_WILDCARD ((u_int)~0)
41
#define CAM_TARGET_WILDCARD ((u_int)~0)
42
#define CAM_LUN_WILDCARD ((u_int)~0)
43
44
/* CAM Status field values */
45
typedef
enum
{
46
CAM_REQ_INPROG
,
/* CCB request is in progress */
47
CAM_REQ_CMP
,
/* CCB request completed without error */
48
CAM_REQ_ABORTED
,
/* CCB request aborted by the host */
49
CAM_UA_ABORT
,
/* Unable to abort CCB request */
50
CAM_REQ_CMP_ERR
,
/* CCB request completed with an error */
51
CAM_BUSY
,
/* CAM subsystem is busy */
52
CAM_REQ_INVALID
,
/* CCB request was invalid */
53
CAM_PATH_INVALID
,
/* Supplied Path ID is invalid */
54
CAM_SEL_TIMEOUT
,
/* Target Selection Timeout */
55
CAM_CMD_TIMEOUT
,
/* Command timeout */
56
CAM_SCSI_STATUS_ERROR
,
/* SCSI error, look at error code in CCB */
57
CAM_SCSI_BUS_RESET
,
/* SCSI Bus Reset Sent/Received */
58
CAM_UNCOR_PARITY
,
/* Uncorrectable parity error occurred */
59
CAM_AUTOSENSE_FAIL
,
/* Autosense: request sense cmd fail */
60
CAM_NO_HBA
,
/* No HBA Detected Error */
61
CAM_DATA_RUN_ERR
,
/* Data Overrun error */
62
CAM_UNEXP_BUSFREE
,
/* Unexpected Bus Free */
63
CAM_SEQUENCE_FAIL
,
/* Protocol Violation */
64
CAM_CCB_LEN_ERR
,
/* CCB length supplied is inadequate */
65
CAM_PROVIDE_FAIL
,
/* Unable to provide requested capability */
66
CAM_BDR_SENT
,
/* A SCSI BDR msg was sent to target */
67
CAM_REQ_TERMIO
,
/* CCB request terminated by the host */
68
CAM_UNREC_HBA_ERROR
,
/* Unrecoverable Host Bus Adapter Error */
69
CAM_REQ_TOO_BIG
,
/* The request was too large for this host */
70
CAM_UA_TERMIO
,
/* Unable to terminate I/O CCB request */
71
CAM_MSG_REJECT_REC
,
/* Message Reject Received */
72
CAM_DEV_NOT_THERE
,
/* SCSI Device Not Installed/there */
73
CAM_RESRC_UNAVAIL
,
/* Resource Unavailable */
74
/*
75
* This request should be requeued to preserve
76
* transaction ordering. This typically occurs
77
* when the SIM recognizes an error that should
78
* freeze the queue and must place additional
79
* requests for the target at the sim level
80
* back into the XPT queue.
81
*/
82
CAM_REQUEUE_REQ
,
83
CAM_DEV_QFRZN
= 0x40,
84
85
CAM_STATUS_MASK
= 0x3F
86
}
cam_status
;
87
88
/*
89
* Definitions for the asynchronous callback CCB fields.
90
*/
91
typedef
enum
{
92
AC_GETDEV_CHANGED
= 0x800,
/* Getdev info might have changed */
93
AC_INQ_CHANGED
= 0x400,
/* Inquiry info might have changed */
94
AC_TRANSFER_NEG
= 0x200,
/* New transfer settings in effect */
95
AC_LOST_DEVICE
= 0x100,
/* A device went away */
96
AC_FOUND_DEVICE
= 0x080,
/* A new device was found */
97
AC_PATH_DEREGISTERED
= 0x040,
/* A path has de-registered */
98
AC_PATH_REGISTERED
= 0x020,
/* A new path has been registered */
99
AC_SENT_BDR
= 0x010,
/* A BDR message was sent to target */
100
AC_SCSI_AEN
= 0x008,
/* A SCSI AEN has been received */
101
AC_UNSOL_RESEL
= 0x002,
/* Unsolicited reselection occurred */
102
AC_BUS_RESET
= 0x001
/* A SCSI bus reset occurred */
103
}
ac_code
;
104
105
typedef
enum
{
106
CAM_DIR_IN
=
DMA_FROM_DEVICE
,
107
CAM_DIR_OUT
=
DMA_TO_DEVICE
,
108
CAM_DIR_NONE
=
DMA_NONE
,
109
}
ccb_flags
;
110
111
#endif
/* _AIC7XXX_CAM_H */
Generated on Thu Jan 10 2013 14:13:01 for Linux Kernel by
1.8.2