1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 239e84790SAlex Aizman /* 339e84790SAlex Aizman * iSCSI User/Kernel Shares (Defines, Constants, Protocol definitions, etc) 439e84790SAlex Aizman * 539e84790SAlex Aizman * Copyright (C) 2005 Dmitry Yusupov 639e84790SAlex Aizman * Copyright (C) 2005 Alex Aizman 739e84790SAlex Aizman * maintained by open-iscsi@googlegroups.com 839e84790SAlex Aizman */ 939e84790SAlex Aizman 1039e84790SAlex Aizman #ifndef ISCSI_IF_H 1139e84790SAlex Aizman #define ISCSI_IF_H 1239e84790SAlex Aizman 1339e84790SAlex Aizman #include <scsi/iscsi_proto.h> 1443514774SMichael Chan #include <linux/in.h> 1543514774SMichael Chan #include <linux/in6.h> 1643514774SMichael Chan 1743514774SMichael Chan #define ISCSI_NL_GRP_ISCSID 1 1843514774SMichael Chan #define ISCSI_NL_GRP_UIP 2 1939e84790SAlex Aizman 2039e84790SAlex Aizman #define UEVENT_BASE 10 2139e84790SAlex Aizman #define KEVENT_BASE 100 2239e84790SAlex Aizman #define ISCSI_ERR_BASE 1000 2339e84790SAlex Aizman 2439e84790SAlex Aizman enum iscsi_uevent_e { 2539e84790SAlex Aizman ISCSI_UEVENT_UNKNOWN = 0, 2639e84790SAlex Aizman 2739e84790SAlex Aizman /* down events */ 2839e84790SAlex Aizman ISCSI_UEVENT_CREATE_SESSION = UEVENT_BASE + 1, 2939e84790SAlex Aizman ISCSI_UEVENT_DESTROY_SESSION = UEVENT_BASE + 2, 3039e84790SAlex Aizman ISCSI_UEVENT_CREATE_CONN = UEVENT_BASE + 3, 3139e84790SAlex Aizman ISCSI_UEVENT_DESTROY_CONN = UEVENT_BASE + 4, 3239e84790SAlex Aizman ISCSI_UEVENT_BIND_CONN = UEVENT_BASE + 5, 3339e84790SAlex Aizman ISCSI_UEVENT_SET_PARAM = UEVENT_BASE + 6, 3439e84790SAlex Aizman ISCSI_UEVENT_START_CONN = UEVENT_BASE + 7, 3539e84790SAlex Aizman ISCSI_UEVENT_STOP_CONN = UEVENT_BASE + 8, 3639e84790SAlex Aizman ISCSI_UEVENT_SEND_PDU = UEVENT_BASE + 9, 3739e84790SAlex Aizman ISCSI_UEVENT_GET_STATS = UEVENT_BASE + 10, 3839e84790SAlex Aizman ISCSI_UEVENT_GET_PARAM = UEVENT_BASE + 11, 3939e84790SAlex Aizman 40264faaaaSOr Gerlitz ISCSI_UEVENT_TRANSPORT_EP_CONNECT = UEVENT_BASE + 12, 41264faaaaSOr Gerlitz ISCSI_UEVENT_TRANSPORT_EP_POLL = UEVENT_BASE + 13, 42264faaaaSOr Gerlitz ISCSI_UEVENT_TRANSPORT_EP_DISCONNECT = UEVENT_BASE + 14, 43264faaaaSOr Gerlitz 4401cb225dSMike Christie ISCSI_UEVENT_TGT_DSCVR = UEVENT_BASE + 15, 451d9bf13aSMike Christie ISCSI_UEVENT_SET_HOST_PARAM = UEVENT_BASE + 16, 4626974789SMike Christie ISCSI_UEVENT_UNBIND_SESSION = UEVENT_BASE + 17, 4740753caaSMike Christie ISCSI_UEVENT_CREATE_BOUND_SESSION = UEVENT_BASE + 18, 4810eb0f01SMike Christie ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST = UEVENT_BASE + 19, 4901cb225dSMike Christie 5043514774SMichael Chan ISCSI_UEVENT_PATH_UPDATE = UEVENT_BASE + 20, 5156c155b5SMike Christie ISCSI_UEVENT_SET_IFACE_PARAMS = UEVENT_BASE + 21, 52ac20c7bfSVikas Chaudhary ISCSI_UEVENT_PING = UEVENT_BASE + 22, 536260a5d2SNilesh Javali ISCSI_UEVENT_GET_CHAP = UEVENT_BASE + 23, 546260a5d2SNilesh Javali ISCSI_UEVENT_DELETE_CHAP = UEVENT_BASE + 24, 55c6a4bb2eSAdheer Chandravanshi ISCSI_UEVENT_SET_FLASHNODE_PARAMS = UEVENT_BASE + 25, 56c6a4bb2eSAdheer Chandravanshi ISCSI_UEVENT_NEW_FLASHNODE = UEVENT_BASE + 26, 57c6a4bb2eSAdheer Chandravanshi ISCSI_UEVENT_DEL_FLASHNODE = UEVENT_BASE + 27, 58c6a4bb2eSAdheer Chandravanshi ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28, 59c6a4bb2eSAdheer Chandravanshi ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29, 60c6a4bb2eSAdheer Chandravanshi ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30, 613af142feSAdheer Chandravanshi ISCSI_UEVENT_SET_CHAP = UEVENT_BASE + 31, 626fa7c554SLalit Chandivade ISCSI_UEVENT_GET_HOST_STATS = UEVENT_BASE + 32, 63*cc6b32eeSFrank Mayhar ISCSI_UEVENT_DESTROY_SESSION_ASYNC = UEVENT_BASE + 33, 6443514774SMichael Chan 6539e84790SAlex Aizman /* up events */ 6639e84790SAlex Aizman ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, 6739e84790SAlex Aizman ISCSI_KEVENT_CONN_ERROR = KEVENT_BASE + 2, 6839e84790SAlex Aizman ISCSI_KEVENT_IF_ERROR = KEVENT_BASE + 3, 6953cb8a1fSMike Christie ISCSI_KEVENT_DESTROY_SESSION = KEVENT_BASE + 4, 7026974789SMike Christie ISCSI_KEVENT_UNBIND_SESSION = KEVENT_BASE + 5, 7126974789SMike Christie ISCSI_KEVENT_CREATE_SESSION = KEVENT_BASE + 6, 7243514774SMichael Chan 7343514774SMichael Chan ISCSI_KEVENT_PATH_REQ = KEVENT_BASE + 7, 7443514774SMichael Chan ISCSI_KEVENT_IF_DOWN = KEVENT_BASE + 8, 7517fa575eSManish Rangankar ISCSI_KEVENT_CONN_LOGIN_STATE = KEVENT_BASE + 9, 76a11e2545SVikas Chaudhary ISCSI_KEVENT_HOST_EVENT = KEVENT_BASE + 10, 77ac20c7bfSVikas Chaudhary ISCSI_KEVENT_PING_COMP = KEVENT_BASE + 11, 7839e84790SAlex Aizman }; 7939e84790SAlex Aizman 8001cb225dSMike Christie enum iscsi_tgt_dscvr { 8101cb225dSMike Christie ISCSI_TGT_DSCVR_SEND_TARGETS = 1, 8201cb225dSMike Christie ISCSI_TGT_DSCVR_ISNS = 2, 8301cb225dSMike Christie ISCSI_TGT_DSCVR_SLP = 3, 8401cb225dSMike Christie }; 8501cb225dSMike Christie 86a11e2545SVikas Chaudhary enum iscsi_host_event_code { 87a11e2545SVikas Chaudhary ISCSI_EVENT_LINKUP = 1, 88a11e2545SVikas Chaudhary ISCSI_EVENT_LINKDOWN, 89a11e2545SVikas Chaudhary /* must always be last */ 90a11e2545SVikas Chaudhary ISCSI_EVENT_MAX, 91a11e2545SVikas Chaudhary }; 92a11e2545SVikas Chaudhary 9339e84790SAlex Aizman struct iscsi_uevent { 9439e84790SAlex Aizman uint32_t type; /* k/u events type */ 9539e84790SAlex Aizman uint32_t iferror; /* carries interface or resource errors */ 9639e84790SAlex Aizman uint64_t transport_handle; 9739e84790SAlex Aizman 9839e84790SAlex Aizman union { 9939e84790SAlex Aizman /* messages u -> k */ 10039e84790SAlex Aizman struct msg_create_session { 10139e84790SAlex Aizman uint32_t initial_cmdsn; 1021548271eSMike Christie uint16_t cmds_max; 1031548271eSMike Christie uint16_t queue_depth; 10439e84790SAlex Aizman } c_session; 10540753caaSMike Christie struct msg_create_bound_session { 106d82ff9beSMike Christie uint64_t ep_handle; 10740753caaSMike Christie uint32_t initial_cmdsn; 10840753caaSMike Christie uint16_t cmds_max; 10940753caaSMike Christie uint16_t queue_depth; 11040753caaSMike Christie } c_bound_session; 11139e84790SAlex Aizman struct msg_destroy_session { 11239e84790SAlex Aizman uint32_t sid; 11339e84790SAlex Aizman } d_session; 11439e84790SAlex Aizman struct msg_create_conn { 11539e84790SAlex Aizman uint32_t sid; 116b5c7a12dSMike Christie uint32_t cid; 11739e84790SAlex Aizman } c_conn; 11839e84790SAlex Aizman struct msg_bind_conn { 119b5c7a12dSMike Christie uint32_t sid; 120b5c7a12dSMike Christie uint32_t cid; 121264faaaaSOr Gerlitz uint64_t transport_eph; 12239e84790SAlex Aizman uint32_t is_leading; 12339e84790SAlex Aizman } b_conn; 12439e84790SAlex Aizman struct msg_destroy_conn { 125b5c7a12dSMike Christie uint32_t sid; 12639e84790SAlex Aizman uint32_t cid; 12739e84790SAlex Aizman } d_conn; 12839e84790SAlex Aizman struct msg_send_pdu { 129b5c7a12dSMike Christie uint32_t sid; 130b5c7a12dSMike Christie uint32_t cid; 13139e84790SAlex Aizman uint32_t hdr_size; 13239e84790SAlex Aizman uint32_t data_size; 13339e84790SAlex Aizman } send_pdu; 13439e84790SAlex Aizman struct msg_set_param { 135b5c7a12dSMike Christie uint32_t sid; 136b5c7a12dSMike Christie uint32_t cid; 13739e84790SAlex Aizman uint32_t param; /* enum iscsi_param */ 138fd7255f5SMike Christie uint32_t len; 13939e84790SAlex Aizman } set_param; 14039e84790SAlex Aizman struct msg_start_conn { 141b5c7a12dSMike Christie uint32_t sid; 142b5c7a12dSMike Christie uint32_t cid; 14339e84790SAlex Aizman } start_conn; 14439e84790SAlex Aizman struct msg_stop_conn { 145b5c7a12dSMike Christie uint32_t sid; 146b5c7a12dSMike Christie uint32_t cid; 14739e84790SAlex Aizman uint64_t conn_handle; 14839e84790SAlex Aizman uint32_t flag; 14939e84790SAlex Aizman } stop_conn; 15039e84790SAlex Aizman struct msg_get_stats { 151b5c7a12dSMike Christie uint32_t sid; 152b5c7a12dSMike Christie uint32_t cid; 15339e84790SAlex Aizman } get_stats; 154264faaaaSOr Gerlitz struct msg_transport_connect { 155264faaaaSOr Gerlitz uint32_t non_blocking; 156264faaaaSOr Gerlitz } ep_connect; 15710eb0f01SMike Christie struct msg_transport_connect_through_host { 15810eb0f01SMike Christie uint32_t host_no; 15910eb0f01SMike Christie uint32_t non_blocking; 16010eb0f01SMike Christie } ep_connect_through_host; 161264faaaaSOr Gerlitz struct msg_transport_poll { 162264faaaaSOr Gerlitz uint64_t ep_handle; 163264faaaaSOr Gerlitz uint32_t timeout_ms; 164264faaaaSOr Gerlitz } ep_poll; 165264faaaaSOr Gerlitz struct msg_transport_disconnect { 166264faaaaSOr Gerlitz uint64_t ep_handle; 167264faaaaSOr Gerlitz } ep_disconnect; 16801cb225dSMike Christie struct msg_tgt_dscvr { 16901cb225dSMike Christie enum iscsi_tgt_dscvr type; 17001cb225dSMike Christie uint32_t host_no; 17101cb225dSMike Christie /* 17201cb225dSMike Christie * enable = 1 to establish a new connection 17301cb225dSMike Christie * with the server. enable = 0 to disconnect 17401cb225dSMike Christie * from the server. Used primarily to switch 17501cb225dSMike Christie * from one iSNS server to another. 17601cb225dSMike Christie */ 17701cb225dSMike Christie uint32_t enable; 17801cb225dSMike Christie } tgt_dscvr; 1791d9bf13aSMike Christie struct msg_set_host_param { 1801d9bf13aSMike Christie uint32_t host_no; 1811d9bf13aSMike Christie uint32_t param; /* enum iscsi_host_param */ 1821d9bf13aSMike Christie uint32_t len; 1831d9bf13aSMike Christie } set_host_param; 18443514774SMichael Chan struct msg_set_path { 18543514774SMichael Chan uint32_t host_no; 18643514774SMichael Chan } set_path; 18756c155b5SMike Christie struct msg_set_iface_params { 18856c155b5SMike Christie uint32_t host_no; 18956c155b5SMike Christie uint32_t count; 19056c155b5SMike Christie } set_iface_params; 191ac20c7bfSVikas Chaudhary struct msg_iscsi_ping { 192ac20c7bfSVikas Chaudhary uint32_t host_no; 193ac20c7bfSVikas Chaudhary uint32_t iface_num; 194ac20c7bfSVikas Chaudhary uint32_t iface_type; 195ac20c7bfSVikas Chaudhary uint32_t payload_size; 196ac20c7bfSVikas Chaudhary uint32_t pid; /* unique ping id associated 197ac20c7bfSVikas Chaudhary with each ping request */ 198ac20c7bfSVikas Chaudhary } iscsi_ping; 1996260a5d2SNilesh Javali struct msg_get_chap { 2006260a5d2SNilesh Javali uint32_t host_no; 2016260a5d2SNilesh Javali uint32_t num_entries; /* number of CHAP entries 2026260a5d2SNilesh Javali * on request, number of 2036260a5d2SNilesh Javali * valid CHAP entries on 2046260a5d2SNilesh Javali * response */ 2056260a5d2SNilesh Javali uint16_t chap_tbl_idx; 2066260a5d2SNilesh Javali } get_chap; 2076260a5d2SNilesh Javali struct msg_delete_chap { 2086260a5d2SNilesh Javali uint32_t host_no; 2096260a5d2SNilesh Javali uint16_t chap_tbl_idx; 2106260a5d2SNilesh Javali } delete_chap; 211c6a4bb2eSAdheer Chandravanshi struct msg_set_flashnode_param { 212c6a4bb2eSAdheer Chandravanshi uint32_t host_no; 213c6a4bb2eSAdheer Chandravanshi uint32_t flashnode_idx; 214c6a4bb2eSAdheer Chandravanshi uint32_t count; 215c6a4bb2eSAdheer Chandravanshi } set_flashnode; 216c6a4bb2eSAdheer Chandravanshi struct msg_new_flashnode { 217c6a4bb2eSAdheer Chandravanshi uint32_t host_no; 218c6a4bb2eSAdheer Chandravanshi uint32_t len; 219c6a4bb2eSAdheer Chandravanshi } new_flashnode; 220c6a4bb2eSAdheer Chandravanshi struct msg_del_flashnode { 221c6a4bb2eSAdheer Chandravanshi uint32_t host_no; 222c6a4bb2eSAdheer Chandravanshi uint32_t flashnode_idx; 223c6a4bb2eSAdheer Chandravanshi } del_flashnode; 224c6a4bb2eSAdheer Chandravanshi struct msg_login_flashnode { 225c6a4bb2eSAdheer Chandravanshi uint32_t host_no; 226c6a4bb2eSAdheer Chandravanshi uint32_t flashnode_idx; 227c6a4bb2eSAdheer Chandravanshi } login_flashnode; 228c6a4bb2eSAdheer Chandravanshi struct msg_logout_flashnode { 229c6a4bb2eSAdheer Chandravanshi uint32_t host_no; 230c6a4bb2eSAdheer Chandravanshi uint32_t flashnode_idx; 231c6a4bb2eSAdheer Chandravanshi } logout_flashnode; 232c6a4bb2eSAdheer Chandravanshi struct msg_logout_flashnode_sid { 233c6a4bb2eSAdheer Chandravanshi uint32_t host_no; 234c6a4bb2eSAdheer Chandravanshi uint32_t sid; 235c6a4bb2eSAdheer Chandravanshi } logout_flashnode_sid; 2366fa7c554SLalit Chandivade struct msg_get_host_stats { 2376fa7c554SLalit Chandivade uint32_t host_no; 2386fa7c554SLalit Chandivade } get_host_stats; 23939e84790SAlex Aizman } u; 24039e84790SAlex Aizman union { 24139e84790SAlex Aizman /* messages k -> u */ 24239e84790SAlex Aizman int retcode; 24339e84790SAlex Aizman struct msg_create_session_ret { 24439e84790SAlex Aizman uint32_t sid; 245b5c7a12dSMike Christie uint32_t host_no; 24639e84790SAlex Aizman } c_session_ret; 247b5c7a12dSMike Christie struct msg_create_conn_ret { 248b5c7a12dSMike Christie uint32_t sid; 249b5c7a12dSMike Christie uint32_t cid; 250b5c7a12dSMike Christie } c_conn_ret; 25126974789SMike Christie struct msg_unbind_session { 25226974789SMike Christie uint32_t sid; 25326974789SMike Christie uint32_t host_no; 25426974789SMike Christie } unbind_session; 25539e84790SAlex Aizman struct msg_recv_req { 256b5c7a12dSMike Christie uint32_t sid; 257b5c7a12dSMike Christie uint32_t cid; 25839e84790SAlex Aizman uint64_t recv_handle; 25939e84790SAlex Aizman } recv_req; 26017fa575eSManish Rangankar struct msg_conn_login { 26117fa575eSManish Rangankar uint32_t sid; 26217fa575eSManish Rangankar uint32_t cid; 26317fa575eSManish Rangankar uint32_t state; /* enum iscsi_conn_state */ 26417fa575eSManish Rangankar } conn_login; 26539e84790SAlex Aizman struct msg_conn_error { 266b5c7a12dSMike Christie uint32_t sid; 267b5c7a12dSMike Christie uint32_t cid; 26839e84790SAlex Aizman uint32_t error; /* enum iscsi_err */ 26939e84790SAlex Aizman } connerror; 27053cb8a1fSMike Christie struct msg_session_destroyed { 27153cb8a1fSMike Christie uint32_t host_no; 27253cb8a1fSMike Christie uint32_t sid; 27353cb8a1fSMike Christie } d_session; 274264faaaaSOr Gerlitz struct msg_transport_connect_ret { 275264faaaaSOr Gerlitz uint64_t handle; 276264faaaaSOr Gerlitz } ep_connect_ret; 27743514774SMichael Chan struct msg_req_path { 27843514774SMichael Chan uint32_t host_no; 27943514774SMichael Chan } req_path; 28043514774SMichael Chan struct msg_notify_if_down { 28143514774SMichael Chan uint32_t host_no; 28243514774SMichael Chan } notify_if_down; 283a11e2545SVikas Chaudhary struct msg_host_event { 284a11e2545SVikas Chaudhary uint32_t host_no; 285a11e2545SVikas Chaudhary uint32_t data_size; 286a11e2545SVikas Chaudhary enum iscsi_host_event_code code; 287a11e2545SVikas Chaudhary } host_event; 288ac20c7bfSVikas Chaudhary struct msg_ping_comp { 289ac20c7bfSVikas Chaudhary uint32_t host_no; 2901a590cabSVikas Chaudhary uint32_t status; /* enum 2911a590cabSVikas Chaudhary * iscsi_ping_status_code */ 292ac20c7bfSVikas Chaudhary uint32_t pid; /* unique ping id associated 293ac20c7bfSVikas Chaudhary with each ping request */ 294ac20c7bfSVikas Chaudhary uint32_t data_size; 295ac20c7bfSVikas Chaudhary } ping_comp; 296c6a4bb2eSAdheer Chandravanshi struct msg_new_flashnode_ret { 297c6a4bb2eSAdheer Chandravanshi uint32_t flashnode_idx; 298c6a4bb2eSAdheer Chandravanshi } new_flashnode_ret; 29939e84790SAlex Aizman } r; 30039e84790SAlex Aizman } __attribute__ ((aligned (sizeof(uint64_t)))); 30139e84790SAlex Aizman 30256c155b5SMike Christie enum iscsi_param_type { 30356c155b5SMike Christie ISCSI_PARAM, /* iscsi_param (session, conn, target, LU) */ 30456c155b5SMike Christie ISCSI_HOST_PARAM, /* iscsi_host_param */ 30556c155b5SMike Christie ISCSI_NET_PARAM, /* iscsi_net_param */ 306c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */ 3073af142feSAdheer Chandravanshi ISCSI_CHAP_PARAM, /* iscsi_chap_param */ 3083e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM, /* iscsi_iface_param */ 30956c155b5SMike Christie }; 31056c155b5SMike Christie 3113af142feSAdheer Chandravanshi /* structure for minimalist usecase */ 3123af142feSAdheer Chandravanshi struct iscsi_param_info { 3133af142feSAdheer Chandravanshi uint32_t len; /* Actual length of the param value */ 3143af142feSAdheer Chandravanshi uint16_t param; /* iscsi param */ 3155febf6d6SGustavo A. R. Silva uint8_t value[]; /* length sized value follows */ 3163af142feSAdheer Chandravanshi } __packed; 3173af142feSAdheer Chandravanshi 31856c155b5SMike Christie struct iscsi_iface_param_info { 31956c155b5SMike Christie uint32_t iface_num; /* iface number, 0 - n */ 32056c155b5SMike Christie uint32_t len; /* Actual length of the param */ 32156c155b5SMike Christie uint16_t param; /* iscsi param value */ 32256c155b5SMike Christie uint8_t iface_type; /* IPv4 or IPv6 */ 32356c155b5SMike Christie uint8_t param_type; /* iscsi_param_type */ 3245febf6d6SGustavo A. R. Silva uint8_t value[]; /* length sized value follows */ 32556c155b5SMike Christie } __packed; 32656c155b5SMike Christie 32739e84790SAlex Aizman /* 32843514774SMichael Chan * To keep the struct iscsi_uevent size the same for userspace code 32943514774SMichael Chan * compatibility, the main structure for ISCSI_UEVENT_PATH_UPDATE and 33043514774SMichael Chan * ISCSI_KEVENT_PATH_REQ is defined separately and comes after the 33143514774SMichael Chan * struct iscsi_uevent in the NETLINK_ISCSI message. 33243514774SMichael Chan */ 33343514774SMichael Chan struct iscsi_path { 33443514774SMichael Chan uint64_t handle; 33543514774SMichael Chan uint8_t mac_addr[6]; 33643514774SMichael Chan uint8_t mac_addr_old[6]; 33743514774SMichael Chan uint32_t ip_addr_len; /* 4 or 16 */ 33843514774SMichael Chan union { 33943514774SMichael Chan struct in_addr v4_addr; 34043514774SMichael Chan struct in6_addr v6_addr; 34143514774SMichael Chan } src; 34243514774SMichael Chan union { 34343514774SMichael Chan struct in_addr v4_addr; 34443514774SMichael Chan struct in6_addr v6_addr; 34543514774SMichael Chan } dst; 34643514774SMichael Chan uint16_t vlan_id; 34743514774SMichael Chan uint16_t pmtu; 34843514774SMichael Chan } __attribute__ ((aligned (sizeof(uint64_t)))); 34943514774SMichael Chan 35056c155b5SMike Christie /* iscsi iface enabled/disabled setting */ 35156c155b5SMike Christie #define ISCSI_IFACE_DISABLE 0x01 35256c155b5SMike Christie #define ISCSI_IFACE_ENABLE 0x02 35356c155b5SMike Christie 35456c155b5SMike Christie /* ipv4 bootproto */ 35556c155b5SMike Christie #define ISCSI_BOOTPROTO_STATIC 0x01 35656c155b5SMike Christie #define ISCSI_BOOTPROTO_DHCP 0x02 35756c155b5SMike Christie 35856c155b5SMike Christie /* ipv6 addr autoconfig type */ 35956c155b5SMike Christie #define ISCSI_IPV6_AUTOCFG_DISABLE 0x01 36056c155b5SMike Christie #define ISCSI_IPV6_AUTOCFG_ND_ENABLE 0x02 36156c155b5SMike Christie #define ISCSI_IPV6_AUTOCFG_DHCPV6_ENABLE 0x03 36256c155b5SMike Christie 36356c155b5SMike Christie /* ipv6 link local addr type */ 36456c155b5SMike Christie #define ISCSI_IPV6_LINKLOCAL_AUTOCFG_ENABLE 0x01 36556c155b5SMike Christie #define ISCSI_IPV6_LINKLOCAL_AUTOCFG_DISABLE 0x02 36656c155b5SMike Christie 36756c155b5SMike Christie /* ipv6 router addr type */ 36856c155b5SMike Christie #define ISCSI_IPV6_ROUTER_AUTOCFG_ENABLE 0x01 36956c155b5SMike Christie #define ISCSI_IPV6_ROUTER_AUTOCFG_DISABLE 0x02 37056c155b5SMike Christie 37156c155b5SMike Christie #define ISCSI_IFACE_TYPE_IPV4 0x01 37256c155b5SMike Christie #define ISCSI_IFACE_TYPE_IPV6 0x02 37356c155b5SMike Christie 3744223b9e9SMike Christie #define ISCSI_MAX_VLAN_ID 4095 3754223b9e9SMike Christie #define ISCSI_MAX_VLAN_PRIORITY 7 3764223b9e9SMike Christie 3774223b9e9SMike Christie /* iscsi vlan enable/disabled setting */ 3784223b9e9SMike Christie #define ISCSI_VLAN_DISABLE 0x01 3794223b9e9SMike Christie #define ISCSI_VLAN_ENABLE 0x02 3804223b9e9SMike Christie 3813e0f65b3SHarish Zunjarrao /* iscsi generic enable/disabled setting for various features */ 3823e0f65b3SHarish Zunjarrao #define ISCSI_NET_PARAM_DISABLE 0x01 3833e0f65b3SHarish Zunjarrao #define ISCSI_NET_PARAM_ENABLE 0x02 3843e0f65b3SHarish Zunjarrao 38556c155b5SMike Christie /* iSCSI network params */ 38656c155b5SMike Christie enum iscsi_net_param { 38756c155b5SMike Christie ISCSI_NET_PARAM_IPV4_ADDR = 1, 388b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_SUBNET, 389b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_GW, 390b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_BOOTPROTO, 391b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_MAC, 392b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_LINKLOCAL, 393b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ADDR, 394b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ROUTER, 395b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG, 396b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG, 397b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG, 398b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IFACE_ENABLE, 399b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_VLAN_ID, 400b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_VLAN_PRIORITY, 401b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_VLAN_ENABLED, 402b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_VLAN_TAG, 403b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IFACE_TYPE, 404b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_IFACE_NAME, 405b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_MTU, 406b867cda4SHarish Zunjarrao ISCSI_NET_PARAM_PORT, 4073e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPADDR_STATE, 4083e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_LINKLOCAL_STATE, 4093e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ROUTER_STATE, 4103e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_DELAYED_ACK_EN, 4113e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_TCP_NAGLE_DISABLE, 4123e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_TCP_WSF_DISABLE, 4133e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_TCP_WSF, 4143e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_TCP_TIMER_SCALE, 4153e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_TCP_TIMESTAMP_EN, 4163e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_CACHE_ID, 4173e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_DNS_ADDR_EN, 4183e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_SLP_DA_EN, 4193e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_TOS_EN, 4203e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_TOS, 4213e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_GRAT_ARP_EN, 4223e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID_EN, 4233e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID, 4243e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_REQ_VENDOR_ID_EN, 4253e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_USE_VENDOR_ID_EN, 4263e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_VENDOR_ID, 4273e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_DHCP_LEARN_IQN_EN, 4283e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_FRAGMENT_DISABLE, 4293e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_IN_FORWARD_EN, 4303e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV4_TTL, 4313e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_GRAT_NEIGHBOR_ADV_EN, 4323e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_MLD_EN, 4333e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_FLOW_LABEL, 4343e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_TRAFFIC_CLASS, 4353e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_HOP_LIMIT, 4363e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ND_REACHABLE_TMO, 4373e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ND_REXMIT_TIME, 4383e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_ND_STALE_TMO, 4393e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_DUP_ADDR_DETECT_CNT, 4403e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_IPV6_RTR_ADV_LINK_MTU, 4413e0f65b3SHarish Zunjarrao ISCSI_NET_PARAM_REDIRECT_EN, 4423e0f65b3SHarish Zunjarrao }; 4433e0f65b3SHarish Zunjarrao 4443e0f65b3SHarish Zunjarrao enum iscsi_ipaddress_state { 4453e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_UNCONFIGURED, 4463e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_ACQUIRING, 4473e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_TENTATIVE, 4483e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_VALID, 4493e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_DISABLING, 4503e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_INVALID, 4513e0f65b3SHarish Zunjarrao ISCSI_IPDDRESS_STATE_DEPRECATED, 4523e0f65b3SHarish Zunjarrao }; 4533e0f65b3SHarish Zunjarrao 4543e0f65b3SHarish Zunjarrao enum iscsi_router_state { 4553e0f65b3SHarish Zunjarrao ISCSI_ROUTER_STATE_UNKNOWN, 4563e0f65b3SHarish Zunjarrao ISCSI_ROUTER_STATE_ADVERTISED, 4573e0f65b3SHarish Zunjarrao ISCSI_ROUTER_STATE_MANUAL, 4583e0f65b3SHarish Zunjarrao ISCSI_ROUTER_STATE_STALE, 4593e0f65b3SHarish Zunjarrao }; 4603e0f65b3SHarish Zunjarrao 4613e0f65b3SHarish Zunjarrao /* iSCSI specific settings params for iface */ 4623e0f65b3SHarish Zunjarrao enum iscsi_iface_param { 4633e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO, 4643e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_HDRDGST_EN, 4653e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_DATADGST_EN, 4663e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_IMM_DATA_EN, 4673e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_INITIAL_R2T_EN, 4683e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_DATASEQ_INORDER_EN, 4693e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_PDU_INORDER_EN, 4703e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_ERL, 4713e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_MAX_RECV_DLENGTH, 4723e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_FIRST_BURST, 4733e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_MAX_R2T, 4743e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_MAX_BURST, 4753e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_CHAP_AUTH_EN, 4763e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_BIDI_CHAP_EN, 4773e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_DISCOVERY_AUTH_OPTIONAL, 4783e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_DISCOVERY_LOGOUT_EN, 4793e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_STRICT_LOGIN_COMP_EN, 4803e0f65b3SHarish Zunjarrao ISCSI_IFACE_PARAM_INITIATOR_NAME, 48156c155b5SMike Christie }; 48256c155b5SMike Christie 48317fa575eSManish Rangankar enum iscsi_conn_state { 48417fa575eSManish Rangankar ISCSI_CONN_STATE_FREE, 48517fa575eSManish Rangankar ISCSI_CONN_STATE_XPT_WAIT, 48617fa575eSManish Rangankar ISCSI_CONN_STATE_IN_LOGIN, 48717fa575eSManish Rangankar ISCSI_CONN_STATE_LOGGED_IN, 48817fa575eSManish Rangankar ISCSI_CONN_STATE_IN_LOGOUT, 48917fa575eSManish Rangankar ISCSI_CONN_STATE_LOGOUT_REQUESTED, 49017fa575eSManish Rangankar ISCSI_CONN_STATE_CLEANUP_WAIT, 49117fa575eSManish Rangankar }; 49217fa575eSManish Rangankar 49343514774SMichael Chan /* 49439e84790SAlex Aizman * Common error codes 49539e84790SAlex Aizman */ 49639e84790SAlex Aizman enum iscsi_err { 49739e84790SAlex Aizman ISCSI_OK = 0, 49839e84790SAlex Aizman 49939e84790SAlex Aizman ISCSI_ERR_DATASN = ISCSI_ERR_BASE + 1, 50039e84790SAlex Aizman ISCSI_ERR_DATA_OFFSET = ISCSI_ERR_BASE + 2, 50139e84790SAlex Aizman ISCSI_ERR_MAX_CMDSN = ISCSI_ERR_BASE + 3, 50239e84790SAlex Aizman ISCSI_ERR_EXP_CMDSN = ISCSI_ERR_BASE + 4, 50339e84790SAlex Aizman ISCSI_ERR_BAD_OPCODE = ISCSI_ERR_BASE + 5, 50439e84790SAlex Aizman ISCSI_ERR_DATALEN = ISCSI_ERR_BASE + 6, 50539e84790SAlex Aizman ISCSI_ERR_AHSLEN = ISCSI_ERR_BASE + 7, 50639e84790SAlex Aizman ISCSI_ERR_PROTO = ISCSI_ERR_BASE + 8, 50739e84790SAlex Aizman ISCSI_ERR_LUN = ISCSI_ERR_BASE + 9, 50839e84790SAlex Aizman ISCSI_ERR_BAD_ITT = ISCSI_ERR_BASE + 10, 50939e84790SAlex Aizman ISCSI_ERR_CONN_FAILED = ISCSI_ERR_BASE + 11, 51039e84790SAlex Aizman ISCSI_ERR_R2TSN = ISCSI_ERR_BASE + 12, 51139e84790SAlex Aizman ISCSI_ERR_SESSION_FAILED = ISCSI_ERR_BASE + 13, 51239e84790SAlex Aizman ISCSI_ERR_HDR_DGST = ISCSI_ERR_BASE + 14, 51339e84790SAlex Aizman ISCSI_ERR_DATA_DGST = ISCSI_ERR_BASE + 15, 5147996a778SMike Christie ISCSI_ERR_PARAM_NOT_FOUND = ISCSI_ERR_BASE + 16, 5157996a778SMike Christie ISCSI_ERR_NO_SCSI_CMD = ISCSI_ERR_BASE + 17, 516e5bd7b54SMike Christie ISCSI_ERR_INVALID_HOST = ISCSI_ERR_BASE + 18, 5176f481e3cSMike Christie ISCSI_ERR_XMIT_FAILED = ISCSI_ERR_BASE + 19, 518d1af8a32SMike Christie ISCSI_ERR_TCP_CONN_CLOSE = ISCSI_ERR_BASE + 20, 519df4da5cdSMike Christie ISCSI_ERR_SCSI_EH_SESSION_RST = ISCSI_ERR_BASE + 21, 52009ff742cSMike Christie ISCSI_ERR_NOP_TIMEDOUT = ISCSI_ERR_BASE + 22, 52139e84790SAlex Aizman }; 52239e84790SAlex Aizman 52339e84790SAlex Aizman /* 52439e84790SAlex Aizman * iSCSI Parameters (RFC3720) 52539e84790SAlex Aizman */ 52639e84790SAlex Aizman enum iscsi_param { 527fd7255f5SMike Christie /* passed in using netlink set param */ 528fd7255f5SMike Christie ISCSI_PARAM_MAX_RECV_DLENGTH, 529fd7255f5SMike Christie ISCSI_PARAM_MAX_XMIT_DLENGTH, 530fd7255f5SMike Christie ISCSI_PARAM_HDRDGST_EN, 531fd7255f5SMike Christie ISCSI_PARAM_DATADGST_EN, 532fd7255f5SMike Christie ISCSI_PARAM_INITIAL_R2T_EN, 533fd7255f5SMike Christie ISCSI_PARAM_MAX_R2T, 534fd7255f5SMike Christie ISCSI_PARAM_IMM_DATA_EN, 535fd7255f5SMike Christie ISCSI_PARAM_FIRST_BURST, 536fd7255f5SMike Christie ISCSI_PARAM_MAX_BURST, 537fd7255f5SMike Christie ISCSI_PARAM_PDU_INORDER_EN, 538fd7255f5SMike Christie ISCSI_PARAM_DATASEQ_INORDER_EN, 539fd7255f5SMike Christie ISCSI_PARAM_ERL, 540fd7255f5SMike Christie ISCSI_PARAM_IFMARKER_EN, 541fd7255f5SMike Christie ISCSI_PARAM_OFMARKER_EN, 5428d2860b3SMike Christie ISCSI_PARAM_EXP_STATSN, 543fd7255f5SMike Christie ISCSI_PARAM_TARGET_NAME, 544fd7255f5SMike Christie ISCSI_PARAM_TPGT, 545fd7255f5SMike Christie ISCSI_PARAM_PERSISTENT_ADDRESS, 546fd7255f5SMike Christie ISCSI_PARAM_PERSISTENT_PORT, 54730a6c652SMike Christie ISCSI_PARAM_SESS_RECOVERY_TMO, 548fd7255f5SMike Christie 54925985edcSLucas De Marchi /* passed in through bind conn using transport_fd */ 550fd7255f5SMike Christie ISCSI_PARAM_CONN_PORT, 551fd7255f5SMike Christie ISCSI_PARAM_CONN_ADDRESS, 552fd7255f5SMike Christie 553b2c64167SMike Christie ISCSI_PARAM_USERNAME, 554b2c64167SMike Christie ISCSI_PARAM_USERNAME_IN, 555b2c64167SMike Christie ISCSI_PARAM_PASSWORD, 556b2c64167SMike Christie ISCSI_PARAM_PASSWORD_IN, 557b2c64167SMike Christie 558843c0a8aSMike Christie ISCSI_PARAM_FAST_ABORT, 559f6d5180cSMike Christie ISCSI_PARAM_ABORT_TMO, 560f6d5180cSMike Christie ISCSI_PARAM_LU_RESET_TMO, 561f6d5180cSMike Christie ISCSI_PARAM_HOST_RESET_TMO, 562f6d5180cSMike Christie 563f6d5180cSMike Christie ISCSI_PARAM_PING_TMO, 564f6d5180cSMike Christie ISCSI_PARAM_RECV_TMO, 56588dfd340SMike Christie 56688dfd340SMike Christie ISCSI_PARAM_IFACE_NAME, 56788dfd340SMike Christie ISCSI_PARAM_ISID, 56888dfd340SMike Christie ISCSI_PARAM_INITIATOR_NAME, 5693fe5ae8bSMike Christie 5703fe5ae8bSMike Christie ISCSI_PARAM_TGT_RESET_TMO, 5713b2bef1fSVikas Chaudhary ISCSI_PARAM_TARGET_ALIAS, 57230534952SMike Christie 57330534952SMike Christie ISCSI_PARAM_CHAP_IN_IDX, 57430534952SMike Christie ISCSI_PARAM_CHAP_OUT_IDX, 5753b9373e9SEddie Wai 5763b9373e9SEddie Wai ISCSI_PARAM_BOOT_ROOT, 5773b9373e9SEddie Wai ISCSI_PARAM_BOOT_NIC, 5783b9373e9SEddie Wai ISCSI_PARAM_BOOT_TARGET, 5793b9373e9SEddie Wai 580ae542edbSAdheer Chandravanshi ISCSI_PARAM_AUTO_SND_TGT_DISABLE, 581ae542edbSAdheer Chandravanshi ISCSI_PARAM_DISCOVERY_SESS, 582ae542edbSAdheer Chandravanshi ISCSI_PARAM_PORTAL_TYPE, 583ae542edbSAdheer Chandravanshi ISCSI_PARAM_CHAP_AUTH_EN, 584ae542edbSAdheer Chandravanshi ISCSI_PARAM_DISCOVERY_LOGOUT_EN, 585ae542edbSAdheer Chandravanshi ISCSI_PARAM_BIDI_CHAP_EN, 586ae542edbSAdheer Chandravanshi ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL, 587ae542edbSAdheer Chandravanshi 588ae542edbSAdheer Chandravanshi ISCSI_PARAM_DEF_TIME2WAIT, 589ae542edbSAdheer Chandravanshi ISCSI_PARAM_DEF_TIME2RETAIN, 590ae542edbSAdheer Chandravanshi ISCSI_PARAM_MAX_SEGMENT_SIZE, 591ae542edbSAdheer Chandravanshi ISCSI_PARAM_STATSN, 592ae542edbSAdheer Chandravanshi ISCSI_PARAM_KEEPALIVE_TMO, 593ae542edbSAdheer Chandravanshi ISCSI_PARAM_LOCAL_PORT, 594ae542edbSAdheer Chandravanshi ISCSI_PARAM_TSID, 595ae542edbSAdheer Chandravanshi ISCSI_PARAM_DEF_TASKMGMT_TMO, 596ae542edbSAdheer Chandravanshi 597ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_TIMESTAMP_STAT, 598ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_WSF_DISABLE, 599ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_NAGLE_DISABLE, 600ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_TIMER_SCALE, 601ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_TIMESTAMP_EN, 602ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_XMIT_WSF, 603ae542edbSAdheer Chandravanshi ISCSI_PARAM_TCP_RECV_WSF, 604ae542edbSAdheer Chandravanshi ISCSI_PARAM_IP_FRAGMENT_DISABLE, 605ae542edbSAdheer Chandravanshi ISCSI_PARAM_IPV4_TOS, 606ae542edbSAdheer Chandravanshi ISCSI_PARAM_IPV6_TC, 607ae542edbSAdheer Chandravanshi ISCSI_PARAM_IPV6_FLOW_LABEL, 608ae542edbSAdheer Chandravanshi ISCSI_PARAM_IS_FW_ASSIGNED_IPV6, 609ae542edbSAdheer Chandravanshi 610ae542edbSAdheer Chandravanshi ISCSI_PARAM_DISCOVERY_PARENT_IDX, 611ae542edbSAdheer Chandravanshi ISCSI_PARAM_DISCOVERY_PARENT_TYPE, 6125af62f24SAdheer Chandravanshi ISCSI_PARAM_LOCAL_IPADDR, 613fd7255f5SMike Christie /* must always be last */ 614fd7255f5SMike Christie ISCSI_PARAM_MAX, 61539e84790SAlex Aizman }; 616fd7255f5SMike Christie 6171819dc81SMike Christie /* iSCSI HBA params */ 6181819dc81SMike Christie enum iscsi_host_param { 6191819dc81SMike Christie ISCSI_HOST_PARAM_HWADDRESS, 6208ad5781aSMike Christie ISCSI_HOST_PARAM_INITIATOR_NAME, 621d8196ed2SMike Christie ISCSI_HOST_PARAM_NETDEV_NAME, 62222236961SMike Christie ISCSI_HOST_PARAM_IPADDRESS, 623aeddde29SVikas Chaudhary ISCSI_HOST_PARAM_PORT_STATE, 624aeddde29SVikas Chaudhary ISCSI_HOST_PARAM_PORT_SPEED, 6251819dc81SMike Christie ISCSI_HOST_PARAM_MAX, 6261819dc81SMike Christie }; 6271819dc81SMike Christie 6282902eb49SAdheer Chandravanshi /* portal type */ 6292902eb49SAdheer Chandravanshi #define PORTAL_TYPE_IPV4 "ipv4" 6302902eb49SAdheer Chandravanshi #define PORTAL_TYPE_IPV6 "ipv6" 6312902eb49SAdheer Chandravanshi 632c6a4bb2eSAdheer Chandravanshi /* iSCSI Flash Target params */ 633c6a4bb2eSAdheer Chandravanshi enum iscsi_flashnode_param { 634c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6, 635c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_PORTAL_TYPE, 636c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_AUTO_SND_TGT_DISABLE, 637c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DISCOVERY_SESS, 638c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_ENTRY_EN, 639c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_HDR_DGST_EN, 640c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DATA_DGST_EN, 641c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IMM_DATA_EN, 642c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_INITIAL_R2T_EN, 643c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DATASEQ_INORDER, 644c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_PDU_INORDER, 645c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_CHAP_AUTH_EN, 646c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_SNACK_REQ_EN, 647c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN, 648c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_BIDI_CHAP_EN, 649c6a4bb2eSAdheer Chandravanshi /* make authentication for discovery sessions optional */ 650c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL, 651c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_ERL, 652c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT, 653c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_NAGLE_DISABLE, 654c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_WSF_DISABLE, 655c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_TIMER_SCALE, 656c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_TIMESTAMP_EN, 657c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IP_FRAG_DISABLE, 658c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_MAX_RECV_DLENGTH, 659c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_MAX_XMIT_DLENGTH, 660c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_FIRST_BURST, 661c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DEF_TIME2WAIT, 662c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DEF_TIME2RETAIN, 663c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_MAX_R2T, 664c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_KEEPALIVE_TMO, 665c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_ISID, 666c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TSID, 667c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_PORT, 668c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_MAX_BURST, 669c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DEF_TASKMGMT_TMO, 670c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IPADDR, 671c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_ALIAS, 672c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_REDIRECT_IPADDR, 673c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_MAX_SEGMENT_SIZE, 674c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_LOCAL_PORT, 675c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IPV4_TOS, 676c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IPV6_TC, 677c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IPV6_FLOW_LABEL, 678c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_NAME, 679c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TPGT, 680c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_LINK_LOCAL_IPV6, 681c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX, 682c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE, 683c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_XMIT_WSF, 684c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_TCP_RECV_WSF, 685c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_CHAP_IN_IDX, 686c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_CHAP_OUT_IDX, 687c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_USERNAME, 688c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_USERNAME_IN, 689c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_PASSWORD, 690c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_PASSWORD_IN, 691c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_STATSN, 692c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_EXP_STATSN, 693c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_IS_BOOT_TGT, 694c6a4bb2eSAdheer Chandravanshi 695c6a4bb2eSAdheer Chandravanshi ISCSI_FLASHNODE_MAX, 696c6a4bb2eSAdheer Chandravanshi }; 697c6a4bb2eSAdheer Chandravanshi 698c6a4bb2eSAdheer Chandravanshi struct iscsi_flashnode_param_info { 699c6a4bb2eSAdheer Chandravanshi uint32_t len; /* Actual length of the param */ 700c6a4bb2eSAdheer Chandravanshi uint16_t param; /* iscsi param value */ 7015febf6d6SGustavo A. R. Silva uint8_t value[]; /* length sized value follows */ 702c6a4bb2eSAdheer Chandravanshi } __packed; 703c6a4bb2eSAdheer Chandravanshi 704c6a4bb2eSAdheer Chandravanshi enum iscsi_discovery_parent_type { 705c6a4bb2eSAdheer Chandravanshi ISCSI_DISC_PARENT_UNKNOWN = 0x1, 706c6a4bb2eSAdheer Chandravanshi ISCSI_DISC_PARENT_SENDTGT = 0x2, 707c6a4bb2eSAdheer Chandravanshi ISCSI_DISC_PARENT_ISNS = 0x3, 708c6a4bb2eSAdheer Chandravanshi }; 709c6a4bb2eSAdheer Chandravanshi 710aeddde29SVikas Chaudhary /* iSCSI port Speed */ 711aeddde29SVikas Chaudhary enum iscsi_port_speed { 712aeddde29SVikas Chaudhary ISCSI_PORT_SPEED_UNKNOWN = 0x1, 713aeddde29SVikas Chaudhary ISCSI_PORT_SPEED_10MBPS = 0x2, 714aeddde29SVikas Chaudhary ISCSI_PORT_SPEED_100MBPS = 0x4, 715aeddde29SVikas Chaudhary ISCSI_PORT_SPEED_1GBPS = 0x8, 716aeddde29SVikas Chaudhary ISCSI_PORT_SPEED_10GBPS = 0x10, 717f9e4fa46SJitendra Bhivare ISCSI_PORT_SPEED_25GBPS = 0x20, 718f9e4fa46SJitendra Bhivare ISCSI_PORT_SPEED_40GBPS = 0x40, 719aeddde29SVikas Chaudhary }; 720aeddde29SVikas Chaudhary 721aeddde29SVikas Chaudhary /* iSCSI port state */ 722aeddde29SVikas Chaudhary enum iscsi_port_state { 723aeddde29SVikas Chaudhary ISCSI_PORT_STATE_DOWN = 0x1, 724aeddde29SVikas Chaudhary ISCSI_PORT_STATE_UP = 0x2, 725aeddde29SVikas Chaudhary }; 726aeddde29SVikas Chaudhary 7271a590cabSVikas Chaudhary /* iSCSI PING status/error code */ 7281a590cabSVikas Chaudhary enum iscsi_ping_status_code { 7291a590cabSVikas Chaudhary ISCSI_PING_SUCCESS = 0, 7301a590cabSVikas Chaudhary ISCSI_PING_FW_DISABLED = 0x1, 7311a590cabSVikas Chaudhary ISCSI_PING_IPADDR_INVALID = 0x2, 7321a590cabSVikas Chaudhary ISCSI_PING_LINKLOCAL_IPV6_ADDR_INVALID = 0x3, 7331a590cabSVikas Chaudhary ISCSI_PING_TIMEOUT = 0x4, 7341a590cabSVikas Chaudhary ISCSI_PING_INVALID_DEST_ADDR = 0x5, 7351a590cabSVikas Chaudhary ISCSI_PING_OVERSIZE_PACKET = 0x6, 7361a590cabSVikas Chaudhary ISCSI_PING_ICMP_ERROR = 0x7, 7371a590cabSVikas Chaudhary ISCSI_PING_MAX_REQ_EXCEEDED = 0x8, 7381a590cabSVikas Chaudhary ISCSI_PING_NO_ARP_RECEIVED = 0x9, 7391a590cabSVikas Chaudhary }; 7401a590cabSVikas Chaudhary 74139e84790SAlex Aizman #define iscsi_ptr(_handle) ((void*)(unsigned long)_handle) 74239e84790SAlex Aizman #define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr) 74339e84790SAlex Aizman 74439e84790SAlex Aizman /* 74539e84790SAlex Aizman * These flags presents iSCSI Data-Path capabilities. 74639e84790SAlex Aizman */ 74739e84790SAlex Aizman #define CAP_RECOVERY_L0 0x1 74839e84790SAlex Aizman #define CAP_RECOVERY_L1 0x2 74939e84790SAlex Aizman #define CAP_RECOVERY_L2 0x4 75039e84790SAlex Aizman #define CAP_MULTI_R2T 0x8 75139e84790SAlex Aizman #define CAP_HDRDGST 0x10 75239e84790SAlex Aizman #define CAP_DATADGST 0x20 75339e84790SAlex Aizman #define CAP_MULTI_CONN 0x40 75439e84790SAlex Aizman #define CAP_TEXT_NEGO 0x80 75539e84790SAlex Aizman #define CAP_MARKERS 0x100 7560ab823dbSMike Christie #define CAP_FW_DB 0x200 75763c62f1cSMike Christie #define CAP_SENDTARGETS_OFFLOAD 0x400 /* offload discovery process */ 75863c62f1cSMike Christie #define CAP_DATA_PATH_OFFLOAD 0x800 /* offload entire IO path */ 75963c62f1cSMike Christie #define CAP_DIGEST_OFFLOAD 0x1000 /* offload hdr and data digests */ 7606df19a79SMike Christie #define CAP_PADDING_OFFLOAD 0x2000 /* offload padding insertion, removal, 7616df19a79SMike Christie and verification */ 76217fa575eSManish Rangankar #define CAP_LOGIN_OFFLOAD 0x4000 /* offload session login */ 76339e84790SAlex Aizman 76439e84790SAlex Aizman /* 76539e84790SAlex Aizman * These flags describes reason of stop_conn() call 76639e84790SAlex Aizman */ 76739e84790SAlex Aizman #define STOP_CONN_TERM 0x1 76839e84790SAlex Aizman #define STOP_CONN_SUSPEND 0x2 76939e84790SAlex Aizman #define STOP_CONN_RECOVER 0x3 77039e84790SAlex Aizman 77139e84790SAlex Aizman #define ISCSI_STATS_CUSTOM_MAX 32 77239e84790SAlex Aizman #define ISCSI_STATS_CUSTOM_DESC_MAX 64 77339e84790SAlex Aizman struct iscsi_stats_custom { 77439e84790SAlex Aizman char desc[ISCSI_STATS_CUSTOM_DESC_MAX]; 77539e84790SAlex Aizman uint64_t value; 77639e84790SAlex Aizman }; 77739e84790SAlex Aizman 77839e84790SAlex Aizman /* 77939e84790SAlex Aizman * struct iscsi_stats - iSCSI Statistics (iSCSI MIB) 78039e84790SAlex Aizman * 78139e84790SAlex Aizman * Note: this structure contains counters collected on per-connection basis. 78239e84790SAlex Aizman */ 78339e84790SAlex Aizman struct iscsi_stats { 78439e84790SAlex Aizman /* octets */ 78539e84790SAlex Aizman uint64_t txdata_octets; 78639e84790SAlex Aizman uint64_t rxdata_octets; 78739e84790SAlex Aizman 78839e84790SAlex Aizman /* xmit pdus */ 78939e84790SAlex Aizman uint32_t noptx_pdus; 79039e84790SAlex Aizman uint32_t scsicmd_pdus; 79139e84790SAlex Aizman uint32_t tmfcmd_pdus; 79239e84790SAlex Aizman uint32_t login_pdus; 79339e84790SAlex Aizman uint32_t text_pdus; 79439e84790SAlex Aizman uint32_t dataout_pdus; 79539e84790SAlex Aizman uint32_t logout_pdus; 79639e84790SAlex Aizman uint32_t snack_pdus; 79739e84790SAlex Aizman 79839e84790SAlex Aizman /* recv pdus */ 79939e84790SAlex Aizman uint32_t noprx_pdus; 80039e84790SAlex Aizman uint32_t scsirsp_pdus; 80139e84790SAlex Aizman uint32_t tmfrsp_pdus; 80239e84790SAlex Aizman uint32_t textrsp_pdus; 80339e84790SAlex Aizman uint32_t datain_pdus; 80439e84790SAlex Aizman uint32_t logoutrsp_pdus; 80539e84790SAlex Aizman uint32_t r2t_pdus; 80639e84790SAlex Aizman uint32_t async_pdus; 80739e84790SAlex Aizman uint32_t rjt_pdus; 80839e84790SAlex Aizman 80939e84790SAlex Aizman /* errors */ 81039e84790SAlex Aizman uint32_t digest_err; 81139e84790SAlex Aizman uint32_t timeout_err; 81239e84790SAlex Aizman 81339e84790SAlex Aizman /* 81439e84790SAlex Aizman * iSCSI Custom Statistics support, i.e. Transport could 81539e84790SAlex Aizman * extend existing MIB statistics with its own specific statistics 81639e84790SAlex Aizman * up to ISCSI_STATS_CUSTOM_MAX 81739e84790SAlex Aizman */ 81839e84790SAlex Aizman uint32_t custom_length; 8195febf6d6SGustavo A. R. Silva struct iscsi_stats_custom custom[] 82039e84790SAlex Aizman __attribute__ ((aligned (sizeof(uint64_t)))); 82139e84790SAlex Aizman }; 82239e84790SAlex Aizman 8236260a5d2SNilesh Javali enum chap_type_e { 8246260a5d2SNilesh Javali CHAP_TYPE_OUT, 8256260a5d2SNilesh Javali CHAP_TYPE_IN, 8266260a5d2SNilesh Javali }; 8276260a5d2SNilesh Javali 8283af142feSAdheer Chandravanshi enum iscsi_chap_param { 8293af142feSAdheer Chandravanshi ISCSI_CHAP_PARAM_INDEX, 8303af142feSAdheer Chandravanshi ISCSI_CHAP_PARAM_CHAP_TYPE, 8313af142feSAdheer Chandravanshi ISCSI_CHAP_PARAM_USERNAME, 8323af142feSAdheer Chandravanshi ISCSI_CHAP_PARAM_PASSWORD, 8333af142feSAdheer Chandravanshi ISCSI_CHAP_PARAM_PASSWORD_LEN 8343af142feSAdheer Chandravanshi }; 8353af142feSAdheer Chandravanshi 8366260a5d2SNilesh Javali #define ISCSI_CHAP_AUTH_NAME_MAX_LEN 256 8376260a5d2SNilesh Javali #define ISCSI_CHAP_AUTH_SECRET_MAX_LEN 256 8386260a5d2SNilesh Javali struct iscsi_chap_rec { 8396260a5d2SNilesh Javali uint16_t chap_tbl_idx; 8406260a5d2SNilesh Javali enum chap_type_e chap_type; 8416260a5d2SNilesh Javali char username[ISCSI_CHAP_AUTH_NAME_MAX_LEN]; 8426260a5d2SNilesh Javali uint8_t password[ISCSI_CHAP_AUTH_SECRET_MAX_LEN]; 8436260a5d2SNilesh Javali uint8_t password_length; 8445a5a15f2SVikas Chaudhary }; 8456260a5d2SNilesh Javali 8466fa7c554SLalit Chandivade #define ISCSI_HOST_STATS_CUSTOM_MAX 32 8476fa7c554SLalit Chandivade #define ISCSI_HOST_STATS_CUSTOM_DESC_MAX 64 8486fa7c554SLalit Chandivade struct iscsi_host_stats_custom { 8496fa7c554SLalit Chandivade char desc[ISCSI_HOST_STATS_CUSTOM_DESC_MAX]; 8506fa7c554SLalit Chandivade uint64_t value; 8516fa7c554SLalit Chandivade }; 8526fa7c554SLalit Chandivade 8536fa7c554SLalit Chandivade /* struct iscsi_offload_host_stats: Host statistics, 8546fa7c554SLalit Chandivade * Include statistics for MAC, IP, TCP & iSCSI. 8556fa7c554SLalit Chandivade */ 8566fa7c554SLalit Chandivade struct iscsi_offload_host_stats { 8576fa7c554SLalit Chandivade /* MAC */ 8586fa7c554SLalit Chandivade uint64_t mactx_frames; 8596fa7c554SLalit Chandivade uint64_t mactx_bytes; 8606fa7c554SLalit Chandivade uint64_t mactx_multicast_frames; 8616fa7c554SLalit Chandivade uint64_t mactx_broadcast_frames; 8626fa7c554SLalit Chandivade uint64_t mactx_pause_frames; 8636fa7c554SLalit Chandivade uint64_t mactx_control_frames; 8646fa7c554SLalit Chandivade uint64_t mactx_deferral; 8656fa7c554SLalit Chandivade uint64_t mactx_excess_deferral; 8666fa7c554SLalit Chandivade uint64_t mactx_late_collision; 8676fa7c554SLalit Chandivade uint64_t mactx_abort; 8686fa7c554SLalit Chandivade uint64_t mactx_single_collision; 8696fa7c554SLalit Chandivade uint64_t mactx_multiple_collision; 8706fa7c554SLalit Chandivade uint64_t mactx_collision; 8716fa7c554SLalit Chandivade uint64_t mactx_frames_dropped; 8726fa7c554SLalit Chandivade uint64_t mactx_jumbo_frames; 8736fa7c554SLalit Chandivade uint64_t macrx_frames; 8746fa7c554SLalit Chandivade uint64_t macrx_bytes; 8756fa7c554SLalit Chandivade uint64_t macrx_unknown_control_frames; 8766fa7c554SLalit Chandivade uint64_t macrx_pause_frames; 8776fa7c554SLalit Chandivade uint64_t macrx_control_frames; 8786fa7c554SLalit Chandivade uint64_t macrx_dribble; 8796fa7c554SLalit Chandivade uint64_t macrx_frame_length_error; 8806fa7c554SLalit Chandivade uint64_t macrx_jabber; 8816fa7c554SLalit Chandivade uint64_t macrx_carrier_sense_error; 8826fa7c554SLalit Chandivade uint64_t macrx_frame_discarded; 8836fa7c554SLalit Chandivade uint64_t macrx_frames_dropped; 8846fa7c554SLalit Chandivade uint64_t mac_crc_error; 8856fa7c554SLalit Chandivade uint64_t mac_encoding_error; 8866fa7c554SLalit Chandivade uint64_t macrx_length_error_large; 8876fa7c554SLalit Chandivade uint64_t macrx_length_error_small; 8886fa7c554SLalit Chandivade uint64_t macrx_multicast_frames; 8896fa7c554SLalit Chandivade uint64_t macrx_broadcast_frames; 8906fa7c554SLalit Chandivade /* IP */ 8916fa7c554SLalit Chandivade uint64_t iptx_packets; 8926fa7c554SLalit Chandivade uint64_t iptx_bytes; 8936fa7c554SLalit Chandivade uint64_t iptx_fragments; 8946fa7c554SLalit Chandivade uint64_t iprx_packets; 8956fa7c554SLalit Chandivade uint64_t iprx_bytes; 8966fa7c554SLalit Chandivade uint64_t iprx_fragments; 8976fa7c554SLalit Chandivade uint64_t ip_datagram_reassembly; 8986fa7c554SLalit Chandivade uint64_t ip_invalid_address_error; 8996fa7c554SLalit Chandivade uint64_t ip_error_packets; 9006fa7c554SLalit Chandivade uint64_t ip_fragrx_overlap; 9016fa7c554SLalit Chandivade uint64_t ip_fragrx_outoforder; 9026fa7c554SLalit Chandivade uint64_t ip_datagram_reassembly_timeout; 9036fa7c554SLalit Chandivade uint64_t ipv6tx_packets; 9046fa7c554SLalit Chandivade uint64_t ipv6tx_bytes; 9056fa7c554SLalit Chandivade uint64_t ipv6tx_fragments; 9066fa7c554SLalit Chandivade uint64_t ipv6rx_packets; 9076fa7c554SLalit Chandivade uint64_t ipv6rx_bytes; 9086fa7c554SLalit Chandivade uint64_t ipv6rx_fragments; 9096fa7c554SLalit Chandivade uint64_t ipv6_datagram_reassembly; 9106fa7c554SLalit Chandivade uint64_t ipv6_invalid_address_error; 9116fa7c554SLalit Chandivade uint64_t ipv6_error_packets; 9126fa7c554SLalit Chandivade uint64_t ipv6_fragrx_overlap; 9136fa7c554SLalit Chandivade uint64_t ipv6_fragrx_outoforder; 9146fa7c554SLalit Chandivade uint64_t ipv6_datagram_reassembly_timeout; 9156fa7c554SLalit Chandivade /* TCP */ 9166fa7c554SLalit Chandivade uint64_t tcptx_segments; 9176fa7c554SLalit Chandivade uint64_t tcptx_bytes; 9186fa7c554SLalit Chandivade uint64_t tcprx_segments; 9196fa7c554SLalit Chandivade uint64_t tcprx_byte; 9206fa7c554SLalit Chandivade uint64_t tcp_duplicate_ack_retx; 9216fa7c554SLalit Chandivade uint64_t tcp_retx_timer_expired; 9226fa7c554SLalit Chandivade uint64_t tcprx_duplicate_ack; 9236fa7c554SLalit Chandivade uint64_t tcprx_pure_ackr; 9246fa7c554SLalit Chandivade uint64_t tcptx_delayed_ack; 9256fa7c554SLalit Chandivade uint64_t tcptx_pure_ack; 9266fa7c554SLalit Chandivade uint64_t tcprx_segment_error; 9276fa7c554SLalit Chandivade uint64_t tcprx_segment_outoforder; 9286fa7c554SLalit Chandivade uint64_t tcprx_window_probe; 9296fa7c554SLalit Chandivade uint64_t tcprx_window_update; 9306fa7c554SLalit Chandivade uint64_t tcptx_window_probe_persist; 9316fa7c554SLalit Chandivade /* ECC */ 9326fa7c554SLalit Chandivade uint64_t ecc_error_correction; 9336fa7c554SLalit Chandivade /* iSCSI */ 9346fa7c554SLalit Chandivade uint64_t iscsi_pdu_tx; 9356fa7c554SLalit Chandivade uint64_t iscsi_data_bytes_tx; 9366fa7c554SLalit Chandivade uint64_t iscsi_pdu_rx; 9376fa7c554SLalit Chandivade uint64_t iscsi_data_bytes_rx; 9386fa7c554SLalit Chandivade uint64_t iscsi_io_completed; 9396fa7c554SLalit Chandivade uint64_t iscsi_unexpected_io_rx; 9406fa7c554SLalit Chandivade uint64_t iscsi_format_error; 9416fa7c554SLalit Chandivade uint64_t iscsi_hdr_digest_error; 9426fa7c554SLalit Chandivade uint64_t iscsi_data_digest_error; 9436fa7c554SLalit Chandivade uint64_t iscsi_sequence_error; 9446fa7c554SLalit Chandivade /* 9456fa7c554SLalit Chandivade * iSCSI Custom Host Statistics support, i.e. Transport could 9466fa7c554SLalit Chandivade * extend existing host statistics with its own specific statistics 9476fa7c554SLalit Chandivade * up to ISCSI_HOST_STATS_CUSTOM_MAX 9486fa7c554SLalit Chandivade */ 9496fa7c554SLalit Chandivade uint32_t custom_length; 9505febf6d6SGustavo A. R. Silva struct iscsi_host_stats_custom custom[] 9516fa7c554SLalit Chandivade __aligned(sizeof(uint64_t)); 9526fa7c554SLalit Chandivade }; 9536fa7c554SLalit Chandivade 95439e84790SAlex Aizman #endif 955