diff options
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/iscsi_if.h | 42 | ||||
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 5 |
2 files changed, 47 insertions, 0 deletions
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h index 2c1a4af9eafb..4426f00da5ff 100644 --- a/include/scsi/iscsi_if.h +++ b/include/scsi/iscsi_if.h | |||
@@ -22,6 +22,11 @@ | |||
22 | #define ISCSI_IF_H | 22 | #define ISCSI_IF_H |
23 | 23 | ||
24 | #include <scsi/iscsi_proto.h> | 24 | #include <scsi/iscsi_proto.h> |
25 | #include <linux/in.h> | ||
26 | #include <linux/in6.h> | ||
27 | |||
28 | #define ISCSI_NL_GRP_ISCSID 1 | ||
29 | #define ISCSI_NL_GRP_UIP 2 | ||
25 | 30 | ||
26 | #define UEVENT_BASE 10 | 31 | #define UEVENT_BASE 10 |
27 | #define KEVENT_BASE 100 | 32 | #define KEVENT_BASE 100 |
@@ -53,6 +58,8 @@ enum iscsi_uevent_e { | |||
53 | ISCSI_UEVENT_CREATE_BOUND_SESSION = UEVENT_BASE + 18, | 58 | ISCSI_UEVENT_CREATE_BOUND_SESSION = UEVENT_BASE + 18, |
54 | ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST = UEVENT_BASE + 19, | 59 | ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST = UEVENT_BASE + 19, |
55 | 60 | ||
61 | ISCSI_UEVENT_PATH_UPDATE = UEVENT_BASE + 20, | ||
62 | |||
56 | /* up events */ | 63 | /* up events */ |
57 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, | 64 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, |
58 | ISCSI_KEVENT_CONN_ERROR = KEVENT_BASE + 2, | 65 | ISCSI_KEVENT_CONN_ERROR = KEVENT_BASE + 2, |
@@ -60,6 +67,9 @@ enum iscsi_uevent_e { | |||
60 | ISCSI_KEVENT_DESTROY_SESSION = KEVENT_BASE + 4, | 67 | ISCSI_KEVENT_DESTROY_SESSION = KEVENT_BASE + 4, |
61 | ISCSI_KEVENT_UNBIND_SESSION = KEVENT_BASE + 5, | 68 | ISCSI_KEVENT_UNBIND_SESSION = KEVENT_BASE + 5, |
62 | ISCSI_KEVENT_CREATE_SESSION = KEVENT_BASE + 6, | 69 | ISCSI_KEVENT_CREATE_SESSION = KEVENT_BASE + 6, |
70 | |||
71 | ISCSI_KEVENT_PATH_REQ = KEVENT_BASE + 7, | ||
72 | ISCSI_KEVENT_IF_DOWN = KEVENT_BASE + 8, | ||
63 | }; | 73 | }; |
64 | 74 | ||
65 | enum iscsi_tgt_dscvr { | 75 | enum iscsi_tgt_dscvr { |
@@ -159,6 +169,9 @@ struct iscsi_uevent { | |||
159 | uint32_t param; /* enum iscsi_host_param */ | 169 | uint32_t param; /* enum iscsi_host_param */ |
160 | uint32_t len; | 170 | uint32_t len; |
161 | } set_host_param; | 171 | } set_host_param; |
172 | struct msg_set_path { | ||
173 | uint32_t host_no; | ||
174 | } set_path; | ||
162 | } u; | 175 | } u; |
163 | union { | 176 | union { |
164 | /* messages k -> u */ | 177 | /* messages k -> u */ |
@@ -192,10 +205,39 @@ struct iscsi_uevent { | |||
192 | struct msg_transport_connect_ret { | 205 | struct msg_transport_connect_ret { |
193 | uint64_t handle; | 206 | uint64_t handle; |
194 | } ep_connect_ret; | 207 | } ep_connect_ret; |
208 | struct msg_req_path { | ||
209 | uint32_t host_no; | ||
210 | } req_path; | ||
211 | struct msg_notify_if_down { | ||
212 | uint32_t host_no; | ||
213 | } notify_if_down; | ||
195 | } r; | 214 | } r; |
196 | } __attribute__ ((aligned (sizeof(uint64_t)))); | 215 | } __attribute__ ((aligned (sizeof(uint64_t)))); |
197 | 216 | ||
198 | /* | 217 | /* |
218 | * To keep the struct iscsi_uevent size the same for userspace code | ||
219 | * compatibility, the main structure for ISCSI_UEVENT_PATH_UPDATE and | ||
220 | * ISCSI_KEVENT_PATH_REQ is defined separately and comes after the | ||
221 | * struct iscsi_uevent in the NETLINK_ISCSI message. | ||
222 | */ | ||
223 | struct iscsi_path { | ||
224 | uint64_t handle; | ||
225 | uint8_t mac_addr[6]; | ||
226 | uint8_t mac_addr_old[6]; | ||
227 | uint32_t ip_addr_len; /* 4 or 16 */ | ||
228 | union { | ||
229 | struct in_addr v4_addr; | ||
230 | struct in6_addr v6_addr; | ||
231 | } src; | ||
232 | union { | ||
233 | struct in_addr v4_addr; | ||
234 | struct in6_addr v6_addr; | ||
235 | } dst; | ||
236 | uint16_t vlan_id; | ||
237 | uint16_t pmtu; | ||
238 | } __attribute__ ((aligned (sizeof(uint64_t)))); | ||
239 | |||
240 | /* | ||
199 | * Common error codes | 241 | * Common error codes |
200 | */ | 242 | */ |
201 | enum iscsi_err { | 243 | enum iscsi_err { |
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index 8cb7a31d9961..349c7f30720d 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -133,6 +133,7 @@ struct iscsi_transport { | |||
133 | void (*ep_disconnect) (struct iscsi_endpoint *ep); | 133 | void (*ep_disconnect) (struct iscsi_endpoint *ep); |
134 | int (*tgt_dscvr) (struct Scsi_Host *shost, enum iscsi_tgt_dscvr type, | 134 | int (*tgt_dscvr) (struct Scsi_Host *shost, enum iscsi_tgt_dscvr type, |
135 | uint32_t enable, struct sockaddr *dst_addr); | 135 | uint32_t enable, struct sockaddr *dst_addr); |
136 | int (*set_path) (struct Scsi_Host *shost, struct iscsi_path *params); | ||
136 | }; | 137 | }; |
137 | 138 | ||
138 | /* | 139 | /* |
@@ -149,6 +150,10 @@ extern void iscsi_conn_error_event(struct iscsi_cls_conn *conn, | |||
149 | extern int iscsi_recv_pdu(struct iscsi_cls_conn *conn, struct iscsi_hdr *hdr, | 150 | extern int iscsi_recv_pdu(struct iscsi_cls_conn *conn, struct iscsi_hdr *hdr, |
150 | char *data, uint32_t data_size); | 151 | char *data, uint32_t data_size); |
151 | 152 | ||
153 | extern int iscsi_offload_mesg(struct Scsi_Host *shost, | ||
154 | struct iscsi_transport *transport, uint32_t type, | ||
155 | char *data, uint16_t data_size); | ||
156 | |||
152 | struct iscsi_cls_conn { | 157 | struct iscsi_cls_conn { |
153 | struct list_head conn_list; /* item in connlist */ | 158 | struct list_head conn_list; /* item in connlist */ |
154 | void *dd_data; /* LLD private data */ | 159 | void *dd_data; /* LLD private data */ |