11f4d4ed6SAlexander Lobakin /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 27a9b6b8fSYuval Mintz /* QLogic qed NIC Driver 3e8f1cb50SMintz, Yuval * Copyright (c) 2015-2017 QLogic Corporation 4663eacd8SAlexander Lobakin * Copyright (c) 2019-2020 Marvell International Ltd. 57a9b6b8fSYuval Mintz */ 67a9b6b8fSYuval Mintz 77a9b6b8fSYuval Mintz #ifndef __ISCSI_COMMON__ 87a9b6b8fSYuval Mintz #define __ISCSI_COMMON__ 9a2e7699eSTomer Tayar 107a9b6b8fSYuval Mintz /**********************/ 117a9b6b8fSYuval Mintz /* ISCSI FW CONSTANTS */ 127a9b6b8fSYuval Mintz /**********************/ 137a9b6b8fSYuval Mintz 147a9b6b8fSYuval Mintz /* iSCSI HSI constants */ 157a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_MTU (1500) 167a9b6b8fSYuval Mintz 177a9b6b8fSYuval Mintz /* KWQ (kernel work queue) layer codes */ 187a9b6b8fSYuval Mintz #define ISCSI_SLOW_PATH_LAYER_CODE (6) 197a9b6b8fSYuval Mintz 207a9b6b8fSYuval Mintz /* iSCSI parameter defaults */ 217a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_HEADER_DIGEST (0) 227a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_DATA_DIGEST (0) 237a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_INITIAL_R2T (1) 247a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_IMMEDIATE_DATA (1) 257a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_MAX_PDU_LENGTH (0x2000) 267a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_FIRST_BURST_LENGTH (0x10000) 277a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_MAX_BURST_LENGTH (0x40000) 287a9b6b8fSYuval Mintz #define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1) 297a9b6b8fSYuval Mintz 307a9b6b8fSYuval Mintz /* iSCSI parameter limits */ 317a9b6b8fSYuval Mintz #define ISCSI_MIN_VAL_MAX_PDU_LENGTH (0x200) 327a9b6b8fSYuval Mintz #define ISCSI_MAX_VAL_MAX_PDU_LENGTH (0xffffff) 337a9b6b8fSYuval Mintz #define ISCSI_MIN_VAL_BURST_LENGTH (0x200) 347a9b6b8fSYuval Mintz #define ISCSI_MAX_VAL_BURST_LENGTH (0xffffff) 357a9b6b8fSYuval Mintz #define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T (1) 367a9b6b8fSYuval Mintz #define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T (0xff) 377a9b6b8fSYuval Mintz 38be086e7cSMintz, Yuval #define ISCSI_AHS_CNTL_SIZE 4 39be086e7cSMintz, Yuval 40be086e7cSMintz, Yuval #define ISCSI_WQE_NUM_SGES_SLOWIO (0xf) 41be086e7cSMintz, Yuval 427a9b6b8fSYuval Mintz /* iSCSI reserved params */ 437a9b6b8fSYuval Mintz #define ISCSI_ITT_ALL_ONES (0xffffffff) 447a9b6b8fSYuval Mintz #define ISCSI_TTT_ALL_ONES (0xffffffff) 457a9b6b8fSYuval Mintz 467a9b6b8fSYuval Mintz #define ISCSI_OPTION_1_OFF_CHIP_TCP 1 477a9b6b8fSYuval Mintz #define ISCSI_OPTION_2_ON_CHIP_TCP 2 487a9b6b8fSYuval Mintz 497a9b6b8fSYuval Mintz #define ISCSI_INITIATOR_MODE 0 507a9b6b8fSYuval Mintz #define ISCSI_TARGET_MODE 1 517a9b6b8fSYuval Mintz 527a9b6b8fSYuval Mintz /* iSCSI request op codes */ 537b6859fbSMintz, Yuval #define ISCSI_OPCODE_NOP_OUT (0) 547b6859fbSMintz, Yuval #define ISCSI_OPCODE_SCSI_CMD (1) 557b6859fbSMintz, Yuval #define ISCSI_OPCODE_TMF_REQUEST (2) 567b6859fbSMintz, Yuval #define ISCSI_OPCODE_LOGIN_REQUEST (3) 577b6859fbSMintz, Yuval #define ISCSI_OPCODE_TEXT_REQUEST (4) 587a9b6b8fSYuval Mintz #define ISCSI_OPCODE_DATA_OUT (5) 597b6859fbSMintz, Yuval #define ISCSI_OPCODE_LOGOUT_REQUEST (6) 607a9b6b8fSYuval Mintz 617a9b6b8fSYuval Mintz /* iSCSI response/messages op codes */ 627a9b6b8fSYuval Mintz #define ISCSI_OPCODE_NOP_IN (0x20) 637a9b6b8fSYuval Mintz #define ISCSI_OPCODE_SCSI_RESPONSE (0x21) 647a9b6b8fSYuval Mintz #define ISCSI_OPCODE_TMF_RESPONSE (0x22) 657a9b6b8fSYuval Mintz #define ISCSI_OPCODE_LOGIN_RESPONSE (0x23) 667a9b6b8fSYuval Mintz #define ISCSI_OPCODE_TEXT_RESPONSE (0x24) 677a9b6b8fSYuval Mintz #define ISCSI_OPCODE_DATA_IN (0x25) 687a9b6b8fSYuval Mintz #define ISCSI_OPCODE_LOGOUT_RESPONSE (0x26) 697a9b6b8fSYuval Mintz #define ISCSI_OPCODE_R2T (0x31) 707a9b6b8fSYuval Mintz #define ISCSI_OPCODE_ASYNC_MSG (0x32) 717a9b6b8fSYuval Mintz #define ISCSI_OPCODE_REJECT (0x3f) 727a9b6b8fSYuval Mintz 737a9b6b8fSYuval Mintz /* iSCSI stages */ 747a9b6b8fSYuval Mintz #define ISCSI_STAGE_SECURITY_NEGOTIATION (0) 757a9b6b8fSYuval Mintz #define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION (1) 767a9b6b8fSYuval Mintz #define ISCSI_STAGE_FULL_FEATURE_PHASE (3) 777a9b6b8fSYuval Mintz 787a9b6b8fSYuval Mintz /* iSCSI CQE errors */ 797a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DATA_DIGEST (0x08) 807a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN (0x10) 817a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DATA_TRUNCATED (0x20) 827a9b6b8fSYuval Mintz 83da090917STomer Tayar /* Union of data bd_opaque/ tq_tid */ 84da090917STomer Tayar union bd_opaque_tq_union { 85da090917STomer Tayar __le16 bd_opaque; 86da090917STomer Tayar __le16 tq_tid; 87da090917STomer Tayar }; 88da090917STomer Tayar 89a2e7699eSTomer Tayar /* ISCSI SGL entry */ 907a9b6b8fSYuval Mintz struct cqe_error_bitmap { 917a9b6b8fSYuval Mintz u8 cqe_error_status_bits; 927a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DIF_ERR_BITS_MASK 0x7 937a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DIF_ERR_BITS_SHIFT 0 947a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_MASK 0x1 957a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_SHIFT 3 967a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_MASK 0x1 977a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_SHIFT 4 987a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_MASK 0x1 997a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_SHIFT 5 1007a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_UNDER_RUN_ERR_MASK 0x1 1017a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_UNDER_RUN_ERR_SHIFT 6 1027a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_RESERVED2_MASK 0x1 1037a9b6b8fSYuval Mintz #define CQE_ERROR_BITMAP_RESERVED2_SHIFT 7 1047a9b6b8fSYuval Mintz }; 1057a9b6b8fSYuval Mintz 1067a9b6b8fSYuval Mintz union cqe_error_status { 1077a9b6b8fSYuval Mintz u8 error_status; 1087a9b6b8fSYuval Mintz struct cqe_error_bitmap error_bits; 1097a9b6b8fSYuval Mintz }; 1107a9b6b8fSYuval Mintz 111a2e7699eSTomer Tayar /* iSCSI Login Response PDU header */ 1127a9b6b8fSYuval Mintz struct data_hdr { 1137a9b6b8fSYuval Mintz __le32 data[12]; 1147a9b6b8fSYuval Mintz }; 1157a9b6b8fSYuval Mintz 116da090917STomer Tayar struct lun_mapper_addr_reserved { 117da090917STomer Tayar struct regpair lun_mapper_addr; 118da090917STomer Tayar u8 reserved0[8]; 119da090917STomer Tayar }; 120da090917STomer Tayar 121da090917STomer Tayar /* rdif conetxt for dif on immediate */ 122da090917STomer Tayar struct dif_on_immediate_params { 123da090917STomer Tayar __le32 initial_ref_tag; 124da090917STomer Tayar __le16 application_tag; 125da090917STomer Tayar __le16 application_tag_mask; 126da090917STomer Tayar __le16 flags1; 127da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_GUARD_MASK 0x1 128da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_GUARD_SHIFT 0 129da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_APP_TAG_MASK 0x1 130da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_APP_TAG_SHIFT 1 131da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_REF_TAG_MASK 0x1 132da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_REF_TAG_SHIFT 2 133da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_GUARD_MASK 0x1 134da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_GUARD_SHIFT 3 135da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_MASK 0x1 136da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_SHIFT 4 137da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_MASK 0x1 138da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_SHIFT 5 139da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_INTERVAL_SIZE_MASK 0x1 140da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_INTERVAL_SIZE_SHIFT 6 141da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_NETWORK_INTERFACE_MASK 0x1 142da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_NETWORK_INTERFACE_SHIFT 7 143da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_HOST_INTERFACE_MASK 0x3 144da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_HOST_INTERFACE_SHIFT 8 145da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_REF_TAG_MASK_MASK 0xF 146da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_REF_TAG_MASK_SHIFT 10 147da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_WITH_MASK_MASK 0x1 148da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_WITH_MASK_SHIFT 14 149da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_WITH_MASK_MASK 0x1 150da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_WITH_MASK_SHIFT 15 151da090917STomer Tayar u8 flags0; 152da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_RESERVED_MASK 0x1 153da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_RESERVED_SHIFT 0 154da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_IGNORE_APP_TAG_MASK 0x1 155da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_IGNORE_APP_TAG_SHIFT 1 156da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_INITIAL_REF_TAG_IS_VALID_MASK 0x1 157da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_INITIAL_REF_TAG_IS_VALID_SHIFT 2 158da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_HOST_GUARD_TYPE_MASK 0x1 159da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_HOST_GUARD_TYPE_SHIFT 3 160da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_PROTECTION_TYPE_MASK 0x3 161da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_PROTECTION_TYPE_SHIFT 4 162da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_CRC_SEED_MASK 0x1 163da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_CRC_SEED_SHIFT 6 164da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_KEEP_REF_TAG_CONST_MASK 0x1 165da090917STomer Tayar #define DIF_ON_IMMEDIATE_PARAMS_KEEP_REF_TAG_CONST_SHIFT 7 166da090917STomer Tayar u8 reserved_zero[5]; 167da090917STomer Tayar }; 168da090917STomer Tayar 169da090917STomer Tayar /* iSCSI dif on immediate mode attributes union */ 170da090917STomer Tayar union dif_configuration_params { 171da090917STomer Tayar struct lun_mapper_addr_reserved lun_mapper_address; 172da090917STomer Tayar struct dif_on_immediate_params def_dif_conf; 173da090917STomer Tayar }; 174da090917STomer Tayar 175a2e7699eSTomer Tayar /* Union of data/r2t sequence number */ 176a2e7699eSTomer Tayar union iscsi_seq_num { 177a2e7699eSTomer Tayar __le16 data_sn; 178a2e7699eSTomer Tayar __le16 r2t_sn; 1797a9b6b8fSYuval Mintz }; 1807a9b6b8fSYuval Mintz 181a2e7699eSTomer Tayar /* iSCSI DIF flags */ 182a2e7699eSTomer Tayar struct iscsi_dif_flags { 183a2e7699eSTomer Tayar u8 flags; 184a2e7699eSTomer Tayar #define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF 185a2e7699eSTomer Tayar #define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0 186a2e7699eSTomer Tayar #define ISCSI_DIF_FLAGS_DIF_TO_PEER_MASK 0x1 187a2e7699eSTomer Tayar #define ISCSI_DIF_FLAGS_DIF_TO_PEER_SHIFT 4 188a2e7699eSTomer Tayar #define ISCSI_DIF_FLAGS_HOST_INTERFACE_MASK 0x7 189a2e7699eSTomer Tayar #define ISCSI_DIF_FLAGS_HOST_INTERFACE_SHIFT 5 190a2e7699eSTomer Tayar }; 191a2e7699eSTomer Tayar 192a2e7699eSTomer Tayar /* The iscsi storm task context of Ystorm */ 193a2e7699eSTomer Tayar struct ystorm_iscsi_task_state { 194a2e7699eSTomer Tayar struct scsi_cached_sges data_desc; 195a2e7699eSTomer Tayar struct scsi_sgl_params sgl_params; 196a2e7699eSTomer Tayar __le32 exp_r2t_sn; 197a2e7699eSTomer Tayar __le32 buffer_offset; 198a2e7699eSTomer Tayar union iscsi_seq_num seq_num; 199a2e7699eSTomer Tayar struct iscsi_dif_flags dif_flags; 200a2e7699eSTomer Tayar u8 flags; 201a2e7699eSTomer Tayar #define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_MASK 0x1 202a2e7699eSTomer Tayar #define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_SHIFT 0 203a2e7699eSTomer Tayar #define YSTORM_ISCSI_TASK_STATE_SLOW_IO_MASK 0x1 204a2e7699eSTomer Tayar #define YSTORM_ISCSI_TASK_STATE_SLOW_IO_SHIFT 1 205da090917STomer Tayar #define YSTORM_ISCSI_TASK_STATE_SET_DIF_OFFSET_MASK 0x1 206da090917STomer Tayar #define YSTORM_ISCSI_TASK_STATE_SET_DIF_OFFSET_SHIFT 2 207da090917STomer Tayar #define YSTORM_ISCSI_TASK_STATE_RESERVED0_MASK 0x1F 208da090917STomer Tayar #define YSTORM_ISCSI_TASK_STATE_RESERVED0_SHIFT 3 209a2e7699eSTomer Tayar }; 210a2e7699eSTomer Tayar 211a2e7699eSTomer Tayar /* The iscsi storm task context of Ystorm */ 212a2e7699eSTomer Tayar struct ystorm_iscsi_task_rxmit_opt { 213a2e7699eSTomer Tayar __le32 fast_rxmit_sge_offset; 214a2e7699eSTomer Tayar __le32 scan_start_buffer_offset; 215a2e7699eSTomer Tayar __le32 fast_rxmit_buffer_offset; 216a2e7699eSTomer Tayar u8 scan_start_sgl_index; 217a2e7699eSTomer Tayar u8 fast_rxmit_sgl_index; 218a2e7699eSTomer Tayar __le16 reserved; 219a2e7699eSTomer Tayar }; 220a2e7699eSTomer Tayar 221a2e7699eSTomer Tayar /* iSCSI Common PDU header */ 222a2e7699eSTomer Tayar struct iscsi_common_hdr { 223a2e7699eSTomer Tayar u8 hdr_status; 224a2e7699eSTomer Tayar u8 hdr_response; 225a2e7699eSTomer Tayar u8 hdr_flags; 226a2e7699eSTomer Tayar u8 hdr_first_byte; 227a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_OPCODE_MASK 0x3F 228a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_OPCODE_SHIFT 0 229a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_IMM_MASK 0x1 230a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_IMM_SHIFT 6 231a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_RSRV_MASK 0x1 232a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_RSRV_SHIFT 7 233a2e7699eSTomer Tayar __le32 hdr_second_dword; 234a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 235a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_DATA_SEG_LEN_SHIFT 0 236a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_MASK 0xFF 237a2e7699eSTomer Tayar #define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_SHIFT 24 238a2e7699eSTomer Tayar struct regpair lun_reserved; 239a2e7699eSTomer Tayar __le32 itt; 240a2e7699eSTomer Tayar __le32 ttt; 241a2e7699eSTomer Tayar __le32 cmdstat_sn; 242a2e7699eSTomer Tayar __le32 exp_statcmd_sn; 243a2e7699eSTomer Tayar __le32 max_cmd_sn; 244a2e7699eSTomer Tayar __le32 data[3]; 245a2e7699eSTomer Tayar }; 246a2e7699eSTomer Tayar 247a2e7699eSTomer Tayar /* iSCSI Command PDU header */ 2487a9b6b8fSYuval Mintz struct iscsi_cmd_hdr { 2497a9b6b8fSYuval Mintz __le16 reserved1; 2507a9b6b8fSYuval Mintz u8 flags_attr; 2517a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_ATTR_MASK 0x7 2527a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_ATTR_SHIFT 0 2537a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_RSRV_MASK 0x3 2547a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_RSRV_SHIFT 3 2557a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_WRITE_MASK 0x1 2567a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_WRITE_SHIFT 5 2577a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_READ_MASK 0x1 2587a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_READ_SHIFT 6 2597a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_FINAL_MASK 0x1 2607a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_FINAL_SHIFT 7 2617b6859fbSMintz, Yuval u8 hdr_first_byte; 2627b6859fbSMintz, Yuval #define ISCSI_CMD_HDR_OPCODE_MASK 0x3F 2637b6859fbSMintz, Yuval #define ISCSI_CMD_HDR_OPCODE_SHIFT 0 2647b6859fbSMintz, Yuval #define ISCSI_CMD_HDR_IMM_MASK 0x1 2657b6859fbSMintz, Yuval #define ISCSI_CMD_HDR_IMM_SHIFT 6 2667b6859fbSMintz, Yuval #define ISCSI_CMD_HDR_RSRV1_MASK 0x1 2677b6859fbSMintz, Yuval #define ISCSI_CMD_HDR_RSRV1_SHIFT 7 2687a9b6b8fSYuval Mintz __le32 hdr_second_dword; 2697a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 2707a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_DATA_SEG_LEN_SHIFT 0 2717a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_TOTAL_AHS_LEN_MASK 0xFF 2727a9b6b8fSYuval Mintz #define ISCSI_CMD_HDR_TOTAL_AHS_LEN_SHIFT 24 2737a9b6b8fSYuval Mintz struct regpair lun; 2747a9b6b8fSYuval Mintz __le32 itt; 2757a9b6b8fSYuval Mintz __le32 expected_transfer_length; 2767a9b6b8fSYuval Mintz __le32 cmd_sn; 2777a9b6b8fSYuval Mintz __le32 exp_stat_sn; 2787a9b6b8fSYuval Mintz __le32 cdb[4]; 2797a9b6b8fSYuval Mintz }; 2807a9b6b8fSYuval Mintz 281a2e7699eSTomer Tayar /* iSCSI Command PDU header with Extended CDB (Initiator Mode) */ 2827a9b6b8fSYuval Mintz struct iscsi_ext_cdb_cmd_hdr { 2837a9b6b8fSYuval Mintz __le16 reserved1; 2847a9b6b8fSYuval Mintz u8 flags_attr; 2857a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_ATTR_MASK 0x7 2867a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_ATTR_SHIFT 0 2877a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_RSRV_MASK 0x3 2887a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_RSRV_SHIFT 3 2897a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_WRITE_MASK 0x1 2907a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_WRITE_SHIFT 5 2917a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_READ_MASK 0x1 2927a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_READ_SHIFT 6 2937a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_FINAL_MASK 0x1 2947a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_FINAL_SHIFT 7 2957a9b6b8fSYuval Mintz u8 opcode; 2967a9b6b8fSYuval Mintz __le32 hdr_second_dword; 2977a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 2987a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_SHIFT 0 2997a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_MASK 0xFF 3007a9b6b8fSYuval Mintz #define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_SHIFT 24 3017a9b6b8fSYuval Mintz struct regpair lun; 3027a9b6b8fSYuval Mintz __le32 itt; 3037a9b6b8fSYuval Mintz __le32 expected_transfer_length; 3047a9b6b8fSYuval Mintz __le32 cmd_sn; 3057a9b6b8fSYuval Mintz __le32 exp_stat_sn; 306be086e7cSMintz, Yuval struct scsi_sge cdb_sge; 3077a9b6b8fSYuval Mintz }; 3087a9b6b8fSYuval Mintz 309a2e7699eSTomer Tayar /* iSCSI login request PDU header */ 3107a9b6b8fSYuval Mintz struct iscsi_login_req_hdr { 3117a9b6b8fSYuval Mintz u8 version_min; 3127a9b6b8fSYuval Mintz u8 version_max; 3137a9b6b8fSYuval Mintz u8 flags_attr; 3147a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_NSG_MASK 0x3 3157a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_NSG_SHIFT 0 3167a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_CSG_MASK 0x3 3177a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_CSG_SHIFT 2 3187a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_RSRV_MASK 0x3 3197a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_RSRV_SHIFT 4 3207a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_C_MASK 0x1 3217a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_C_SHIFT 6 3227a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_T_MASK 0x1 3237a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_T_SHIFT 7 3247a9b6b8fSYuval Mintz u8 opcode; 3257a9b6b8fSYuval Mintz __le32 hdr_second_dword; 3267a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 3277a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_SHIFT 0 3287a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_MASK 0xFF 3297a9b6b8fSYuval Mintz #define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_SHIFT 24 33005fafbfbSYuval Mintz __le32 isid_tabc; 3317a9b6b8fSYuval Mintz __le16 tsih; 3327a9b6b8fSYuval Mintz __le16 isid_d; 3337a9b6b8fSYuval Mintz __le32 itt; 3347a9b6b8fSYuval Mintz __le16 reserved1; 3357a9b6b8fSYuval Mintz __le16 cid; 3367a9b6b8fSYuval Mintz __le32 cmd_sn; 3377a9b6b8fSYuval Mintz __le32 exp_stat_sn; 3387a9b6b8fSYuval Mintz __le32 reserved2[4]; 3397a9b6b8fSYuval Mintz }; 3407a9b6b8fSYuval Mintz 341a2e7699eSTomer Tayar /* iSCSI logout request PDU header */ 3427a9b6b8fSYuval Mintz struct iscsi_logout_req_hdr { 3437a9b6b8fSYuval Mintz __le16 reserved0; 3447a9b6b8fSYuval Mintz u8 reason_code; 3457a9b6b8fSYuval Mintz u8 opcode; 3467a9b6b8fSYuval Mintz __le32 reserved1; 3477a9b6b8fSYuval Mintz __le32 reserved2[2]; 3487a9b6b8fSYuval Mintz __le32 itt; 3497a9b6b8fSYuval Mintz __le16 reserved3; 3507a9b6b8fSYuval Mintz __le16 cid; 3517a9b6b8fSYuval Mintz __le32 cmd_sn; 3527a9b6b8fSYuval Mintz __le32 exp_stat_sn; 3537a9b6b8fSYuval Mintz __le32 reserved4[4]; 3547a9b6b8fSYuval Mintz }; 3557a9b6b8fSYuval Mintz 356a2e7699eSTomer Tayar /* iSCSI Data-out PDU header */ 3577a9b6b8fSYuval Mintz struct iscsi_data_out_hdr { 3587a9b6b8fSYuval Mintz __le16 reserved1; 3597a9b6b8fSYuval Mintz u8 flags_attr; 3607a9b6b8fSYuval Mintz #define ISCSI_DATA_OUT_HDR_RSRV_MASK 0x7F 3617a9b6b8fSYuval Mintz #define ISCSI_DATA_OUT_HDR_RSRV_SHIFT 0 3627a9b6b8fSYuval Mintz #define ISCSI_DATA_OUT_HDR_FINAL_MASK 0x1 3637a9b6b8fSYuval Mintz #define ISCSI_DATA_OUT_HDR_FINAL_SHIFT 7 3647a9b6b8fSYuval Mintz u8 opcode; 3657a9b6b8fSYuval Mintz __le32 reserved2; 3667a9b6b8fSYuval Mintz struct regpair lun; 3677a9b6b8fSYuval Mintz __le32 itt; 3687a9b6b8fSYuval Mintz __le32 ttt; 3697a9b6b8fSYuval Mintz __le32 reserved3; 3707a9b6b8fSYuval Mintz __le32 exp_stat_sn; 3717a9b6b8fSYuval Mintz __le32 reserved4; 3727a9b6b8fSYuval Mintz __le32 data_sn; 3737a9b6b8fSYuval Mintz __le32 buffer_offset; 3747a9b6b8fSYuval Mintz __le32 reserved5; 3757a9b6b8fSYuval Mintz }; 3767a9b6b8fSYuval Mintz 377a2e7699eSTomer Tayar /* iSCSI Data-in PDU header */ 3787a9b6b8fSYuval Mintz struct iscsi_data_in_hdr { 3797a9b6b8fSYuval Mintz u8 status_rsvd; 3807a9b6b8fSYuval Mintz u8 reserved1; 3817a9b6b8fSYuval Mintz u8 flags; 3827a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_STATUS_MASK 0x1 3837a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_STATUS_SHIFT 0 3847a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_UNDERFLOW_MASK 0x1 3857a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_UNDERFLOW_SHIFT 1 3867a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_OVERFLOW_MASK 0x1 3877a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_OVERFLOW_SHIFT 2 3887a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_RSRV_MASK 0x7 3897a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_RSRV_SHIFT 3 3907a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_ACK_MASK 0x1 3917a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_ACK_SHIFT 6 3927a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_FINAL_MASK 0x1 3937a9b6b8fSYuval Mintz #define ISCSI_DATA_IN_HDR_FINAL_SHIFT 7 3947a9b6b8fSYuval Mintz u8 opcode; 3957a9b6b8fSYuval Mintz __le32 reserved2; 3967a9b6b8fSYuval Mintz struct regpair lun; 3977a9b6b8fSYuval Mintz __le32 itt; 3987a9b6b8fSYuval Mintz __le32 ttt; 3997a9b6b8fSYuval Mintz __le32 stat_sn; 4007a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 4017a9b6b8fSYuval Mintz __le32 max_cmd_sn; 4027a9b6b8fSYuval Mintz __le32 data_sn; 4037a9b6b8fSYuval Mintz __le32 buffer_offset; 4047a9b6b8fSYuval Mintz __le32 residual_count; 4057a9b6b8fSYuval Mintz }; 4067a9b6b8fSYuval Mintz 407a2e7699eSTomer Tayar /* iSCSI R2T PDU header */ 4087a9b6b8fSYuval Mintz struct iscsi_r2t_hdr { 4097a9b6b8fSYuval Mintz u8 reserved0[3]; 4107a9b6b8fSYuval Mintz u8 opcode; 4117a9b6b8fSYuval Mintz __le32 reserved2; 4127a9b6b8fSYuval Mintz struct regpair lun; 4137a9b6b8fSYuval Mintz __le32 itt; 4147a9b6b8fSYuval Mintz __le32 ttt; 4157a9b6b8fSYuval Mintz __le32 stat_sn; 4167a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 4177a9b6b8fSYuval Mintz __le32 max_cmd_sn; 4187a9b6b8fSYuval Mintz __le32 r2t_sn; 4197a9b6b8fSYuval Mintz __le32 buffer_offset; 4207a9b6b8fSYuval Mintz __le32 desired_data_trns_len; 4217a9b6b8fSYuval Mintz }; 4227a9b6b8fSYuval Mintz 423a2e7699eSTomer Tayar /* iSCSI NOP-out PDU header */ 4247a9b6b8fSYuval Mintz struct iscsi_nop_out_hdr { 4257a9b6b8fSYuval Mintz __le16 reserved1; 4267a9b6b8fSYuval Mintz u8 flags_attr; 4277a9b6b8fSYuval Mintz #define ISCSI_NOP_OUT_HDR_RSRV_MASK 0x7F 4287a9b6b8fSYuval Mintz #define ISCSI_NOP_OUT_HDR_RSRV_SHIFT 0 4297a9b6b8fSYuval Mintz #define ISCSI_NOP_OUT_HDR_CONST1_MASK 0x1 4307a9b6b8fSYuval Mintz #define ISCSI_NOP_OUT_HDR_CONST1_SHIFT 7 4317a9b6b8fSYuval Mintz u8 opcode; 4327a9b6b8fSYuval Mintz __le32 reserved2; 4337a9b6b8fSYuval Mintz struct regpair lun; 4347a9b6b8fSYuval Mintz __le32 itt; 4357a9b6b8fSYuval Mintz __le32 ttt; 4367a9b6b8fSYuval Mintz __le32 cmd_sn; 4377a9b6b8fSYuval Mintz __le32 exp_stat_sn; 4387a9b6b8fSYuval Mintz __le32 reserved3; 4397a9b6b8fSYuval Mintz __le32 reserved4; 4407a9b6b8fSYuval Mintz __le32 reserved5; 4417a9b6b8fSYuval Mintz __le32 reserved6; 4427a9b6b8fSYuval Mintz }; 4437a9b6b8fSYuval Mintz 444a2e7699eSTomer Tayar /* iSCSI NOP-in PDU header */ 4457a9b6b8fSYuval Mintz struct iscsi_nop_in_hdr { 4467a9b6b8fSYuval Mintz __le16 reserved0; 4477a9b6b8fSYuval Mintz u8 flags_attr; 4487a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_RSRV_MASK 0x7F 4497a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_RSRV_SHIFT 0 4507a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_CONST1_MASK 0x1 4517a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_CONST1_SHIFT 7 4527a9b6b8fSYuval Mintz u8 opcode; 4537a9b6b8fSYuval Mintz __le32 hdr_second_dword; 4547a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 4557a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_SHIFT 0 4567a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_MASK 0xFF 4577a9b6b8fSYuval Mintz #define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_SHIFT 24 4587a9b6b8fSYuval Mintz struct regpair lun; 4597a9b6b8fSYuval Mintz __le32 itt; 4607a9b6b8fSYuval Mintz __le32 ttt; 4617a9b6b8fSYuval Mintz __le32 stat_sn; 4627a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 4637a9b6b8fSYuval Mintz __le32 max_cmd_sn; 4647a9b6b8fSYuval Mintz __le32 reserved5; 4657a9b6b8fSYuval Mintz __le32 reserved6; 4667a9b6b8fSYuval Mintz __le32 reserved7; 4677a9b6b8fSYuval Mintz }; 4687a9b6b8fSYuval Mintz 469a2e7699eSTomer Tayar /* iSCSI Login Response PDU header */ 4707a9b6b8fSYuval Mintz struct iscsi_login_response_hdr { 4717a9b6b8fSYuval Mintz u8 version_active; 4727a9b6b8fSYuval Mintz u8 version_max; 4737a9b6b8fSYuval Mintz u8 flags_attr; 4747a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_NSG_MASK 0x3 4757a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_NSG_SHIFT 0 4767a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_CSG_MASK 0x3 4777a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_CSG_SHIFT 2 4787a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_RSRV_MASK 0x3 4797a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_RSRV_SHIFT 4 4807a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_C_MASK 0x1 4817a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_C_SHIFT 6 4827a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_T_MASK 0x1 4837a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_T_SHIFT 7 4847a9b6b8fSYuval Mintz u8 opcode; 4857a9b6b8fSYuval Mintz __le32 hdr_second_dword; 4867a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 4877a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 4887a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 4897a9b6b8fSYuval Mintz #define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 49005fafbfbSYuval Mintz __le32 isid_tabc; 4917a9b6b8fSYuval Mintz __le16 tsih; 4927a9b6b8fSYuval Mintz __le16 isid_d; 4937a9b6b8fSYuval Mintz __le32 itt; 4947a9b6b8fSYuval Mintz __le32 reserved1; 4957a9b6b8fSYuval Mintz __le32 stat_sn; 4967a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 4977a9b6b8fSYuval Mintz __le32 max_cmd_sn; 4987a9b6b8fSYuval Mintz __le16 reserved2; 4997a9b6b8fSYuval Mintz u8 status_detail; 5007a9b6b8fSYuval Mintz u8 status_class; 5017a9b6b8fSYuval Mintz __le32 reserved4[2]; 5027a9b6b8fSYuval Mintz }; 5037a9b6b8fSYuval Mintz 504a2e7699eSTomer Tayar /* iSCSI Logout Response PDU header */ 5057a9b6b8fSYuval Mintz struct iscsi_logout_response_hdr { 5067a9b6b8fSYuval Mintz u8 reserved1; 5077a9b6b8fSYuval Mintz u8 response; 5087a9b6b8fSYuval Mintz u8 flags; 5097a9b6b8fSYuval Mintz u8 opcode; 5107a9b6b8fSYuval Mintz __le32 hdr_second_dword; 5117a9b6b8fSYuval Mintz #define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 5127a9b6b8fSYuval Mintz #define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 5137a9b6b8fSYuval Mintz #define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 5147a9b6b8fSYuval Mintz #define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 5157a9b6b8fSYuval Mintz __le32 reserved2[2]; 5167a9b6b8fSYuval Mintz __le32 itt; 5177a9b6b8fSYuval Mintz __le32 reserved3; 5187a9b6b8fSYuval Mintz __le32 stat_sn; 5197a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 5207a9b6b8fSYuval Mintz __le32 max_cmd_sn; 5217a9b6b8fSYuval Mintz __le32 reserved4; 522be086e7cSMintz, Yuval __le16 time_2_retain; 523be086e7cSMintz, Yuval __le16 time_2_wait; 5247a9b6b8fSYuval Mintz __le32 reserved5[1]; 5257a9b6b8fSYuval Mintz }; 5267a9b6b8fSYuval Mintz 527a2e7699eSTomer Tayar /* iSCSI Text Request PDU header */ 5287a9b6b8fSYuval Mintz struct iscsi_text_request_hdr { 5297a9b6b8fSYuval Mintz __le16 reserved0; 5307a9b6b8fSYuval Mintz u8 flags_attr; 5317a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_RSRV_MASK 0x3F 5327a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_RSRV_SHIFT 0 5337a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_C_MASK 0x1 5347a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_C_SHIFT 6 5357a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_F_MASK 0x1 5367a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_F_SHIFT 7 5377a9b6b8fSYuval Mintz u8 opcode; 5387a9b6b8fSYuval Mintz __le32 hdr_second_dword; 5397a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 5407a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 5417a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF 5427a9b6b8fSYuval Mintz #define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 5437a9b6b8fSYuval Mintz struct regpair lun; 5447a9b6b8fSYuval Mintz __le32 itt; 5457a9b6b8fSYuval Mintz __le32 ttt; 5467a9b6b8fSYuval Mintz __le32 cmd_sn; 5477a9b6b8fSYuval Mintz __le32 exp_stat_sn; 5487a9b6b8fSYuval Mintz __le32 reserved4[4]; 5497a9b6b8fSYuval Mintz }; 5507a9b6b8fSYuval Mintz 551a2e7699eSTomer Tayar /* iSCSI Text Response PDU header */ 5527a9b6b8fSYuval Mintz struct iscsi_text_response_hdr { 5537a9b6b8fSYuval Mintz __le16 reserved1; 5547a9b6b8fSYuval Mintz u8 flags; 5557a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_RSRV_MASK 0x3F 5567a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_RSRV_SHIFT 0 5577a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_C_MASK 0x1 5587a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_C_SHIFT 6 5597a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_F_MASK 0x1 5607a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_F_SHIFT 7 5617a9b6b8fSYuval Mintz u8 opcode; 5627a9b6b8fSYuval Mintz __le32 hdr_second_dword; 5637a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 5647a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 5657a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 5667a9b6b8fSYuval Mintz #define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 5677a9b6b8fSYuval Mintz struct regpair lun; 5687a9b6b8fSYuval Mintz __le32 itt; 5697a9b6b8fSYuval Mintz __le32 ttt; 5707a9b6b8fSYuval Mintz __le32 stat_sn; 5717a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 5727a9b6b8fSYuval Mintz __le32 max_cmd_sn; 5737a9b6b8fSYuval Mintz __le32 reserved4[3]; 5747a9b6b8fSYuval Mintz }; 5757a9b6b8fSYuval Mintz 576a2e7699eSTomer Tayar /* iSCSI TMF Request PDU header */ 5777a9b6b8fSYuval Mintz struct iscsi_tmf_request_hdr { 5787a9b6b8fSYuval Mintz __le16 reserved0; 5797a9b6b8fSYuval Mintz u8 function; 5807a9b6b8fSYuval Mintz u8 opcode; 5817a9b6b8fSYuval Mintz __le32 hdr_second_dword; 5827a9b6b8fSYuval Mintz #define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 5837a9b6b8fSYuval Mintz #define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 5847a9b6b8fSYuval Mintz #define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF 5857a9b6b8fSYuval Mintz #define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 5867a9b6b8fSYuval Mintz struct regpair lun; 5877a9b6b8fSYuval Mintz __le32 itt; 5887a9b6b8fSYuval Mintz __le32 rtt; 5897a9b6b8fSYuval Mintz __le32 cmd_sn; 5907a9b6b8fSYuval Mintz __le32 exp_stat_sn; 5917a9b6b8fSYuval Mintz __le32 ref_cmd_sn; 5927a9b6b8fSYuval Mintz __le32 exp_data_sn; 5937a9b6b8fSYuval Mintz __le32 reserved4[2]; 5947a9b6b8fSYuval Mintz }; 5957a9b6b8fSYuval Mintz 5967a9b6b8fSYuval Mintz struct iscsi_tmf_response_hdr { 5977a9b6b8fSYuval Mintz u8 reserved2; 5987a9b6b8fSYuval Mintz u8 hdr_response; 5997a9b6b8fSYuval Mintz u8 hdr_flags; 6007a9b6b8fSYuval Mintz u8 opcode; 6017a9b6b8fSYuval Mintz __le32 hdr_second_dword; 6027a9b6b8fSYuval Mintz #define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 6037a9b6b8fSYuval Mintz #define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 6047a9b6b8fSYuval Mintz #define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 6057a9b6b8fSYuval Mintz #define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 6067a9b6b8fSYuval Mintz struct regpair reserved0; 6077a9b6b8fSYuval Mintz __le32 itt; 608be086e7cSMintz, Yuval __le32 reserved1; 6097a9b6b8fSYuval Mintz __le32 stat_sn; 6107a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 6117a9b6b8fSYuval Mintz __le32 max_cmd_sn; 6127a9b6b8fSYuval Mintz __le32 reserved4[3]; 6137a9b6b8fSYuval Mintz }; 6147a9b6b8fSYuval Mintz 615a2e7699eSTomer Tayar /* iSCSI Response PDU header */ 6167a9b6b8fSYuval Mintz struct iscsi_response_hdr { 6177a9b6b8fSYuval Mintz u8 hdr_status; 6187a9b6b8fSYuval Mintz u8 hdr_response; 6197a9b6b8fSYuval Mintz u8 hdr_flags; 6207a9b6b8fSYuval Mintz u8 opcode; 6217a9b6b8fSYuval Mintz __le32 hdr_second_dword; 6227a9b6b8fSYuval Mintz #define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 6237a9b6b8fSYuval Mintz #define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 6247a9b6b8fSYuval Mintz #define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 6257a9b6b8fSYuval Mintz #define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 6267a9b6b8fSYuval Mintz struct regpair lun; 6277a9b6b8fSYuval Mintz __le32 itt; 6287a9b6b8fSYuval Mintz __le32 snack_tag; 6297a9b6b8fSYuval Mintz __le32 stat_sn; 6307a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 6317a9b6b8fSYuval Mintz __le32 max_cmd_sn; 6327a9b6b8fSYuval Mintz __le32 exp_data_sn; 6337a9b6b8fSYuval Mintz __le32 bi_residual_count; 6347a9b6b8fSYuval Mintz __le32 residual_count; 6357a9b6b8fSYuval Mintz }; 6367a9b6b8fSYuval Mintz 637a2e7699eSTomer Tayar /* iSCSI Reject PDU header */ 6387a9b6b8fSYuval Mintz struct iscsi_reject_hdr { 6397a9b6b8fSYuval Mintz u8 reserved4; 6407a9b6b8fSYuval Mintz u8 hdr_reason; 6417a9b6b8fSYuval Mintz u8 hdr_flags; 6427a9b6b8fSYuval Mintz u8 opcode; 6437a9b6b8fSYuval Mintz __le32 hdr_second_dword; 6447a9b6b8fSYuval Mintz #define ISCSI_REJECT_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 6457a9b6b8fSYuval Mintz #define ISCSI_REJECT_HDR_DATA_SEG_LEN_SHIFT 0 6467a9b6b8fSYuval Mintz #define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_MASK 0xFF 6477a9b6b8fSYuval Mintz #define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_SHIFT 24 6487a9b6b8fSYuval Mintz struct regpair reserved0; 649be086e7cSMintz, Yuval __le32 all_ones; 6507a9b6b8fSYuval Mintz __le32 reserved2; 6517a9b6b8fSYuval Mintz __le32 stat_sn; 6527a9b6b8fSYuval Mintz __le32 exp_cmd_sn; 6537a9b6b8fSYuval Mintz __le32 max_cmd_sn; 6547a9b6b8fSYuval Mintz __le32 data_sn; 6557a9b6b8fSYuval Mintz __le32 reserved3[2]; 6567a9b6b8fSYuval Mintz }; 6577a9b6b8fSYuval Mintz 658a2e7699eSTomer Tayar /* iSCSI Asynchronous Message PDU header */ 659a2e7699eSTomer Tayar struct iscsi_async_msg_hdr { 660a2e7699eSTomer Tayar __le16 reserved0; 661a2e7699eSTomer Tayar u8 flags_attr; 662a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_RSRV_MASK 0x7F 663a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_RSRV_SHIFT 0 664a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_CONST1_MASK 0x1 665a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_CONST1_SHIFT 7 666a2e7699eSTomer Tayar u8 opcode; 667a2e7699eSTomer Tayar __le32 hdr_second_dword; 668a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 669a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_SHIFT 0 670a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_MASK 0xFF 671a2e7699eSTomer Tayar #define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_SHIFT 24 672a2e7699eSTomer Tayar struct regpair lun; 673a2e7699eSTomer Tayar __le32 all_ones; 674a2e7699eSTomer Tayar __le32 reserved1; 675a2e7699eSTomer Tayar __le32 stat_sn; 676a2e7699eSTomer Tayar __le32 exp_cmd_sn; 677a2e7699eSTomer Tayar __le32 max_cmd_sn; 678a2e7699eSTomer Tayar __le16 param1_rsrv; 679a2e7699eSTomer Tayar u8 async_vcode; 680a2e7699eSTomer Tayar u8 async_event; 681a2e7699eSTomer Tayar __le16 param3_rsrv; 682a2e7699eSTomer Tayar __le16 param2_rsrv; 683a2e7699eSTomer Tayar __le32 reserved7; 684a2e7699eSTomer Tayar }; 685a2e7699eSTomer Tayar 686a2e7699eSTomer Tayar /* PDU header part of Ystorm task context */ 6877a9b6b8fSYuval Mintz union iscsi_task_hdr { 6887a9b6b8fSYuval Mintz struct iscsi_common_hdr common; 6897a9b6b8fSYuval Mintz struct data_hdr data; 6907a9b6b8fSYuval Mintz struct iscsi_cmd_hdr cmd; 6917a9b6b8fSYuval Mintz struct iscsi_ext_cdb_cmd_hdr ext_cdb_cmd; 6927a9b6b8fSYuval Mintz struct iscsi_login_req_hdr login_req; 6937a9b6b8fSYuval Mintz struct iscsi_logout_req_hdr logout_req; 6947a9b6b8fSYuval Mintz struct iscsi_data_out_hdr data_out; 6957a9b6b8fSYuval Mintz struct iscsi_data_in_hdr data_in; 6967a9b6b8fSYuval Mintz struct iscsi_r2t_hdr r2t; 6977a9b6b8fSYuval Mintz struct iscsi_nop_out_hdr nop_out; 6987a9b6b8fSYuval Mintz struct iscsi_nop_in_hdr nop_in; 6997a9b6b8fSYuval Mintz struct iscsi_login_response_hdr login_response; 7007a9b6b8fSYuval Mintz struct iscsi_logout_response_hdr logout_response; 7017a9b6b8fSYuval Mintz struct iscsi_text_request_hdr text_request; 7027a9b6b8fSYuval Mintz struct iscsi_text_response_hdr text_response; 7037a9b6b8fSYuval Mintz struct iscsi_tmf_request_hdr tmf_request; 7047a9b6b8fSYuval Mintz struct iscsi_tmf_response_hdr tmf_response; 7057a9b6b8fSYuval Mintz struct iscsi_response_hdr response; 7067a9b6b8fSYuval Mintz struct iscsi_reject_hdr reject; 7077a9b6b8fSYuval Mintz struct iscsi_async_msg_hdr async_msg; 7087a9b6b8fSYuval Mintz }; 7097a9b6b8fSYuval Mintz 710a2e7699eSTomer Tayar /* The iscsi storm task context of Ystorm */ 7117a9b6b8fSYuval Mintz struct ystorm_iscsi_task_st_ctx { 7127a9b6b8fSYuval Mintz struct ystorm_iscsi_task_state state; 713be086e7cSMintz, Yuval struct ystorm_iscsi_task_rxmit_opt rxmit_opt; 7147a9b6b8fSYuval Mintz union iscsi_task_hdr pdu_hdr; 7157a9b6b8fSYuval Mintz }; 7167a9b6b8fSYuval Mintz 717*fb09a1edSShai Malin struct ystorm_iscsi_task_ag_ctx { 7187a9b6b8fSYuval Mintz u8 reserved; 7197a9b6b8fSYuval Mintz u8 byte1; 7207a9b6b8fSYuval Mintz __le16 word0; 7217a9b6b8fSYuval Mintz u8 flags0; 722*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF 723*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 724*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 725*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 726*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 727*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 728*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1 729*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6 730*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_TTT_VALID_MASK 0x1 /* bit3 */ 731*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_TTT_VALID_SHIFT 7 7327a9b6b8fSYuval Mintz u8 flags1; 733*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 734*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 0 735*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 736*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2 737*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 738*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 739*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 740*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 6 741*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 742*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7 7437a9b6b8fSYuval Mintz u8 flags2; 744*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 745*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 746*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 747*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1 748*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 749*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2 750*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 751*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3 752*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 753*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4 754*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 755*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5 756*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 757*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6 758*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 759*fb09a1edSShai Malin #define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7 7607a9b6b8fSYuval Mintz u8 byte2; 7617a9b6b8fSYuval Mintz __le32 TTT; 7627a9b6b8fSYuval Mintz u8 byte3; 7637a9b6b8fSYuval Mintz u8 byte4; 7647a9b6b8fSYuval Mintz __le16 word1; 7657a9b6b8fSYuval Mintz }; 7667a9b6b8fSYuval Mintz 767*fb09a1edSShai Malin struct mstorm_iscsi_task_ag_ctx { 7687a9b6b8fSYuval Mintz u8 cdu_validation; 7697a9b6b8fSYuval Mintz u8 byte1; 7707a9b6b8fSYuval Mintz __le16 task_cid; 7717a9b6b8fSYuval Mintz u8 flags0; 772*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 773*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 774*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 775*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 776*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_MASK 0x1 777*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_SHIFT 5 778*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1 779*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6 780*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_MASK 0x1 781*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_SHIFT 7 7827a9b6b8fSYuval Mintz u8 flags1; 783*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_MASK 0x3 784*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_SHIFT 0 785*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 786*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2 787*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 788*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 4 789*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_MASK 0x1 790*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_SHIFT 6 791*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 792*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7 7937a9b6b8fSYuval Mintz u8 flags2; 794*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 795*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 0 796*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 797*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1 798*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 799*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2 800*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 801*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3 802*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 803*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4 804*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 805*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5 806*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 807*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6 808*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 809*fb09a1edSShai Malin #define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7 8107a9b6b8fSYuval Mintz u8 byte2; 8117a9b6b8fSYuval Mintz __le32 reg0; 8127a9b6b8fSYuval Mintz u8 byte3; 8137a9b6b8fSYuval Mintz u8 byte4; 8147a9b6b8fSYuval Mintz __le16 word1; 8157a9b6b8fSYuval Mintz }; 8167a9b6b8fSYuval Mintz 817*fb09a1edSShai Malin struct ustorm_iscsi_task_ag_ctx { 8187a9b6b8fSYuval Mintz u8 reserved; 8197a9b6b8fSYuval Mintz u8 state; 8207a9b6b8fSYuval Mintz __le16 icid; 8217a9b6b8fSYuval Mintz u8 flags0; 822*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 823*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 824*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 825*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 826*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_MASK 0x1 827*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_SHIFT 5 828*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_MASK 0x3 829*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_SHIFT 6 8307a9b6b8fSYuval Mintz u8 flags1; 831*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_MASK 0x3 832*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_SHIFT 0 833*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_MASK 0x3 834*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_SHIFT 2 835*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 836*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 4 837*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 838*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 8397a9b6b8fSYuval Mintz u8 flags2; 840*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_MASK 0x1 841*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_SHIFT 0 842*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_MASK 0x1 843*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_SHIFT 1 844*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_MASK 0x1 845*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_SHIFT 2 846*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 847*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 3 848*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 849*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 850*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_MASK 0x1 851*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_SHIFT 5 852*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 853*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 6 854*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_MASK 0x1 855*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_SHIFT 7 8567a9b6b8fSYuval Mintz u8 flags3; 857*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 858*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 0 859*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 860*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 1 861*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 862*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 2 863*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 864*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 3 865*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF 866*fb09a1edSShai Malin #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 8677a9b6b8fSYuval Mintz __le32 dif_err_intervals; 8687a9b6b8fSYuval Mintz __le32 dif_error_1st_interval; 8697a9b6b8fSYuval Mintz __le32 rcv_cont_len; 8707a9b6b8fSYuval Mintz __le32 exp_cont_len; 8717a9b6b8fSYuval Mintz __le32 total_data_acked; 8727a9b6b8fSYuval Mintz __le32 exp_data_acked; 873a3f72307SDenis Bolotin u8 byte2; 8747a9b6b8fSYuval Mintz u8 byte3; 8757a9b6b8fSYuval Mintz __le16 word1; 8767a9b6b8fSYuval Mintz __le16 next_tid; 8777a9b6b8fSYuval Mintz __le16 word3; 8787a9b6b8fSYuval Mintz __le32 hdr_residual_count; 8797a9b6b8fSYuval Mintz __le32 exp_r2t_sn; 8807a9b6b8fSYuval Mintz }; 8817a9b6b8fSYuval Mintz 882a2e7699eSTomer Tayar /* The iscsi storm task context of Mstorm */ 8837a9b6b8fSYuval Mintz struct mstorm_iscsi_task_st_ctx { 884be086e7cSMintz, Yuval struct scsi_cached_sges data_desc; 885be086e7cSMintz, Yuval struct scsi_sgl_params sgl_params; 8867a9b6b8fSYuval Mintz __le32 rem_task_size; 887be086e7cSMintz, Yuval __le32 data_buffer_offset; 888be086e7cSMintz, Yuval u8 task_type; 889be086e7cSMintz, Yuval struct iscsi_dif_flags dif_flags; 890da090917STomer Tayar __le16 dif_task_icid; 891be086e7cSMintz, Yuval struct regpair sense_db; 892be086e7cSMintz, Yuval __le32 expected_itt; 893be086e7cSMintz, Yuval __le32 reserved1; 8947a9b6b8fSYuval Mintz }; 8957a9b6b8fSYuval Mintz 896a2e7699eSTomer Tayar struct iscsi_reg1 { 897a2e7699eSTomer Tayar __le32 reg1_map; 898a2e7699eSTomer Tayar #define ISCSI_REG1_NUM_SGES_MASK 0xF 899a2e7699eSTomer Tayar #define ISCSI_REG1_NUM_SGES_SHIFT 0 900a2e7699eSTomer Tayar #define ISCSI_REG1_RESERVED1_MASK 0xFFFFFFF 901a2e7699eSTomer Tayar #define ISCSI_REG1_RESERVED1_SHIFT 4 902a2e7699eSTomer Tayar }; 903a2e7699eSTomer Tayar 904da090917STomer Tayar struct tqe_opaque { 905da090917STomer Tayar __le16 opaque[2]; 906da090917STomer Tayar }; 907da090917STomer Tayar 908a2e7699eSTomer Tayar /* The iscsi storm task context of Ustorm */ 9097a9b6b8fSYuval Mintz struct ustorm_iscsi_task_st_ctx { 9107a9b6b8fSYuval Mintz __le32 rem_rcv_len; 9117a9b6b8fSYuval Mintz __le32 exp_data_transfer_len; 9127a9b6b8fSYuval Mintz __le32 exp_data_sn; 9137a9b6b8fSYuval Mintz struct regpair lun; 9147a9b6b8fSYuval Mintz struct iscsi_reg1 reg1; 9157a9b6b8fSYuval Mintz u8 flags2; 9167a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_MASK 0x1 9177a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_SHIFT 0 9187a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_MASK 0x7F 9197a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_SHIFT 1 920be086e7cSMintz, Yuval struct iscsi_dif_flags dif_flags; 9217a9b6b8fSYuval Mintz __le16 reserved3; 922da090917STomer Tayar struct tqe_opaque tqe_opaque_list; 9237a9b6b8fSYuval Mintz __le32 reserved5; 9247a9b6b8fSYuval Mintz __le32 reserved6; 9257a9b6b8fSYuval Mintz __le32 reserved7; 9267a9b6b8fSYuval Mintz u8 task_type; 9277a9b6b8fSYuval Mintz u8 error_flags; 9287a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_MASK 0x1 9297a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_SHIFT 0 9307a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_MASK 0x1 9317a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_SHIFT 1 9327a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_MASK 0x1 9337a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_SHIFT 2 9347a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_MASK 0x1F 9357a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_SHIFT 3 9367a9b6b8fSYuval Mintz u8 flags; 9377a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_MASK 0x3 9387a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_SHIFT 0 9397a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_MASK 0x1 9407a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_SHIFT 2 9417a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_MASK 0x1 9427a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_SHIFT 3 943be086e7cSMintz, Yuval #define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_MASK 0x1 944be086e7cSMintz, Yuval #define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_SHIFT 4 945be086e7cSMintz, Yuval #define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_MASK 0x1 946be086e7cSMintz, Yuval #define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_SHIFT 5 9477a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_MASK 0x1 9487a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_SHIFT 6 9497a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_MASK 0x1 9507a9b6b8fSYuval Mintz #define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_SHIFT 7 9517a9b6b8fSYuval Mintz u8 cq_rss_number; 9527a9b6b8fSYuval Mintz }; 9537a9b6b8fSYuval Mintz 954a2e7699eSTomer Tayar /* iscsi task context */ 955*fb09a1edSShai Malin struct iscsi_task_context { 9567a9b6b8fSYuval Mintz struct ystorm_iscsi_task_st_ctx ystorm_st_context; 957*fb09a1edSShai Malin struct ystorm_iscsi_task_ag_ctx ystorm_ag_context; 9587a9b6b8fSYuval Mintz struct regpair ystorm_ag_padding[2]; 9597a9b6b8fSYuval Mintz struct tdif_task_context tdif_context; 960*fb09a1edSShai Malin struct mstorm_iscsi_task_ag_ctx mstorm_ag_context; 9617a9b6b8fSYuval Mintz struct regpair mstorm_ag_padding[2]; 962*fb09a1edSShai Malin struct ustorm_iscsi_task_ag_ctx ustorm_ag_context; 9637a9b6b8fSYuval Mintz struct mstorm_iscsi_task_st_ctx mstorm_st_context; 9647a9b6b8fSYuval Mintz struct ustorm_iscsi_task_st_ctx ustorm_st_context; 9657a9b6b8fSYuval Mintz struct rdif_task_context rdif_context; 9667a9b6b8fSYuval Mintz }; 9677a9b6b8fSYuval Mintz 968a2e7699eSTomer Tayar /* iSCSI connection offload params passed by driver to FW in ISCSI offload 969a2e7699eSTomer Tayar * ramrod. 970a2e7699eSTomer Tayar */ 971a2e7699eSTomer Tayar struct iscsi_conn_offload_params { 972a2e7699eSTomer Tayar struct regpair sq_pbl_addr; 973a2e7699eSTomer Tayar struct regpair r2tq_pbl_addr; 974a2e7699eSTomer Tayar struct regpair xhq_pbl_addr; 975a2e7699eSTomer Tayar struct regpair uhq_pbl_addr; 976a2e7699eSTomer Tayar __le16 physical_q0; 977a2e7699eSTomer Tayar __le16 physical_q1; 978a2e7699eSTomer Tayar u8 flags; 979a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_MASK 0x1 980a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_SHIFT 0 981a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_MASK 0x1 982a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_SHIFT 1 983a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_MASK 0x1 984a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_SHIFT 2 985a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_MASK 0x1F 986a2e7699eSTomer Tayar #define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_SHIFT 3 987a2e7699eSTomer Tayar u8 default_cq; 9886459d936SMichal Kalderon __le16 reserved0; 989a2e7699eSTomer Tayar __le32 stat_sn; 9906459d936SMichal Kalderon __le32 initial_ack; 991a2e7699eSTomer Tayar }; 992a2e7699eSTomer Tayar 993da090917STomer Tayar /* iSCSI connection statistics */ 994da090917STomer Tayar struct iscsi_conn_stats_params { 995da090917STomer Tayar struct regpair iscsi_tcp_tx_packets_cnt; 996da090917STomer Tayar struct regpair iscsi_tcp_tx_bytes_cnt; 997da090917STomer Tayar struct regpair iscsi_tcp_tx_rxmit_cnt; 998da090917STomer Tayar struct regpair iscsi_tcp_rx_packets_cnt; 999da090917STomer Tayar struct regpair iscsi_tcp_rx_bytes_cnt; 1000da090917STomer Tayar struct regpair iscsi_tcp_rx_dup_ack_cnt; 1001da090917STomer Tayar __le32 iscsi_tcp_rx_chksum_err_cnt; 1002da090917STomer Tayar __le32 reserved; 1003da090917STomer Tayar }; 1004da090917STomer Tayar 1005a2e7699eSTomer Tayar 1006a2e7699eSTomer Tayar /* iSCSI connection update params passed by driver to FW in ISCSI update 1007a2e7699eSTomer Tayar *ramrod. 1008a2e7699eSTomer Tayar */ 1009a2e7699eSTomer Tayar struct iscsi_conn_update_ramrod_params { 10106459d936SMichal Kalderon __le16 reserved0; 1011a2e7699eSTomer Tayar __le16 conn_id; 10126459d936SMichal Kalderon __le32 reserved1; 1013a2e7699eSTomer Tayar u8 flags; 1014a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_MASK 0x1 1015a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_SHIFT 0 1016a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_MASK 0x1 1017a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_SHIFT 1 1018a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_MASK 0x1 1019a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_SHIFT 2 1020a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_MASK 0x1 1021a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_SHIFT 3 1022a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_MASK 0x1 1023a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_SHIFT 4 1024a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_MASK 0x1 1025a2e7699eSTomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_SHIFT 5 1026da090917STomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_IMM_EN_MASK 0x1 1027da090917STomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_IMM_EN_SHIFT 6 1028da090917STomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_LUN_MAPPER_EN_MASK 0x1 1029da090917STomer Tayar #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_LUN_MAPPER_EN_SHIFT 7 10306459d936SMichal Kalderon u8 reserved3[3]; 1031a2e7699eSTomer Tayar __le32 max_seq_size; 1032a2e7699eSTomer Tayar __le32 max_send_pdu_length; 1033a2e7699eSTomer Tayar __le32 max_recv_pdu_length; 1034a2e7699eSTomer Tayar __le32 first_seq_length; 1035a2e7699eSTomer Tayar __le32 exp_stat_sn; 1036da090917STomer Tayar union dif_configuration_params dif_on_imme_params; 1037a2e7699eSTomer Tayar }; 1038a2e7699eSTomer Tayar 1039a2e7699eSTomer Tayar /* iSCSI CQ element */ 1040a2e7699eSTomer Tayar struct iscsi_cqe_common { 1041a2e7699eSTomer Tayar __le16 conn_id; 1042a2e7699eSTomer Tayar u8 cqe_type; 1043a2e7699eSTomer Tayar union cqe_error_status error_bitmap; 1044a2e7699eSTomer Tayar __le32 reserved[3]; 1045a2e7699eSTomer Tayar union iscsi_task_hdr iscsi_hdr; 1046a2e7699eSTomer Tayar }; 1047a2e7699eSTomer Tayar 1048a2e7699eSTomer Tayar /* iSCSI CQ element */ 1049a2e7699eSTomer Tayar struct iscsi_cqe_solicited { 1050a2e7699eSTomer Tayar __le16 conn_id; 1051a2e7699eSTomer Tayar u8 cqe_type; 1052a2e7699eSTomer Tayar union cqe_error_status error_bitmap; 1053a2e7699eSTomer Tayar __le16 itid; 1054a2e7699eSTomer Tayar u8 task_type; 1055a2e7699eSTomer Tayar u8 fw_dbg_field; 1056a2e7699eSTomer Tayar u8 caused_conn_err; 1057a2e7699eSTomer Tayar u8 reserved0[3]; 1058da090917STomer Tayar __le32 data_truncated_bytes; 1059a2e7699eSTomer Tayar union iscsi_task_hdr iscsi_hdr; 1060a2e7699eSTomer Tayar }; 1061a2e7699eSTomer Tayar 1062a2e7699eSTomer Tayar /* iSCSI CQ element */ 1063a2e7699eSTomer Tayar struct iscsi_cqe_unsolicited { 1064a2e7699eSTomer Tayar __le16 conn_id; 1065a2e7699eSTomer Tayar u8 cqe_type; 1066a2e7699eSTomer Tayar union cqe_error_status error_bitmap; 1067a2e7699eSTomer Tayar __le16 reserved0; 1068a2e7699eSTomer Tayar u8 reserved1; 1069a2e7699eSTomer Tayar u8 unsol_cqe_type; 1070da090917STomer Tayar __le16 rqe_opaque; 1071da090917STomer Tayar __le16 reserved2[3]; 1072a2e7699eSTomer Tayar union iscsi_task_hdr iscsi_hdr; 1073a2e7699eSTomer Tayar }; 1074a2e7699eSTomer Tayar 1075a2e7699eSTomer Tayar /* iSCSI CQ element */ 1076a2e7699eSTomer Tayar union iscsi_cqe { 1077a2e7699eSTomer Tayar struct iscsi_cqe_common cqe_common; 1078a2e7699eSTomer Tayar struct iscsi_cqe_solicited cqe_solicited; 1079a2e7699eSTomer Tayar struct iscsi_cqe_unsolicited cqe_unsolicited; 1080a2e7699eSTomer Tayar }; 1081a2e7699eSTomer Tayar 1082a2e7699eSTomer Tayar /* iSCSI CQE type */ 1083a2e7699eSTomer Tayar enum iscsi_cqes_type { 1084a2e7699eSTomer Tayar ISCSI_CQE_TYPE_SOLICITED = 1, 1085a2e7699eSTomer Tayar ISCSI_CQE_TYPE_UNSOLICITED, 1086a2e7699eSTomer Tayar ISCSI_CQE_TYPE_SOLICITED_WITH_SENSE, 1087a2e7699eSTomer Tayar ISCSI_CQE_TYPE_TASK_CLEANUP, 1088a2e7699eSTomer Tayar ISCSI_CQE_TYPE_DUMMY, 1089a2e7699eSTomer Tayar MAX_ISCSI_CQES_TYPE 1090a2e7699eSTomer Tayar }; 1091a2e7699eSTomer Tayar 1092a2e7699eSTomer Tayar /* iSCSI CQE type */ 1093a2e7699eSTomer Tayar enum iscsi_cqe_unsolicited_type { 1094a2e7699eSTomer Tayar ISCSI_CQE_UNSOLICITED_NONE, 1095a2e7699eSTomer Tayar ISCSI_CQE_UNSOLICITED_SINGLE, 1096a2e7699eSTomer Tayar ISCSI_CQE_UNSOLICITED_FIRST, 1097a2e7699eSTomer Tayar ISCSI_CQE_UNSOLICITED_MIDDLE, 1098a2e7699eSTomer Tayar ISCSI_CQE_UNSOLICITED_LAST, 1099a2e7699eSTomer Tayar MAX_ISCSI_CQE_UNSOLICITED_TYPE 1100a2e7699eSTomer Tayar }; 1101a2e7699eSTomer Tayar 1102a2e7699eSTomer Tayar /* iscsi debug modes */ 1103a2e7699eSTomer Tayar struct iscsi_debug_modes { 1104a2e7699eSTomer Tayar u8 flags; 1105a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_MASK 0x1 1106a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_SHIFT 0 1107a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_MASK 0x1 1108a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_SHIFT 1 1109a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_MASK 0x1 1110a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_SHIFT 2 1111a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_MASK 0x1 1112a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_SHIFT 3 1113a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_MASK 0x1 1114a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_SHIFT 4 1115a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_MASK 0x1 1116a2e7699eSTomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_SHIFT 5 1117da090917STomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_OR_DATA_DIGEST_ERROR_MASK 0x1 1118da090917STomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_OR_DATA_DIGEST_ERROR_SHIFT 6 1119da090917STomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_HQ_CORRUPT_MASK 0x1 1120da090917STomer Tayar #define ISCSI_DEBUG_MODES_ASSERT_IF_HQ_CORRUPT_SHIFT 7 1121a2e7699eSTomer Tayar }; 1122a2e7699eSTomer Tayar 1123a2e7699eSTomer Tayar /* iSCSI kernel completion queue IDs */ 1124a2e7699eSTomer Tayar enum iscsi_eqe_opcode { 1125a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_INIT_FUNC = 0, 1126a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_DESTROY_FUNC, 1127a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_OFFLOAD_CONN, 1128a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_UPDATE_CONN, 1129a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_CLEAR_SQ, 1130a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_TERMINATE_CONN, 1131a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_MAC_UPDATE_CONN, 1132da090917STomer Tayar ISCSI_EVENT_TYPE_COLLECT_STATS_CONN, 1133a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_CONNECT_COMPLETE, 1134a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_TERMINATE_DONE, 1135a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_START_OF_ERROR_TYPES = 10, 1136a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_ABORT_RCVD, 1137a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_CLOSE_RCVD, 1138a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_SYN_RCVD, 1139a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_MAX_RT_TIME, 1140a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_MAX_RT_CNT, 1141a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_MAX_KA_PROBES_CNT, 1142a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ASYN_FIN_WAIT2, 1143a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_ISCSI_CONN_ERROR, 1144a2e7699eSTomer Tayar ISCSI_EVENT_TYPE_TCP_CONN_ERROR, 1145a2e7699eSTomer Tayar MAX_ISCSI_EQE_OPCODE 1146a2e7699eSTomer Tayar }; 1147a2e7699eSTomer Tayar 1148a2e7699eSTomer Tayar /* iSCSI EQE and CQE completion status */ 1149a2e7699eSTomer Tayar enum iscsi_error_types { 1150a2e7699eSTomer Tayar ISCSI_STATUS_NONE = 0, 1151a2e7699eSTomer Tayar ISCSI_CQE_ERROR_UNSOLICITED_RCV_ON_INVALID_CONN = 1, 1152a2e7699eSTomer Tayar ISCSI_CONN_ERROR_TASK_CID_MISMATCH, 1153a2e7699eSTomer Tayar ISCSI_CONN_ERROR_TASK_NOT_VALID, 1154a2e7699eSTomer Tayar ISCSI_CONN_ERROR_RQ_RING_IS_FULL, 1155a2e7699eSTomer Tayar ISCSI_CONN_ERROR_CMDQ_RING_IS_FULL, 1156a2e7699eSTomer Tayar ISCSI_CONN_ERROR_HQE_CACHING_FAILED, 1157a2e7699eSTomer Tayar ISCSI_CONN_ERROR_HEADER_DIGEST_ERROR, 1158a2e7699eSTomer Tayar ISCSI_CONN_ERROR_LOCAL_COMPLETION_ERROR, 1159a2e7699eSTomer Tayar ISCSI_CONN_ERROR_DATA_OVERRUN, 1160a2e7699eSTomer Tayar ISCSI_CONN_ERROR_OUT_OF_SGES_ERROR, 1161a2e7699eSTomer Tayar ISCSI_CONN_ERROR_IP_OPTIONS_ERROR, 1162a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PRS_ERRORS, 1163a2e7699eSTomer Tayar ISCSI_CONN_ERROR_CONNECT_INVALID_TCP_OPTION, 1164a2e7699eSTomer Tayar ISCSI_CONN_ERROR_TCP_IP_FRAGMENT_ERROR, 1165a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_AHS_LEN, 1166a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_AHS_TYPE, 1167a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_ITT_OUT_OF_RANGE, 1168a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_TTT_OUT_OF_RANGE, 1169a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_SEG_LEN_EXCEEDS_PDU_SIZE, 1170a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_INVALID_OPCODE, 1171a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_INVALID_OPCODE_BEFORE_UPDATE, 1172a2e7699eSTomer Tayar ISCSI_CONN_ERROR_UNVALID_NOPIN_DSL, 1173a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_CARRIES_NO_DATA, 1174a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_SN, 1175a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_IN_TTT, 1176a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_OUT_ITT, 1177a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_TTT, 1178a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_BUFFER_OFFSET, 1179a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_BUFFER_OFFSET_OOO, 1180a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_SN, 1181a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DESIRED_DATA_TRNS_LEN_0, 1182a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DESIRED_DATA_TRNS_LEN_1, 1183a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DESIRED_DATA_TRNS_LEN_2, 1184a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_LUN, 1185a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_F_BIT_ZERO, 1186a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_F_BIT_ZERO_S_BIT_ONE, 1187a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_EXP_STAT_SN, 1188a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DSL_NOT_ZERO, 1189a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_INVALID_DSL, 1190a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_SEG_LEN_TOO_BIG, 1191a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_OUTSTANDING_R2T_COUNT, 1192a2e7699eSTomer Tayar ISCSI_CONN_ERROR_PROTOCOL_ERR_DIF_TX, 1193a2e7699eSTomer Tayar ISCSI_CONN_ERROR_SENSE_DATA_LENGTH, 1194a2e7699eSTomer Tayar ISCSI_CONN_ERROR_DATA_PLACEMENT_ERROR, 1195a2e7699eSTomer Tayar ISCSI_CONN_ERROR_INVALID_ITT, 1196a2e7699eSTomer Tayar ISCSI_ERROR_UNKNOWN, 1197a2e7699eSTomer Tayar MAX_ISCSI_ERROR_TYPES 1198a2e7699eSTomer Tayar }; 1199a2e7699eSTomer Tayar 1200a2e7699eSTomer Tayar /* iSCSI Ramrod Command IDs */ 1201a2e7699eSTomer Tayar enum iscsi_ramrod_cmd_id { 1202a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_UNUSED = 0, 1203a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_INIT_FUNC = 1, 1204a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_DESTROY_FUNC = 2, 1205a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_OFFLOAD_CONN = 3, 1206a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_UPDATE_CONN = 4, 1207a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_TERMINATION_CONN = 5, 1208a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_CLEAR_SQ = 6, 1209a2e7699eSTomer Tayar ISCSI_RAMROD_CMD_ID_MAC_UPDATE = 7, 1210da090917STomer Tayar ISCSI_RAMROD_CMD_ID_CONN_STATS = 8, 1211a2e7699eSTomer Tayar MAX_ISCSI_RAMROD_CMD_ID 1212a2e7699eSTomer Tayar }; 1213a2e7699eSTomer Tayar 1214a2e7699eSTomer Tayar /* iSCSI connection termination request */ 1215a2e7699eSTomer Tayar struct iscsi_spe_conn_mac_update { 12166459d936SMichal Kalderon __le16 reserved0; 1217a2e7699eSTomer Tayar __le16 conn_id; 12186459d936SMichal Kalderon __le32 reserved1; 1219a2e7699eSTomer Tayar __le16 remote_mac_addr_lo; 1220a2e7699eSTomer Tayar __le16 remote_mac_addr_mid; 1221a2e7699eSTomer Tayar __le16 remote_mac_addr_hi; 12226459d936SMichal Kalderon u8 reserved2[2]; 1223a2e7699eSTomer Tayar }; 1224a2e7699eSTomer Tayar 1225a2e7699eSTomer Tayar /* iSCSI and TCP connection (Option 1) offload params passed by driver to FW in 1226a2e7699eSTomer Tayar * iSCSI offload ramrod. 1227a2e7699eSTomer Tayar */ 1228a2e7699eSTomer Tayar struct iscsi_spe_conn_offload { 12296459d936SMichal Kalderon __le16 reserved0; 1230a2e7699eSTomer Tayar __le16 conn_id; 12316459d936SMichal Kalderon __le32 reserved1; 1232a2e7699eSTomer Tayar struct iscsi_conn_offload_params iscsi; 1233a2e7699eSTomer Tayar struct tcp_offload_params tcp; 1234a2e7699eSTomer Tayar }; 1235a2e7699eSTomer Tayar 1236a2e7699eSTomer Tayar /* iSCSI and TCP connection(Option 2) offload params passed by driver to FW in 1237a2e7699eSTomer Tayar * iSCSI offload ramrod. 1238a2e7699eSTomer Tayar */ 1239a2e7699eSTomer Tayar struct iscsi_spe_conn_offload_option2 { 12406459d936SMichal Kalderon __le16 reserved0; 1241a2e7699eSTomer Tayar __le16 conn_id; 12426459d936SMichal Kalderon __le32 reserved1; 1243a2e7699eSTomer Tayar struct iscsi_conn_offload_params iscsi; 1244a2e7699eSTomer Tayar struct tcp_offload_params_opt2 tcp; 1245a2e7699eSTomer Tayar }; 1246a2e7699eSTomer Tayar 1247da090917STomer Tayar /* iSCSI collect connection statistics request */ 1248da090917STomer Tayar struct iscsi_spe_conn_statistics { 12496459d936SMichal Kalderon __le16 reserved0; 1250da090917STomer Tayar __le16 conn_id; 12516459d936SMichal Kalderon __le32 reserved1; 1252da090917STomer Tayar u8 reset_stats; 12536459d936SMichal Kalderon u8 reserved2[7]; 1254da090917STomer Tayar struct regpair stats_cnts_addr; 1255da090917STomer Tayar }; 1256da090917STomer Tayar 1257a2e7699eSTomer Tayar /* iSCSI connection termination request */ 1258a2e7699eSTomer Tayar struct iscsi_spe_conn_termination { 12596459d936SMichal Kalderon __le16 reserved0; 1260a2e7699eSTomer Tayar __le16 conn_id; 12616459d936SMichal Kalderon __le32 reserved1; 1262a2e7699eSTomer Tayar u8 abortive; 12636459d936SMichal Kalderon u8 reserved2[7]; 1264a2e7699eSTomer Tayar struct regpair queue_cnts_addr; 1265a2e7699eSTomer Tayar struct regpair query_params_addr; 1266a2e7699eSTomer Tayar }; 1267a2e7699eSTomer Tayar 1268a2e7699eSTomer Tayar /* iSCSI firmware function init parameters */ 1269a2e7699eSTomer Tayar struct iscsi_spe_func_init { 1270a2e7699eSTomer Tayar __le16 half_way_close_timeout; 1271a2e7699eSTomer Tayar u8 num_sq_pages_in_ring; 1272a2e7699eSTomer Tayar u8 num_r2tq_pages_in_ring; 1273a2e7699eSTomer Tayar u8 num_uhq_pages_in_ring; 1274a2e7699eSTomer Tayar u8 ll2_rx_queue_id; 1275da090917STomer Tayar u8 flags; 1276da090917STomer Tayar #define ISCSI_SPE_FUNC_INIT_COUNTERS_EN_MASK 0x1 1277da090917STomer Tayar #define ISCSI_SPE_FUNC_INIT_COUNTERS_EN_SHIFT 0 1278da090917STomer Tayar #define ISCSI_SPE_FUNC_INIT_RESERVED0_MASK 0x7F 1279da090917STomer Tayar #define ISCSI_SPE_FUNC_INIT_RESERVED0_SHIFT 1 1280a2e7699eSTomer Tayar struct iscsi_debug_modes debug_mode; 12816459d936SMichal Kalderon u8 params; 12826459d936SMichal Kalderon #define ISCSI_SPE_FUNC_INIT_MAX_SYN_RT_MASK 0xF 12836459d936SMichal Kalderon #define ISCSI_SPE_FUNC_INIT_MAX_SYN_RT_SHIFT 0 12846459d936SMichal Kalderon #define ISCSI_SPE_FUNC_INIT_RESERVED1_MASK 0xF 12856459d936SMichal Kalderon #define ISCSI_SPE_FUNC_INIT_RESERVED1_SHIFT 4 12866459d936SMichal Kalderon u8 reserved2[7]; 1287a2e7699eSTomer Tayar struct scsi_init_func_params func_params; 1288a2e7699eSTomer Tayar struct scsi_init_func_queues q_params; 1289a2e7699eSTomer Tayar }; 1290a2e7699eSTomer Tayar 1291a2e7699eSTomer Tayar /* iSCSI task type */ 12927a9b6b8fSYuval Mintz enum iscsi_task_type { 12937a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_INITIATOR_WRITE, 12947a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_INITIATOR_READ, 12957a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_MIDPATH, 12967a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_UNSOLIC, 12977a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_EXCHCLEANUP, 12987a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_IRRELEVANT, 12997a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_TARGET_WRITE, 13007a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_TARGET_READ, 13017a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_TARGET_RESPONSE, 13027a9b6b8fSYuval Mintz ISCSI_TASK_TYPE_LOGIN_RESPONSE, 1303da090917STomer Tayar ISCSI_TASK_TYPE_TARGET_IMM_W_DIF, 13047a9b6b8fSYuval Mintz MAX_ISCSI_TASK_TYPE 13057a9b6b8fSYuval Mintz }; 13067a9b6b8fSYuval Mintz 1307a2e7699eSTomer Tayar /* iSCSI DesiredDataTransferLength/ttt union */ 13087a9b6b8fSYuval Mintz union iscsi_ttt_txlen_union { 13097a9b6b8fSYuval Mintz __le32 desired_tx_len; 13107a9b6b8fSYuval Mintz __le32 ttt; 13117a9b6b8fSYuval Mintz }; 13127a9b6b8fSYuval Mintz 1313a2e7699eSTomer Tayar /* iSCSI uHQ element */ 13147a9b6b8fSYuval Mintz struct iscsi_uhqe { 13157a9b6b8fSYuval Mintz __le32 reg1; 13167a9b6b8fSYuval Mintz #define ISCSI_UHQE_PDU_PAYLOAD_LEN_MASK 0xFFFFF 13177a9b6b8fSYuval Mintz #define ISCSI_UHQE_PDU_PAYLOAD_LEN_SHIFT 0 13187a9b6b8fSYuval Mintz #define ISCSI_UHQE_LOCAL_COMP_MASK 0x1 13197a9b6b8fSYuval Mintz #define ISCSI_UHQE_LOCAL_COMP_SHIFT 20 13207a9b6b8fSYuval Mintz #define ISCSI_UHQE_TOGGLE_BIT_MASK 0x1 13217a9b6b8fSYuval Mintz #define ISCSI_UHQE_TOGGLE_BIT_SHIFT 21 13227a9b6b8fSYuval Mintz #define ISCSI_UHQE_PURE_PAYLOAD_MASK 0x1 13237a9b6b8fSYuval Mintz #define ISCSI_UHQE_PURE_PAYLOAD_SHIFT 22 13247a9b6b8fSYuval Mintz #define ISCSI_UHQE_LOGIN_RESPONSE_PDU_MASK 0x1 13257a9b6b8fSYuval Mintz #define ISCSI_UHQE_LOGIN_RESPONSE_PDU_SHIFT 23 13267a9b6b8fSYuval Mintz #define ISCSI_UHQE_TASK_ID_HI_MASK 0xFF 13277a9b6b8fSYuval Mintz #define ISCSI_UHQE_TASK_ID_HI_SHIFT 24 13287a9b6b8fSYuval Mintz __le32 reg2; 13297a9b6b8fSYuval Mintz #define ISCSI_UHQE_BUFFER_OFFSET_MASK 0xFFFFFF 13307a9b6b8fSYuval Mintz #define ISCSI_UHQE_BUFFER_OFFSET_SHIFT 0 13317a9b6b8fSYuval Mintz #define ISCSI_UHQE_TASK_ID_LO_MASK 0xFF 13327a9b6b8fSYuval Mintz #define ISCSI_UHQE_TASK_ID_LO_SHIFT 24 13337a9b6b8fSYuval Mintz }; 13347a9b6b8fSYuval Mintz 1335a2e7699eSTomer Tayar /* iSCSI WQ element */ 13367a9b6b8fSYuval Mintz struct iscsi_wqe { 13377a9b6b8fSYuval Mintz __le16 task_id; 13387a9b6b8fSYuval Mintz u8 flags; 13397a9b6b8fSYuval Mintz #define ISCSI_WQE_WQE_TYPE_MASK 0x7 13407a9b6b8fSYuval Mintz #define ISCSI_WQE_WQE_TYPE_SHIFT 0 1341be086e7cSMintz, Yuval #define ISCSI_WQE_NUM_SGES_MASK 0xF 1342be086e7cSMintz, Yuval #define ISCSI_WQE_NUM_SGES_SHIFT 3 13437a9b6b8fSYuval Mintz #define ISCSI_WQE_RESPONSE_MASK 0x1 13447a9b6b8fSYuval Mintz #define ISCSI_WQE_RESPONSE_SHIFT 7 13457a9b6b8fSYuval Mintz struct iscsi_dif_flags prot_flags; 1346be086e7cSMintz, Yuval __le32 contlen_cdbsize; 1347be086e7cSMintz, Yuval #define ISCSI_WQE_CONT_LEN_MASK 0xFFFFFF 1348be086e7cSMintz, Yuval #define ISCSI_WQE_CONT_LEN_SHIFT 0 1349be086e7cSMintz, Yuval #define ISCSI_WQE_CDB_SIZE_MASK 0xFF 1350be086e7cSMintz, Yuval #define ISCSI_WQE_CDB_SIZE_SHIFT 24 13517a9b6b8fSYuval Mintz }; 13527a9b6b8fSYuval Mintz 1353a2e7699eSTomer Tayar /* iSCSI wqe type */ 13547a9b6b8fSYuval Mintz enum iscsi_wqe_type { 13557a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_NORMAL, 13567a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_TASK_CLEANUP, 13577a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_MIDDLE_PATH, 13587a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_LOGIN, 13597a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_FIRST_R2T_CONT, 13607a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_NONFIRST_R2T_CONT, 13617a9b6b8fSYuval Mintz ISCSI_WQE_TYPE_RESPONSE, 13627a9b6b8fSYuval Mintz MAX_ISCSI_WQE_TYPE 13637a9b6b8fSYuval Mintz }; 13647a9b6b8fSYuval Mintz 1365a2e7699eSTomer Tayar /* iSCSI xHQ element */ 13667a9b6b8fSYuval Mintz struct iscsi_xhqe { 13677a9b6b8fSYuval Mintz union iscsi_ttt_txlen_union ttt_or_txlen; 13687a9b6b8fSYuval Mintz __le32 exp_stat_sn; 13697a9b6b8fSYuval Mintz struct iscsi_dif_flags prot_flags; 13707a9b6b8fSYuval Mintz u8 total_ahs_length; 13717a9b6b8fSYuval Mintz u8 opcode; 13727a9b6b8fSYuval Mintz u8 flags; 13737a9b6b8fSYuval Mintz #define ISCSI_XHQE_FINAL_MASK 0x1 1374be086e7cSMintz, Yuval #define ISCSI_XHQE_FINAL_SHIFT 0 13757a9b6b8fSYuval Mintz #define ISCSI_XHQE_STATUS_BIT_MASK 0x1 1376be086e7cSMintz, Yuval #define ISCSI_XHQE_STATUS_BIT_SHIFT 1 1377be086e7cSMintz, Yuval #define ISCSI_XHQE_NUM_SGES_MASK 0xF 1378be086e7cSMintz, Yuval #define ISCSI_XHQE_NUM_SGES_SHIFT 2 1379be086e7cSMintz, Yuval #define ISCSI_XHQE_RESERVED0_MASK 0x3 1380be086e7cSMintz, Yuval #define ISCSI_XHQE_RESERVED0_SHIFT 6 1381be086e7cSMintz, Yuval union iscsi_seq_num seq_num; 13827a9b6b8fSYuval Mintz __le16 reserved1; 13837a9b6b8fSYuval Mintz }; 13847a9b6b8fSYuval Mintz 1385a2e7699eSTomer Tayar /* Per PF iSCSI receive path statistics - mStorm RAM structure */ 13867a9b6b8fSYuval Mintz struct mstorm_iscsi_stats_drv { 13877a9b6b8fSYuval Mintz struct regpair iscsi_rx_dropped_pdus_task_not_valid; 1388da090917STomer Tayar struct regpair iscsi_rx_dup_ack_cnt; 13897a9b6b8fSYuval Mintz }; 13907a9b6b8fSYuval Mintz 1391a2e7699eSTomer Tayar /* Per PF iSCSI transmit path statistics - pStorm RAM structure */ 13927a9b6b8fSYuval Mintz struct pstorm_iscsi_stats_drv { 13937a9b6b8fSYuval Mintz struct regpair iscsi_tx_bytes_cnt; 13947a9b6b8fSYuval Mintz struct regpair iscsi_tx_packet_cnt; 13957a9b6b8fSYuval Mintz }; 13967a9b6b8fSYuval Mintz 1397a2e7699eSTomer Tayar /* Per PF iSCSI receive path statistics - tStorm RAM structure */ 13987a9b6b8fSYuval Mintz struct tstorm_iscsi_stats_drv { 13997a9b6b8fSYuval Mintz struct regpair iscsi_rx_bytes_cnt; 14007a9b6b8fSYuval Mintz struct regpair iscsi_rx_packet_cnt; 14017a9b6b8fSYuval Mintz struct regpair iscsi_rx_new_ooo_isle_events_cnt; 1402da090917STomer Tayar struct regpair iscsi_rx_tcp_payload_bytes_cnt; 1403da090917STomer Tayar struct regpair iscsi_rx_tcp_pkt_cnt; 1404da090917STomer Tayar struct regpair iscsi_rx_pure_ack_cnt; 14057a9b6b8fSYuval Mintz __le32 iscsi_cmdq_threshold_cnt; 14067a9b6b8fSYuval Mintz __le32 iscsi_rq_threshold_cnt; 14077a9b6b8fSYuval Mintz __le32 iscsi_immq_threshold_cnt; 14087a9b6b8fSYuval Mintz }; 14097a9b6b8fSYuval Mintz 1410a2e7699eSTomer Tayar /* Per PF iSCSI receive path statistics - uStorm RAM structure */ 14117a9b6b8fSYuval Mintz struct ustorm_iscsi_stats_drv { 14127a9b6b8fSYuval Mintz struct regpair iscsi_rx_data_pdu_cnt; 14137a9b6b8fSYuval Mintz struct regpair iscsi_rx_r2t_pdu_cnt; 14147a9b6b8fSYuval Mintz struct regpair iscsi_rx_total_pdu_cnt; 14157a9b6b8fSYuval Mintz }; 14167a9b6b8fSYuval Mintz 1417a2e7699eSTomer Tayar /* Per PF iSCSI transmit path statistics - xStorm RAM structure */ 14187a9b6b8fSYuval Mintz struct xstorm_iscsi_stats_drv { 14197a9b6b8fSYuval Mintz struct regpair iscsi_tx_go_to_slow_start_event_cnt; 14207a9b6b8fSYuval Mintz struct regpair iscsi_tx_fast_retransmit_event_cnt; 1421da090917STomer Tayar struct regpair iscsi_tx_pure_ack_cnt; 1422da090917STomer Tayar struct regpair iscsi_tx_delayed_ack_cnt; 14237a9b6b8fSYuval Mintz }; 14247a9b6b8fSYuval Mintz 1425a2e7699eSTomer Tayar /* Per PF iSCSI transmit path statistics - yStorm RAM structure */ 14267a9b6b8fSYuval Mintz struct ystorm_iscsi_stats_drv { 14277a9b6b8fSYuval Mintz struct regpair iscsi_tx_data_pdu_cnt; 14287a9b6b8fSYuval Mintz struct regpair iscsi_tx_r2t_pdu_cnt; 14297a9b6b8fSYuval Mintz struct regpair iscsi_tx_total_pdu_cnt; 1430da090917STomer Tayar struct regpair iscsi_tx_tcp_payload_bytes_cnt; 1431da090917STomer Tayar struct regpair iscsi_tx_tcp_pkt_cnt; 14327a9b6b8fSYuval Mintz }; 14337a9b6b8fSYuval Mintz 1434*fb09a1edSShai Malin struct tstorm_iscsi_task_ag_ctx { 14357a9b6b8fSYuval Mintz u8 byte0; 14367a9b6b8fSYuval Mintz u8 byte1; 14377a9b6b8fSYuval Mintz __le16 word0; 14387a9b6b8fSYuval Mintz u8 flags0; 1439*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF 1440*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 1441*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 1442*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 1443*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 1444*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 1445*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT2_MASK 0x1 1446*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT2_SHIFT 6 1447*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1 1448*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7 14497a9b6b8fSYuval Mintz u8 flags1; 1450*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 1451*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 1452*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT5_MASK 0x1 1453*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_BIT5_SHIFT 1 1454*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 1455*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 2 1456*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 1457*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 4 1458*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 1459*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 6 14607a9b6b8fSYuval Mintz u8 flags2; 1461*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 1462*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 0 1463*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF4_MASK 0x3 1464*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF4_SHIFT 2 1465*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF5_MASK 0x3 1466*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF5_SHIFT 4 1467*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF6_MASK 0x3 1468*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF6_SHIFT 6 14697a9b6b8fSYuval Mintz u8 flags3; 1470*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF7_MASK 0x3 1471*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF7_SHIFT 0 1472*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 1473*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 2 1474*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 1475*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 3 1476*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 1477*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 4 1478*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 1479*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 5 1480*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_MASK 0x1 1481*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_SHIFT 6 1482*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_MASK 0x1 1483*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_SHIFT 7 14847a9b6b8fSYuval Mintz u8 flags4; 1485*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_MASK 0x1 1486*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_SHIFT 0 1487*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_MASK 0x1 1488*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_SHIFT 1 1489*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 1490*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 2 1491*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 1492*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 3 1493*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 1494*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 4 1495*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 1496*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 5 1497*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 1498*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 6 1499*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 1500*fb09a1edSShai Malin #define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 7 15017a9b6b8fSYuval Mintz u8 byte2; 15027a9b6b8fSYuval Mintz __le16 word1; 15037a9b6b8fSYuval Mintz __le32 reg0; 15047a9b6b8fSYuval Mintz u8 byte3; 15057a9b6b8fSYuval Mintz u8 byte4; 15067a9b6b8fSYuval Mintz __le16 word2; 15077a9b6b8fSYuval Mintz __le16 word3; 15087a9b6b8fSYuval Mintz __le16 word4; 15097a9b6b8fSYuval Mintz __le32 reg1; 15107a9b6b8fSYuval Mintz __le32 reg2; 15117a9b6b8fSYuval Mintz }; 1512a2e7699eSTomer Tayar 1513a2e7699eSTomer Tayar /* iSCSI doorbell data */ 15147b6859fbSMintz, Yuval struct iscsi_db_data { 15157b6859fbSMintz, Yuval u8 params; 15167b6859fbSMintz, Yuval #define ISCSI_DB_DATA_DEST_MASK 0x3 15177b6859fbSMintz, Yuval #define ISCSI_DB_DATA_DEST_SHIFT 0 15187b6859fbSMintz, Yuval #define ISCSI_DB_DATA_AGG_CMD_MASK 0x3 15197b6859fbSMintz, Yuval #define ISCSI_DB_DATA_AGG_CMD_SHIFT 2 15207b6859fbSMintz, Yuval #define ISCSI_DB_DATA_BYPASS_EN_MASK 0x1 15217b6859fbSMintz, Yuval #define ISCSI_DB_DATA_BYPASS_EN_SHIFT 4 15227b6859fbSMintz, Yuval #define ISCSI_DB_DATA_RESERVED_MASK 0x1 15237b6859fbSMintz, Yuval #define ISCSI_DB_DATA_RESERVED_SHIFT 5 15247b6859fbSMintz, Yuval #define ISCSI_DB_DATA_AGG_VAL_SEL_MASK 0x3 15257b6859fbSMintz, Yuval #define ISCSI_DB_DATA_AGG_VAL_SEL_SHIFT 6 15267b6859fbSMintz, Yuval u8 agg_flags; 15277b6859fbSMintz, Yuval __le16 sq_prod; 15287b6859fbSMintz, Yuval }; 15297a9b6b8fSYuval Mintz 15307a9b6b8fSYuval Mintz #endif /* __ISCSI_COMMON__ */ 1531