The be2iscsi driver support for bsg V2
Subsystems (2)
PATCH 2/2 The be2iscsi driver support for bsg V2
This patch contains the necessary changes to support
the bsg interface
Signed-off-by Jayamohan Kallickal <[email protected]>
--- drivers/scsi/be2iscsi/be_cmds.h | 137 ++++++++++++++++++++--- drivers/scsi/be2iscsi/be_iscsi.c | 3 +- drivers/scsi/be2iscsi/be_main.c | 95 ++++++++++++++-- drivers/scsi/be2iscsi/be_main.h | 4 +- drivers/scsi/be2iscsi/be_mgmt.c | 230 +++++++++++++++++++++++++++++++++++++- drivers/scsi/be2iscsi/be_mgmt.h | 85 ++++++++++++++ 6 files changed, 519 insertions(+), 35 deletions(-)
drivers/scsi/be2iscsi/be_cmds.h +120 -17
@@ -18,6 +18,7 @@#ifndef BEISCSI_CMDS_H #define BEISCSI_CMDS_H +#include <scsi/scsi_bsg_iscsi.h> /** * The driver sends configuration and managements command requests to the * firmware in the BE. These requests are communicated to the processor
@@ -162,6 +163,13 @@ struct be_mcc_mailbox {#define OPCODE_COMMON_ISCSI_CFG_POST_SGL_PAGES 2#define OPCODE_COMMON_ISCSI_CFG_REMOVE_SGL_PAGES 3#define OPCODE_COMMON_ISCSI_NTWK_GET_NIC_CONFIG 7 +#define OPCODE_COMMON_ISCSI_NTWK_SET_VLAN 14 +#define OPCODE_COMMON_ISCSI_NTWK_CONFIGURE_STATELESS_IP_ADDR 17 +#define OPCODE_COMMON_ISCSI_NTWK_MODIFY_IP_ADDR 21 +#define OPCODE_COMMON_ISCSI_NTWK_GET_DEFAULT_GATEWAY 22 +#define OPCODE_COMMON_ISCSI_NTWK_MODIFY_DEFAULT_GATEWAY 23 +#define OPCODE_COMMON_ISCSI_NTWK_GET_ALL_IF_ID 24 +#define OPCODE_COMMON_ISCSI_NTWK_GET_IF_INFO 25#define OPCODE_COMMON_ISCSI_SET_FRAGNUM_BITS_FOR_SGL_CRA 61#define OPCODE_COMMON_ISCSI_DEFQ_CREATE 64#define OPCODE_COMMON_ISCSI_DEFQ_DESTROY 65
@@ -237,6 +245,86 @@ struct be_cmd_resp_eq_create {u16 rsvd0;/* sword */ } __packed; +struct mgmt_chap_format { +u32 flags; +u8 intr_chap_name[256 ]; +u8 intr_secret[16 ]; +u8 target_chap_name[256 ]; +u8 target_secret[16 ]; +u16 intr_chap_name_length; +u16 intr_secret_length; +u16 target_chap_name_length; +u16 target_secret_length; +} __packed; + +struct mgmt_auth_method_format { +u8 auth_method_type; +u8 padding[3 ]; +struct mgmt_chap_format chap; +} __packed; + +struct mgmt_conn_login_options { +u8 flags; +u8 header_digest; +u8 data_digest; +u8 rsvd0; +u32 max_recv_datasegment_len_ini; +u32 max_recv_datasegment_len_tgt; +u32 tcp_mss; +u32 tcp_window_size; +struct mgmt_auth_method_format auth_data; +} __packed; + +struct mgmt_conn_info { +u32 connection_handle; +u32 connection_status; +u16 src_port; +u16 dest_port; +u16 dest_port_redirected; +u16 cid; +u32 estimated_throughput; +struct ip_address_format src_ipaddr; +struct ip_address_format dest_ipaddr; +struct ip_address_format dest_ipaddr_redirected; +struct mgmt_conn_login_options negotiated_login_options; +} __packed; + +struct mgmt_session_login_options { +u8 flags; +u8 error_recovery_level; +u16 rsvd0; +u32 first_burst_length; +u32 max_burst_length; +u16 max_connections; +u16 max_outstanding_r2t; +u16 default_time2wait; +u16 default_time2retain; +} __packed; + +struct mgmt_session_info { +u32 session_handle; +u32 status; +u8 isid[6 ]; +u16 tsih; +u32 session_flags; +u16 conn_count; +u16 pad; +u8 target_name[224 ]; +u8 initiator_iscsiname[224 ]; +struct mgmt_session_login_options negotiated_login_options; +struct mgmt_conn_info conn_list[1 ]; +} __packed; + +struct be_cmd_req_geta_session { +struct be_cmd_resp_hdr resp_hdr; +u32 session_handle; +} __packed; + +struct be_cmd_resp_geta_session { +struct be_cmd_resp_hdr resp_hdr; +struct mgmt_session_info session_info; +} __packed; +struct mac_addr {u16 size_of_struct;u8 addr[ETH_ALEN ];
@@ -254,6 +342,16 @@ struct be_cmd_resp_mac_query {struct mac_addr mac; }; +struct be_cmd_req_get_boot_target { +struct be_cmd_req_hdr hdr; +} __packed; + +struct be_cmd_resp_get_boot_target { +struct be_cmd_resp_hdr hdr; +u32 boot_session_count; +u32 boot_session_handle; +}; +/******************** Create CQ ***************************/ /** * Pseudo amap definition in which each bit of the actual structure is defined
@@ -601,14 +699,6 @@ struct be_eq_delay_params_in {struct eq_delay delay[8 ]; } __packed; -struct ip_address_format { -u16 size_of_structure; -u8 reserved; -u8 ip_type; -u8 ip_address[16 ]; -u32 rsvd0; -} __packed; -struct tcp_connect_and_offload_in {struct be_cmd_req_hdr hdr;struct ip_address_format ip_address;
@@ -688,18 +778,31 @@ struct be_fw_cfg {u32 function_caps; } __packed; -#define CMD_ISCSI_COMMAND_INVALIDATE 1 -#define ISCSI_OPCODE_SCSI_DATA_OUT 5 +struct be_all_if_id { +struct be_cmd_req_hdr hdr; +u32 if_count; +u32 if_hndl_list[1 ]; +} __packed; + + +#define ISCSI_OPCODE_SCSI_DATA_OUT 5#define OPCODE_COMMON_ISCSI_TCP_CONNECT_AND_OFFLOAD 70 -#define OPCODE_ISCSI_INI_DRIVER_OFFLOAD_SESSION 41 -#define OPCODE_COMMON_MODIFY_EQ_DELAY 41 -#define OPCODE_COMMON_ISCSI_CLEANUP 59 -#define OPCODE_COMMON_TCP_UPLOAD 56 +#define OPCODE_COMMON_MODIFY_EQ_DELAY 41 +#define OPCODE_COMMON_ISCSI_CLEANUP 59 +#define OPCODE_COMMON_TCP_UPLOAD 56#define OPCODE_COMMON_ISCSI_ERROR_RECOVERY_INVALIDATE_COMMANDS 1 -/* --- CMD_ISCSI_INVALIDATE_CONNECTION_TYPE --- */ -#define CMD_ISCSI_CONNECTION_INVALIDATE 0x8001 -#define CMD_ISCSI_CONNECTION_ISSUE_TCP_RST 0x8002 +#define OPCODE_ISCSI_INI_CFG_GET_HBA_NAME 6 +#define OPCODE_ISCSI_INI_CFG_SET_HBA_NAME 7 +#define OPCODE_ISCSI_INI_SESSION_GET_A_SESSION 14 +#define OPCODE_ISCSI_INI_DRIVER_OFFLOAD_SESSION 41#define OPCODE_ISCSI_INI_DRIVER_INVALIDATE_CONNECTION 42 +#define OPCODE_ISCSI_INI_BOOT_GET_BOOT_TARGET 52 + +/* --- CMD_ISCSI_INVALIDATE_CONNECTION_TYPE --- */ +#define CMD_ISCSI_COMMAND_INVALIDATE 1 +#define CMD_ISCSI_CONNECTION_INVALIDATE 0x8001 +#define CMD_ISCSI_CONNECTION_ISSUE_TCP_RST 0x8002 +#define INI_WR_CMD 1/* Initiator write command */ #define INI_TMF_CMD 2/* Initiator TMF command */
drivers/scsi/be2iscsi/be_iscsi.c +1 -2
@@ -696,8 +696,7 @@ void beiscsi_conn_stop(struct iscsi_cls_conn *cls_conn, int flag)SE_DEBUG (DBG_LVL_8 ,"In beiscsi_conn_stop ep_cid = %d\n" , beiscsi_ep->ep_cid); tag =mgmt_invalidate_connection (phba, beiscsi_ep, - beiscsi_ep->ep_cid,1 , - savecfg_flag); + beiscsi_ep->ep_cid,0 , savecfg_flag);if (!tag) { SE_DEBUG(DBG_LVL_1, "mgmt_invalidate_connection Failed for cid=%d \n",
drivers/scsi/be2iscsi/be_main.c +83 -12
197 lines not on this page · raw message
drivers/scsi/be2iscsi/be_main.h +3 -1
@@ -62,7 +62,7 @@#define BEISCSI_SGLIST_ELEMENTS 30#define BEISCSI_CMD_PER_LUN 128/* scsi_host->cmd_per_lun */ -#define BEISCSI_MAX_SECTORS 256/* scsi_host->max_sectors */ +#define BEISCSI_MAX_SECTORS 2048/* scsi_host->max_sectors */ #define BEISCSI_MAX_CMD_LEN 16/* scsi_host->max_cmd_len */ #define BEISCSI_NUM_MAX_LUN 256/* scsi_host->max_lun */
@@ -334,6 +334,7 @@ struct beiscsi_hba {struct work_struct work_cqs;/* The work being queued */ struct be_ctrl_info ctrl;unsigned int generation; +unsigned int interface_handle;struct invalidate_command_table inv_tbl[128 ]; };
@@ -353,6 +354,7 @@ struct beiscsi_conn {struct beiscsi_endpoint *ep;unsigned short login_in_progress;struct sgl_handle *plogin_sgl_handle; +struct wrb_handle *plogin_wrb_handle;struct beiscsi_session *beiscsi_sess;struct iscsi_task *task; };
drivers/scsi/be2iscsi/be_mgmt.c +227 -3
285 lines not on this page · raw message
drivers/scsi/be2iscsi/be_mgmt.h +85 -0
101 lines not on this page · raw message
Signature · 1 line
1.6.4