]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/scsi/zfcp_def.h
Merge branch 'core/softlockup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-omap-h63xx.git] / drivers / s390 / scsi / zfcp_def.h
index 1e837d46ea749bf1cf9a1d4c23d41d77a45b5a09..67f45fc62f53b3cad2e5df6b1ed86ee60046ecd7 100644 (file)
@@ -76,11 +76,6 @@ zfcp_address_to_sg(void *address, struct scatterlist *list, unsigned int size)
 #define ZFCP_DEVICE_MODEL       0x03
 #define ZFCP_DEVICE_MODEL_PRIV 0x04
 
-/* allow as many chained SBALs as are supported by hardware */
-#define ZFCP_MAX_SBALS_PER_REQ         FSF_MAX_SBALS_PER_REQ
-#define ZFCP_MAX_SBALS_PER_CT_REQ      FSF_MAX_SBALS_PER_REQ
-#define ZFCP_MAX_SBALS_PER_ELS_REQ     FSF_MAX_SBALS_PER_ELS_REQ
-
 /* DMQ bug workaround: don't use last SBALE */
 #define ZFCP_MAX_SBALES_PER_SBAL       (QDIO_MAX_ELEMENTS_PER_BUFFER - 1)
 
@@ -89,30 +84,17 @@ zfcp_address_to_sg(void *address, struct scatterlist *list, unsigned int size)
 
 /* max. number of (data buffer) SBALEs in largest SBAL chain */
 #define ZFCP_MAX_SBALES_PER_REQ                \
-       (ZFCP_MAX_SBALS_PER_REQ * ZFCP_MAX_SBALES_PER_SBAL - 2)
+       (FSF_MAX_SBALS_PER_REQ * ZFCP_MAX_SBALES_PER_SBAL - 2)
         /* request ID + QTCB in SBALE 0 + 1 of first SBAL in chain */
 
 #define ZFCP_MAX_SECTORS (ZFCP_MAX_SBALES_PER_REQ * 8)
         /* max. number of (data buffer) SBALEs in largest SBAL chain
            multiplied with number of sectors per 4k block */
 
-#define ZFCP_SBAL_TIMEOUT               (5*HZ)
-
-#define ZFCP_TYPE2_RECOVERY_TIME        8      /* seconds */
-
-#define QBUFF_PER_PAGE                 (PAGE_SIZE / sizeof(struct qdio_buffer))
-
 /********************* FSF SPECIFIC DEFINES *********************************/
 
-#define ZFCP_ULP_INFO_VERSION                   26
-#define ZFCP_QTCB_VERSION      FSF_QTCB_CURRENT_VERSION
 /* ATTENTION: value must not be used by hardware */
 #define FSF_QTCB_UNSOLICITED_STATUS            0x6305
-#define ZFCP_STATUS_READS_RECOM                        FSF_STATUS_READS_RECOM
-
-/* Do 1st retry in 1 second, then double the timeout for each following retry */
-#define ZFCP_EXCHANGE_CONFIG_DATA_FIRST_SLEEP  1
-#define ZFCP_EXCHANGE_CONFIG_DATA_RETRIES      7
 
 /* timeout value for "default timer" for fsf requests */
 #define ZFCP_FSF_REQUEST_TIMEOUT (60*HZ)
@@ -124,17 +106,9 @@ typedef unsigned long long fcp_lun_t;
 /* data length field may be at variable position in FCP-2 FCP_CMND IU */
 typedef unsigned int       fcp_dl_t;
 
-#define ZFCP_FC_SERVICE_CLASS_DEFAULT  FSF_CLASS_3
-
 /* timeout for name-server lookup (in seconds) */
 #define ZFCP_NS_GID_PN_TIMEOUT         10
 
-/* largest SCSI command we can process */
-/* FCP-2 (FCP_CMND IU) allows up to (255-3+16) */
-#define ZFCP_MAX_SCSI_CMND_LENGTH      255
-/* maximum number of commands in LUN queue (tagged queueing) */
-#define ZFCP_CMND_PER_LUN               32
-
 /* task attribute values in FCP-2 FCP_CMND IU */
 #define SIMPLE_Q       0
 #define HEAD_OF_Q      1
