summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2013-05-13 03:15:34 -0500
committerMike Christie <michaelc@cs.wisc.edu>2013-05-28 02:58:28 -0500
commit42fa2585ff7a922ddea83d55aa7751a319cf29bf (patch)
tree636bde79ef22cd9245e472a7cc658cd4c1981bc8 /include
parentfcab9b7b116ea861a5ed58b36ae88a3154b779d4 (diff)
downloadopen-iscsi-42fa2585ff7a922ddea83d55aa7751a319cf29bf.tar.gz
From: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com>
This support lets the user manage the target entries in adapter flash and perform various operations like add, delete, login, logout, and update the target information. The sysfs entries will look as cited below: /sys/bus/iscsi_flashnode/devices/flashnode_sess-<host_no>:<flashnode_id>/<session attrs> /sys/bus/iscsi_flashnode/devices/flashnode_conn-<host_no>:<flashnode_id>:<conn_id>/<conn attrs> Operations using iscsiadm: ========================= List all target nodes stored in the FLASH of the adapter \# iscsiadm -m host -H hostno -C flashnode -o show View all parameters of one particular flash node \# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o show Update an entry and commit to adapter FLASH \# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -n <name> -v <value> -o update Multiple name, value pairs can be specified in a single command for update operation Delete an entry \# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o delete Create a new entry \# iscsiadm -m host -H hostno -C flashnode -o new -A <ipv4/ipv6> \# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -n <name> -v <value> -o update Example, create new entry: \#iscsiadm -m host -H 7 -C flashnode -o new -A ipv4 Flashnode index: 2 New flashnode for host7 added \#iscsiadm -m host -H 7 -C flashnode -o show qla4xxx: [0] 192.168.1.12:3260,2 iqn.2002-03.com.compellent:5000d310004b0716 qla4xxx: [1] 192.168.1.12:3260,2 qla4xxx: [2] Here - The newly created entry is at flashnode_idx 2, use it to update the entry \# iscsiadm -m host -H 7 -C flashnode -x 2 -o update flashnode.conn[0].ipaddress -v 192.168.1.13 \#iscsiadm -m host -H 7 -C flashnode -o show qla4xxx: [0] 192.168.1.12:3260,2 iqn.2002-03.com.compellent:5000d310004b0716 qla4xxx: [1] 192.168.1.12:3260,2 qla4xxx: [2] 192.168.1.13:3260,0 Login \# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o login Logout \# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o logout \# iscsiadm -m session -r sid -u Signed-off-by: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com> Signed-off-by: Manish Rangankar <manish.rangankar@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Diffstat (limited to 'include')
-rw-r--r--include/iscsi_if.h190
1 files changed, 189 insertions, 1 deletions
diff --git a/include/iscsi_if.h b/include/iscsi_if.h
index dad9fd8..20f2bc2 100644
--- a/include/iscsi_if.h
+++ b/include/iscsi_if.h
@@ -68,8 +68,14 @@ enum iscsi_uevent_e {
ISCSI_UEVENT_PING = UEVENT_BASE + 22,
ISCSI_UEVENT_GET_CHAP = UEVENT_BASE + 23,
ISCSI_UEVENT_DELETE_CHAP = UEVENT_BASE + 24,
+ ISCSI_UEVENT_SET_FLASHNODE_PARAMS = UEVENT_BASE + 25,
+ ISCSI_UEVENT_NEW_FLASHNODE = UEVENT_BASE + 26,
+ ISCSI_UEVENT_DEL_FLASHNODE = UEVENT_BASE + 27,
+ ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28,
+ ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29,
+ ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30,
- ISCSI_UEVENT_MAX = ISCSI_UEVENT_DELETE_CHAP,
+ ISCSI_UEVENT_MAX = ISCSI_UEVENT_LOGOUT_FLASHNODE_SID,
/* up events */
ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1,
@@ -219,6 +225,31 @@ struct iscsi_uevent {
uint32_t host_no;
uint16_t chap_tbl_idx;
} delete_chap;
+ struct msg_set_flashnode_param {
+ uint32_t host_no;
+ uint32_t flashnode_idx;
+ uint32_t count;
+ } set_flashnode;
+ struct msg_new_flashnode {
+ uint32_t host_no;
+ uint32_t len;
+ } new_flashnode;
+ struct msg_del_flashnode {
+ uint32_t host_no;
+ uint32_t flashnode_idx;
+ } del_flashnode;
+ struct msg_login_flashnode {
+ uint32_t host_no;
+ uint32_t flashnode_idx;
+ } login_flashnode;
+ struct msg_logout_flashnode {
+ uint32_t host_no;
+ uint32_t flashnode_idx;
+ } logout_flashnode;
+ struct msg_logout_flashnode_sid {
+ uint32_t host_no;
+ uint32_t sid;
+ } logout_flashnode_sid;
} u;
union {
/* messages k -> u */
@@ -276,6 +307,9 @@ struct iscsi_uevent {
with each ping request */
uint32_t data_size;
} ping_comp;
+ struct msg_new_flashnode_ret {
+ uint32_t flashnode_idx;
+ } new_flashnode_ret;
} r;
} __attribute__ ((aligned (sizeof(uint64_t))));
@@ -283,6 +317,7 @@ enum iscsi_param_type {
ISCSI_PARAM, /* iscsi_param (session, conn, target, LU) */
ISCSI_HOST_PARAM, /* iscsi_host_param */
ISCSI_NET_PARAM, /* iscsi_net_param */
+ ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */
};
struct iscsi_iface_param_info {
@@ -502,6 +537,159 @@ enum iscsi_param {
#define ISCSI_TGT_RESET_TMO (1ULL << ISCSI_PARAM_TGT_RESET_TMO)
#define ISCSI_TARGET_ALIAS (1ULL << ISCSI_PARAM_TARGET_ALIAS)
+/* iSCSI Flash Target params */
+enum iscsi_flashnode_param {
+ ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6,
+ ISCSI_FLASHNODE_PORTAL_TYPE,
+ ISCSI_FLASHNODE_AUTO_SND_TGT_DISABLE,
+ ISCSI_FLASHNODE_DISCOVERY_SESS,
+ ISCSI_FLASHNODE_ENTRY_EN,
+ ISCSI_FLASHNODE_HDR_DGST_EN,
+ ISCSI_FLASHNODE_DATA_DGST_EN,
+ ISCSI_FLASHNODE_IMM_DATA_EN,
+ ISCSI_FLASHNODE_INITIAL_R2T_EN,
+ ISCSI_FLASHNODE_DATASEQ_INORDER,
+ ISCSI_FLASHNODE_PDU_INORDER,
+ ISCSI_FLASHNODE_CHAP_AUTH_EN,
+ ISCSI_FLASHNODE_SNACK_REQ_EN,
+ ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN,
+ ISCSI_FLASHNODE_BIDI_CHAP_EN,
+ /* make authentication for discovery sessions optional */
+ ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL,
+ ISCSI_FLASHNODE_ERL,
+ ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT,
+ ISCSI_FLASHNODE_TCP_NAGLE_DISABLE,
+ ISCSI_FLASHNODE_TCP_WSF_DISABLE,
+ ISCSI_FLASHNODE_TCP_TIMER_SCALE,
+ ISCSI_FLASHNODE_TCP_TIMESTAMP_EN,
+ ISCSI_FLASHNODE_IP_FRAG_DISABLE,
+ ISCSI_FLASHNODE_MAX_RECV_DLENGTH,
+ ISCSI_FLASHNODE_MAX_XMIT_DLENGTH,
+ ISCSI_FLASHNODE_FIRST_BURST,
+ ISCSI_FLASHNODE_DEF_TIME2WAIT,
+ ISCSI_FLASHNODE_DEF_TIME2RETAIN,
+ ISCSI_FLASHNODE_MAX_R2T,
+ ISCSI_FLASHNODE_KEEPALIVE_TMO,
+ ISCSI_FLASHNODE_ISID,
+ ISCSI_FLASHNODE_TSID,
+ ISCSI_FLASHNODE_PORT,
+ ISCSI_FLASHNODE_MAX_BURST,
+ ISCSI_FLASHNODE_DEF_TASKMGMT_TMO,
+ ISCSI_FLASHNODE_IPADDR,
+ ISCSI_FLASHNODE_ALIAS,
+ ISCSI_FLASHNODE_REDIRECT_IPADDR,
+ ISCSI_FLASHNODE_MAX_SEGMENT_SIZE,
+ ISCSI_FLASHNODE_LOCAL_PORT,
+ ISCSI_FLASHNODE_IPV4_TOS,
+ ISCSI_FLASHNODE_IPV6_TC,
+ ISCSI_FLASHNODE_IPV6_FLOW_LABEL,
+ ISCSI_FLASHNODE_NAME,
+ ISCSI_FLASHNODE_TPGT,
+ ISCSI_FLASHNODE_LINK_LOCAL_IPV6,
+ ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX,
+ ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE,
+ ISCSI_FLASHNODE_TCP_XMIT_WSF,
+ ISCSI_FLASHNODE_TCP_RECV_WSF,
+ ISCSI_FLASHNODE_CHAP_IN_IDX,
+ ISCSI_FLASHNODE_CHAP_OUT_IDX,
+ ISCSI_FLASHNODE_USERNAME,
+ ISCSI_FLASHNODE_USERNAME_IN,
+ ISCSI_FLASHNODE_PASSWORD,
+ ISCSI_FLASHNODE_PASSWORD_IN,
+ ISCSI_FLASHNODE_STATSN,
+ ISCSI_FLASHNODE_EXP_STATSN,
+ ISCSI_FLASHNODE_IS_BOOT_TGT,
+
+ ISCSI_FLASHNODE_MAX,
+};
+
+#define ISCSI_FNODE_IS_FW_ASSIGNED_IPV6 \
+ (1ULL << ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6)
+#define ISCSI_FNODE_PORTAL_TYPE (1ULL << ISCSI_FLASHNODE_PORTAL_TYPE)
+#define ISCSI_FNODE_AUTO_SND_TGT_DISABLE \
+ (1ULL << ISCSI_FLASHNODE_OPT_AUTO_SND_TGT_DISABLE)
+#define ISCSI_FNODE_DISCOVERY_SESS \
+ (1ULL << ISCSI_FLASHNODE_OPT_DISCOVERY_SESS)
+#define ISCSI_FNODE_ENTRY_EN (1ULL << ISCSI_FLASHNODE_ENTRY_EN)
+#define ISCSI_FNODE_HDR_DGST_EN (1ULL << ISCSI_FLASHNODE_HDR_DGST_EN)
+#define ISCSI_FNODE_DATA_DGST_EN (1ULL << ISCSI_FLASHNODE_DATA_DGST_EN)
+#define ISCSI_FNODE_IMM_DATA_EN (1ULL << ISCSI_FLASHNODE_IMM_DATA_EN)
+#define ISCSI_FNODE_INITIAL_R2T_EN (1ULL << ISCSI_FLASHNODE_INITIAL_R2T_EN)
+#define ISCSI_FNODE_DATASEQ_INORDER \
+ (1ULL << ISCSI_FLASHNODE_DATASEQ_INORDER)
+#define ISCSI_FNODE_PDU_INORDER (1ULL << ISCSI_FLASHNODE_PDU_INORDER)
+#define ISCSI_FNODE_CHAP_AUTH_EN (1ULL << ISCSI_FLASHNODE_CHAP_AUTH_EN)
+#define ISCSI_FNODE_SNACK_REQ_EN (1ULL << ISCSI_FLASHNODE_SNACK_REQ_EN)
+#define ISCSI_FNODE_DISCOVERY_LOGOUT_EN \
+ (1ULL << ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN)
+#define ISCSI_FNODE_BIDI_CHAP_EN (1ULL << ISCSI_FLASHNODE_BIDI_CHAP_EN)
+#define ISCSI_FNODE_DISCOVERY_AUTH_OPTIONAL \
+ (1ULL << ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL)
+#define ISCSI_FNODE_ERL (1ULL << ISCSI_FLASHNODE_ERL)
+#define ISCSI_FNODE_TCP_TIMESTAMP_STAT \
+ (1ULL << ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT)
+#define ISCSI_FNODE_TCP_NAGLE_DISABLE \
+ (1ULL << ISCSI_FLASHNODE_TCP_NAGLE_DISABLE)
+#define ISCSI_FNODE_TCP_WSF_DISABLE \
+ (1ULL << ISCSI_FLASHNODE_TCP_WSF_DISABLE)
+#define ISCSI_FNODE_TCP_TIMER_SCALE \
+ (1ULL << ISCSI_FLASHNODE_TCP_TIMER_SCALE)
+#define ISCSI_FNODE_TCP_TIMESTAMP_ENABLE \
+ (1ULL << ISCSI_FLASHNODE_TCP_TIMESTAMP_ENABLE)
+#define ISCSI_FNODE_IP_FRAG_DISABLE \
+ (1ULL << ISCSI_FLASHNODE_IP_FRAG_DISABLE)
+#define ISCSI_FNODE_MAX_RECV_DLENGTH \
+ (1ULL << ISCSI_FLASHNODE_MAX_RECV_DLENGTH)
+#define ISCSI_FNODE_MAX_XMIT_DLENGTH \
+ (1ULL << ISCSI_FLASHNODE_MAX_XMIT_DLENGTH)
+#define ISCSI_FNODE_FIRST_BURST (1ULL << ISCSI_FLASHNODE_FIRST_BURST)
+#define ISCSI_FNODE_DEF_TIME2WAIT (1ULL << ISCSI_FLASHNODE_DEF_TIME2WAIT)
+#define ISCSI_FNODE_DEF_TIME2RETAIN \
+ (1ULL << ISCSI_FLASHNODE_DEF_TIME2RETAIN)
+#define ISCSI_FNODE_MAX_R2T (1ULL << ISCSI_FLASHNODE_MAX_R2T)
+#define ISCSI_FNODE_KEEPALIVE_TMO (1ULL << ISCSI_FLASHNODE_KEEPALIVE_TMO)
+#define ISCSI_FNODE_ISID (1ULL << ISCSI_FLASHNODE_ISID)
+#define ISCSI_FNODE_TSID (1ULL << ISCSI_FLASHNODE_TSID)
+#define ISCSI_FNODE_PORT (1ULL << ISCSI_FLASHNODE_PORT)
+#define ISCSI_FNODE_MAX_BURST (1ULL << ISCSI_FLASHNODE_MAX_BURST)
+#define ISCSI_FNODE_DEF_TMF_TMO (1ULL << ISCSI_FLASHNODE_DEF_TMF_TMO)
+#define ISCSI_FNODE_IPADDR (1ULL << ISCSI_FLASHNODE_IPADDR)
+#define ISCSI_FNODE_ALIAS (1ULL << ISCSI_FLASHNODE_ALIAS)
+#define ISCSI_FNODE_REDIRECT_IPADDR \
+ (1ULL << ISCSI_FLASHNODE_REDIRECT_IPADDR)
+#define ISCSI_FNODE_MAX_SEGMENT_SIZE \
+ (1ULL << ISCSI_FLASHNODE_MAX_SEGMENT_SIZE)
+#define ISCSI_FNODE_LOCAL_PORT (1ULL << ISCSI_FLASHNODE_LOCAL_PORT)
+#define ISCSI_FNODE_IPV4_TOS (1ULL << ISCSI_FLASHNODE_IPV4_TOS)
+#define ISCSI_FNODE_IPV6_TC (1ULL << ISCSI_FLASHNODE_IPV6_TC)
+#define ISCSI_FNODE_IPV6_FLOW_LABEL \
+ (1ULL << ISCSI_FLASHNODE_IPV6_FLOW_LABEL)
+#define ISCSI_FNODE_NAME (1ULL << ISCSI_FLASHNODE_NAME)
+#define ISCSI_FNODE_TPGT (1ULL << ISCSI_FLASHNODE_TPGT)
+#define ISCSI_FNODE_LINK_LOCAL_IPV6 \
+ (1ULL << ISCSI_FLASHNODE_LINK_LOCAL_IPV6)
+#define ISCSI_FNODE_DISCOVERY_PARENT_IDX \
+ (1ULL << ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX)
+#define ISCSI_FNODE_DISCOVERY_PARENT_TYPE \
+ (1ULL << ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE)
+#define ISCSI_FNODE_TCP_XMIT_WSF (1ULL << ISCSI_FLASHNODE_TCP_XMIT_WSF)
+#define ISCSI_FNODE_TCP_RECV_WSF (1ULL << ISCSI_FLASHNODE_TCP_RECV_WSF)
+#define ISCSI_FNODE_CHAP_IN_IDX (1ULL << ISCSI_FLASHNODE_CHAP_IN_IDX)
+#define ISCSI_FNODE_CHAP_OUT_IDX (1ULL << ISCSI_FLASHNODE_CHAP_OUT_IDX)
+#define ISCSI_FNODE_USERNAME (1ULL << ISCSI_FLASHNODE_USERNAME)
+#define ISCSI_FNODE_USERNAME_IN (1ULL << ISCSI_FLASHNODE_USERNAME_IN)
+#define ISCSI_FNODE_PASSWORD (1ULL << ISCSI_FLASHNODE_PASSWORD)
+#define ISCSI_FNODE_PASSWORD_IN (1ULL << ISCSI_FLASHNODE_PASSWORD_IN)
+#define ISCSI_FNODE_STATSN (1ULL << ISCSI_FLASHNODE_STATSN)
+#define ISCSI_FNODE_EXP_STATSN (1ULL << ISCSI_FLASHNODE_EXP_STATSN)
+#define ISCSI_FNODE_IS_BOOT_TGT (1ULL << ISCSI_FLASHNODE_IS_BOOT_TGT)
+
+struct iscsi_flashnode_param_info {
+ uint32_t len; /* Actual length of the param */
+ uint16_t param; /* iscsi param value */
+ uint8_t value[0]; /* length sized value follows */
+} __attribute__((__packed__));
+
/* iSCSI HBA params */
enum iscsi_host_param {
ISCSI_HOST_PARAM_HWADDRESS,