root/drivers/scsi/aic7xxx/cam.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */

/* [<][>][^][v][top][bottom][index][help] */