@@ -237,7 +211,6 @@ struct fcp_logo {
  * FC-FS stuff
  */
 #define R_A_TOV                                10 /* seconds */
-#define ZFCP_ELS_TIMEOUT               (2 * R_A_TOV)
 
 #define ZFCP_LS_RLS                    0x0f
 #define ZFCP_LS_ADISC                  0x52
@@ -370,45 +343,6 @@ struct zfcp_rc_entry {
 #define ZFCP_STATUS_FSFREQ_RETRY                0x00000800
 #define ZFCP_STATUS_FSFREQ_DISMISSED            0x00001000
 
-/*********************** ERROR RECOVERY PROCEDURE DEFINES ********************/
-
-#define ZFCP_MAX_ERPS                   3
-
-#define ZFCP_ERP_FSFREQ_TIMEOUT                (30 * HZ)
-#define ZFCP_ERP_MEMWAIT_TIMEOUT       HZ
-
-#define ZFCP_STATUS_ERP_TIMEDOUT       0x10000000
-#define ZFCP_STATUS_ERP_CLOSE_ONLY     0x01000000
-#define ZFCP_STATUS_ERP_DISMISSING     0x00100000
-#define ZFCP_STATUS_ERP_DISMISSED      0x00200000
-#define ZFCP_STATUS_ERP_LOWMEM         0x00400000
-
-#define ZFCP_ERP_STEP_UNINITIALIZED    0x00000000
-#define ZFCP_ERP_STEP_FSF_XCONFIG      0x00000001
-#define ZFCP_ERP_STEP_PHYS_PORT_CLOSING        0x00000010
-#define ZFCP_ERP_STEP_PORT_CLOSING     0x00000100
-#define ZFCP_ERP_STEP_NAMESERVER_OPEN  0x00000200
-#define ZFCP_ERP_STEP_NAMESERVER_LOOKUP        0x00000400
-#define ZFCP_ERP_STEP_PORT_OPENING     0x00000800
-#define ZFCP_ERP_STEP_UNIT_CLOSING     0x00001000
-#define ZFCP_ERP_STEP_UNIT_OPENING     0x00002000
-
-/* Ordered by escalation level (necessary for proper erp-code operation) */
-#define ZFCP_ERP_ACTION_REOPEN_ADAPTER         0x4
-#define ZFCP_ERP_ACTION_REOPEN_PORT_FORCED     0x3
-#define ZFCP_ERP_ACTION_REOPEN_PORT            0x2
-#define ZFCP_ERP_ACTION_REOPEN_UNIT            0x1
-
-#define ZFCP_ERP_ACTION_RUNNING                        0x1
-#define ZFCP_ERP_ACTION_READY                  0x2
-
-#define ZFCP_ERP_SUCCEEDED     0x0
-#define ZFCP_ERP_FAILED                0x1
-#define ZFCP_ERP_CONTINUES     0x2
-#define ZFCP_ERP_EXIT          0x3
-#define ZFCP_ERP_DISMISSED     0x4
-#define ZFCP_ERP_NOMEM         0x5
-
 /************************* STRUCTURE DEFINITIONS *****************************/
 
 struct zfcp_fsf_req;
@@ -530,7 +464,7 @@ struct zfcp_qdio_queue {
                                                 in queue (free_count>0) */
        atomic_t           count;             /* number of free buffers
                                                 in queue */
-       rwlock_t           lock;              /* lock for operations on queue */
+       spinlock_t         lock;              /* lock for operations on queue */
        int                pci_batch;         /* SBALs since PCI indication
                                                 was last set */
 };
@@ -636,11 +570,6 @@ struct zfcp_adapter {
        struct work_struct      scan_work;
 };
 
-/*
- * the struct device sysfs_device must be at the beginning of this structure.
- * pointer to struct device is used to free port structure in release function
- * of the device. don't change!
- */
 struct zfcp_port {
        struct device          sysfs_device;   /* sysfs device */
        struct fc_rport        *rport;         /* rport of fc transport class */
@@ -664,10 +593,6 @@ struct zfcp_port {
        u32                    supported_classes;
 };
 
-/* the struct device sysfs_device must be at the beginning of this structure.
- * pointer to struct device is used to free unit structure in release function
- * of the device. don't change!
- */
 struct zfcp_unit {
        struct device          sysfs_device;   /* sysfs device */
        struct list_head       list;           /* list of logical units */
@@ -704,7 +629,7 @@ struct zfcp_fsf_req {
        u32                    fsf_command;    /* FSF Command copy */
        struct fsf_qtcb        *qtcb;          /* address of associated QTCB */
        u32                    seq_no;         /* Sequence number of request */
-       unsigned long          data;           /* private data of request */
+       void                    *data;           /* private data of request */
        struct timer_list     timer;           /* used for erp or scsi er */
        struct zfcp_erp_action *erp_action;    /* used if this request is
                                                  issued on behalf of erp */
@@ -712,10 +637,9 @@ struct zfcp_fsf_req {
                                                  from emergency pool */
        unsigned long long     issued;         /* request sent time (STCK) */
        struct zfcp_unit       *unit;
+       void                    (*handler)(struct zfcp_fsf_req *);
 };
 
-typedef void zfcp_fsf_req_handler_t(struct zfcp_fsf_req*);
-
 /* driver data */
 struct zfcp_data {
        struct scsi_host_template scsi_host_template;
@@ -739,13 +663,6 @@ struct zfcp_data {
        struct kmem_cache               *gid_pn_cache;
 };
 
-/* number of elements for various memory pools */
-#define ZFCP_POOL_FSF_REQ_ERP_NR       1
-#define ZFCP_POOL_FSF_REQ_SCSI_NR      1
-#define ZFCP_POOL_FSF_REQ_ABORT_NR     1
-#define ZFCP_POOL_STATUS_READ_NR       ZFCP_STATUS_READS_RECOM
-#define ZFCP_POOL_DATA_GID_PN_NR       1
-
 /* struct used by memory pools for fsf_requests */
 struct zfcp_fsf_req_qtcb {
        struct zfcp_fsf_req fsf_req;
@@ -755,7 +672,6 @@ struct zfcp_fsf_req_qtcb {
 /********************** ZFCP SPECIFIC DEFINES ********************************/
 
 #define ZFCP_REQ_AUTO_CLEANUP  0x00000002
-#define ZFCP_WAIT_FOR_SBAL     0x00000004
 #define ZFCP_REQ_NO_QTCB       0x00000008
 
 #define ZFCP_SET                0x00000100
@@ -766,12 +682,6 @@ struct zfcp_fsf_req_qtcb {
            ((atomic_read(target) & mask) == mask)
 #endif
 
-extern void _zfcp_hex_dump(char *, int);
-#define ZFCP_HEX_DUMP(level, addr, count) \
-               if (ZFCP_LOG_CHECK(level)) { \
-                       _zfcp_hex_dump(addr, count); \
-               }
-
 #define zfcp_get_busid_by_adapter(adapter) (adapter->ccw_device->dev.bus_id)
 #define zfcp_get_busid_by_port(port) (zfcp_get_busid_by_adapter(port->adapter))
 #define zfcp_get_busid_by_unit(unit) (zfcp_get_busid_by_port(unit->port))
@@ -784,15 +694,6 @@ static inline int zfcp_reqlist_hash(unsigned long req_id)
        return req_id % REQUEST_LIST_SIZE;
 }
 
-static inline void zfcp_reqlist_add(struct zfcp_adapter *adapter,
-                                   struct zfcp_fsf_req *fsf_req)
-{
-       unsigned int idx;
-
-       idx = zfcp_reqlist_hash(fsf_req->req_id);
-       list_add_tail(&fsf_req->list, &adapter->req_list[idx]);
-}
-
 static inline void zfcp_reqlist_remove(struct zfcp_adapter *adapter,
                                       struct zfcp_fsf_req *fsf_req)
 {