3 * IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. By downloading, copying, installing or
4 * using the software you agree to this license. If you do not agree to this license, do not download, install,
5 * copy or use the software.
7 * Intel License Agreement
9 * Copyright (c) 2000, Intel Corporation
10 * All rights reserved.
12 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that
13 * the following conditions are met:
15 * -Redistributions of source code must retain the above copyright notice, this list of conditions and the
16 * following disclaimer.
18 * -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
19 * following disclaimer in the documentation and/or other materials provided with the distribution.
21 * -The name of Intel Corporation may not be used to endorse or promote products derived from this software
22 * without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
25 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
26 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
27 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
41 #include "iscsiutil.h"
42 #include "initiator.h"
45 * Driver configuration
48 #define CONFIG_DRIVER_MAX_LUNS 1024
54 static int driver_init(void);
55 static int driver_shutdown(void);
57 typedef struct iscsi_driver_stats_t
{
58 unsigned num_tx
, num_tx_queued
;
59 unsigned num_rx
, num_rx_queued
;
60 unsigned avg_tx
, avg_rx
;
61 unsigned tx_queued
, tx
, tx_error
, tx_overflow
;
62 unsigned rx_queued
, rx
, rx_error
, rx_overflow
;
63 unsigned aborts_success
, aborts_failed
;
64 unsigned device_resets
, bus_resets
, host_resets
;
66 } iscsi_driver_stats_t
;
72 int iscsi_proc_info (char *, char **, off_t
, int, int, int);
73 int iscsi_detect(Scsi_Host_Template
*);
74 int iscsi_release(struct Scsi_Host
*);
75 int iscsi_ioctl(Scsi_Device
*dev
, int cmd
, void *arg
);
76 int iscsi_command(Scsi_Cmnd
*SCpnt
);
77 int iscsi_queuecommand(Scsi_Cmnd
*, void (*done
)(Scsi_Cmnd
*));
78 int iscsi_bios_param(Disk
*, kdev_t
, int *);
79 int iscsi_abort_handler (Scsi_Cmnd
*SCpnt
);
80 int iscsi_device_reset_handler (Scsi_Cmnd
*);
81 int iscsi_bus_reset_handler (Scsi_Cmnd
*);
82 int iscsi_host_reset_handler(Scsi_Cmnd
*);
84 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,3,0)
85 int iscsi_revoke (Scsi_Device
*ptr
);
86 void iscsi_select_queue_depths(struct Scsi_Host
*, Scsi_Device
*);
89 #if LINUX_VERSION_CODE < LinuxVersionCode(2,4,0)
90 extern struct proc_dir_entry iscsi_proc_dir
;
93 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,0)
95 name: "Intel iSCSI Driver", \
97 proc_info: iscsi_proc_info, \
98 detect: iscsi_detect, \
99 bios_param: iscsi_bios_param, \
100 release: iscsi_release, \
102 ioctl: iscsi_ioctl, \
103 command: iscsi_command, \
104 queuecommand: iscsi_queuecommand, \
105 select_queue_depths: iscsi_select_queue_depths, \
106 eh_strategy_handler: NULL, \
107 eh_abort_handler: iscsi_abort_handler, \
108 eh_device_reset_handler: iscsi_device_reset_handler, \
109 eh_bus_reset_handler: iscsi_bus_reset_handler, \
110 eh_host_reset_handler: iscsi_host_reset_handler, \
111 slave_attach: NULL, \
112 can_queue: CONFIG_INITIATOR_QUEUE_DEPTH, \
115 cmd_per_lun: 1, /* linked commands not supported */ \
117 unchecked_isa_dma: 0, \
119 use_new_eh_code: 1, \
126 #elif LINUX_VERSION_CODE >= LinuxVersionCode(2,2,0)
128 name: "Intel iSCSI Driver", \
129 proc_dir: &iscsi_proc_dir, \
130 proc_info: iscsi_proc_info, \
131 detect: iscsi_detect, \
132 bios_param: iscsi_bios_param, \
133 release: iscsi_release, \
134 ioctl: iscsi_ioctl, \
135 command: iscsi_command, \
136 queuecommand: iscsi_queuecommand, \
137 eh_strategy_handler: NULL, \
138 eh_abort_handler: iscsi_abort_handler, \
139 eh_device_reset_handler: iscsi_device_reset_handler, \
140 eh_bus_reset_handler: iscsi_bus_reset_handler, \
141 eh_host_reset_handler: iscsi_host_reset_handler, \
142 use_new_eh_code: 1, \
143 can_queue: CONFIG_INITIATOR_QUEUE_DEPTH, \
144 sg_tablesize: SG_ALL, \
145 cmd_per_lun: 1, /* linked commands not supported */ \
148 unchecked_isa_dma: 0, \
150 slave_attach: NULL, \
156 #endif /* LINUX_VERSION_CODE */
157 #endif /* _DRIVER_H_ */