Compilation if target mode disabled fixed
[mirror/scst/.git] / qla2x00t / qla2x_tgt.h
1 /*
2  *  qla2x_tgt.h
3  *
4  *  Copyright (C) 2004 - 2008 Vladislav Bolkhovitin <vst@vlnb.net>
5  *  Copyright (C) 2004 - 2005 Leonid Stoljar
6  *
7  *  Additional file for the target driver support.
8  *
9  *  This program is free software; you can redistribute it and/or
10  *  modify it under the terms of the GNU General Public License
11  *  as published by the Free Software Foundation; either version 2
12  *  of the License, or (at your option) any later version.
13  *
14  *  This program is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  *  GNU General Public License for more details.
18  */
19 /*
20  * This should be included only from within qla2xxx module.
21  */
22
23 #ifndef __QLA2X_TGT_H
24 #define __QLA2X_TGT_H
25
26 #ifndef CONFIG_SCSI_QLA2XXX_TARGET
27 #error __FILE__ " included without CONFIG_SCSI_QLA2XXX_TARGET"
28 #endif
29
30 #include "qla2x_tgt_def.h"
31
32 extern struct qla2x_tgt_initiator qla_target;
33
34 /* declare here because it doesn't appear in any .h file just in qla_iocb.c */
35 extern request_t *qla2x00_req_pkt(scsi_qla_host_t *ha);
36
37 /********************************************************************\
38  * ISP Queue types left out of new QLogic driver (from old version)
39 \********************************************************************/
40
41 /*
42  * qla2x00_do_en_dis_lun
43  *      Issue enable or disable LUN entry IOCB.
44  *      Also set enable_target_mode in ha
45  *
46  * Input:
47  *      ha = adapter block pointer.
48  */
49 /* Caller MUST have hardware lock held */
50 static inline void
51 __qla2x00_en_dis_lun(scsi_qla_host_t *ha, int enable)
52 {
53         elun_entry_t *pkt;
54
55         if ((pkt = (elun_entry_t *)qla2x00_req_pkt(ha)) != NULL) {
56                 pkt->entry_type = ENABLE_LUN_TYPE;
57                 if (enable) {
58                         pkt->command_count = QLA2X00_COMMAND_COUNT_INIT;
59                         pkt->immed_notify_count = QLA2X00_IMMED_NOTIFY_COUNT_INIT;
60                         pkt->timeout = 0xffff;
61                 }
62                 else
63                 {
64                         pkt->command_count = 0;
65                         pkt->immed_notify_count = 0;
66                         pkt->timeout = 0;
67                 }
68                 DEBUG2(printk(KERN_DEBUG
69                               "scsi%lu:ENABLE_LUN IOCB imm %u cmd %u timeout %u\n",
70                               ha->host_no, pkt->immed_notify_count,
71                               pkt->command_count, pkt->timeout));
72
73                 /* Issue command to ISP */
74                 qla2x00_isp_cmd(ha);
75                 ha->flags.enable_target_mode = enable;
76         }
77 #if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3)
78         if (!pkt)
79                 printk("qla2100_en_dis_lun: **** FAILED ****\n");
80 #endif
81 }
82 /* get-lock version */
83 static inline void
84 qla2x00_en_dis_lun(scsi_qla_host_t *ha, int enable)
85 {
86         unsigned long flags = 0;
87
88         spin_lock_irqsave(&ha->hardware_lock, flags);
89         __qla2x00_en_dis_lun(ha, enable);
90         spin_unlock_irqrestore(&ha->hardware_lock, flags);
91 }
92
93
94 /*
95  * qla2x00_enable_lun
96  *      Issue enable LUN entry IOCB.
97  *
98  * Input:
99  *      ha = adapter block pointer.
100  */
101 static inline void
102 qla2x00_enable_lun(scsi_qla_host_t *ha)
103 {
104         qla2x00_en_dis_lun(ha, 1);
105 }
106
107 /*
108  * qla2x00_disable_lun
109  *      Issue enable LUN entry IOCB (command_count = 0).
110  *
111  * Input:
112  *      ha = adapter block pointer.
113  */
114 static inline void
115 qla2x00_disable_lun(scsi_qla_host_t *ha)
116 {
117         qla2x00_en_dis_lun(ha, 0);
118 }
119
120 #endif /* __QLA2X_TGT_H */