]>
Commit | Line | Data |
---|---|---|
90eeb01a MC |
1 | /* |
2 | * iSCSI Transport BSG Interface | |
3 | * | |
4 | * Copyright (C) 2009 James Smart, Emulex Corporation | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License as published by | |
8 | * the Free Software Foundation; either version 2 of the License, or | |
9 | * (at your option) any later version. | |
10 | * | |
11 | * This program is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | * GNU General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU General Public License | |
17 | * along with this program; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | */ | |
21 | ||
22 | #ifndef SCSI_BSG_ISCSI_H | |
23 | #define SCSI_BSG_ISCSI_H | |
24 | ||
25 | /* | |
26 | * This file intended to be included by both kernel and user space | |
27 | */ | |
28 | ||
29 | #include <scsi/scsi.h> | |
30 | ||
31 | /* | |
32 | * iSCSI Transport SGIO v4 BSG Message Support | |
33 | */ | |
34 | ||
35 | /* Default BSG request timeout (in seconds) */ | |
36 | #define ISCSI_DEFAULT_BSG_TIMEOUT (10 * HZ) | |
37 | ||
38 | ||
39 | /* | |
40 | * Request Message Codes supported by the iSCSI Transport | |
41 | */ | |
42 | ||
43 | /* define the class masks for the message codes */ | |
44 | #define ISCSI_BSG_CLS_MASK 0xF0000000 /* find object class */ | |
45 | #define ISCSI_BSG_HST_MASK 0x80000000 /* iscsi host class */ | |
46 | ||
47 | /* iscsi host Message Codes */ | |
48 | #define ISCSI_BSG_HST_VENDOR (ISCSI_BSG_HST_MASK | 0x000000FF) | |
49 | ||
50 | ||
51 | /* | |
52 | * iSCSI Host Messages | |
53 | */ | |
54 | ||
55 | /* ISCSI_BSG_HST_VENDOR : */ | |
56 | ||
57 | /* Request: | |
58 | * Note: When specifying vendor_id, be sure to read the Vendor Type and ID | |
59 | * formatting requirements specified in scsi_netlink.h | |
60 | */ | |
61 | struct iscsi_bsg_host_vendor { | |
62 | /* | |
63 | * Identifies the vendor that the message is formatted for. This | |
64 | * should be the recipient of the message. | |
65 | */ | |
66 | uint64_t vendor_id; | |
67 | ||
68 | /* start of vendor command area */ | |
69 | uint32_t vendor_cmd[0]; | |
70 | }; | |
71 | ||
72 | /* Response: | |
73 | */ | |
74 | struct iscsi_bsg_host_vendor_reply { | |
75 | /* start of vendor response area */ | |
76 | uint32_t vendor_rsp[0]; | |
77 | }; | |
78 | ||
79 | ||
80 | /* request (CDB) structure of the sg_io_v4 */ | |
81 | struct iscsi_bsg_request { | |
82 | uint32_t msgcode; | |
83 | union { | |
84 | struct iscsi_bsg_host_vendor h_vendor; | |
85 | } rqst_data; | |
86 | } __attribute__((packed)); | |
87 | ||
88 | ||
89 | /* response (request sense data) structure of the sg_io_v4 */ | |
90 | struct iscsi_bsg_reply { | |
91 | /* | |
92 | * The completion result. Result exists in two forms: | |
93 | * if negative, it is an -Exxx system errno value. There will | |
94 | * be no further reply information supplied. | |
95 | * else, it's the 4-byte scsi error result, with driver, host, | |
96 | * msg and status fields. The per-msgcode reply structure | |
97 | * will contain valid data. | |
98 | */ | |
99 | uint32_t result; | |
100 | ||
101 | /* If there was reply_payload, how much was recevied ? */ | |
102 | uint32_t reply_payload_rcv_len; | |
103 | ||
104 | union { | |
105 | struct iscsi_bsg_host_vendor_reply vendor_reply; | |
106 | } reply_data; | |
107 | }; | |
108 | ||
109 | ||
110 | #endif /* SCSI_BSG_ISCSI_H */ |