1*3287e96aSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 261d8658bSDupuis, Chad /* 361d8658bSDupuis, Chad * QLogic FCoE Offload Driver 45d1c8b5bSChad Dupuis * Copyright (c) 2016-2018 Cavium Inc. 561d8658bSDupuis, Chad */ 661d8658bSDupuis, Chad #ifndef __QEDF_HSI__ 761d8658bSDupuis, Chad #define __QEDF_HSI__ 861d8658bSDupuis, Chad /* 961d8658bSDupuis, Chad * Add include to common target 1061d8658bSDupuis, Chad */ 1161d8658bSDupuis, Chad #include <linux/qed/common_hsi.h> 1261d8658bSDupuis, Chad 1361d8658bSDupuis, Chad /* 1461d8658bSDupuis, Chad * Add include to common storage target 1561d8658bSDupuis, Chad */ 1661d8658bSDupuis, Chad #include <linux/qed/storage_common.h> 1761d8658bSDupuis, Chad 1861d8658bSDupuis, Chad /* 1961d8658bSDupuis, Chad * Add include to common fcoe target for both eCore and protocol driver 2061d8658bSDupuis, Chad */ 2161d8658bSDupuis, Chad #include <linux/qed/fcoe_common.h> 2261d8658bSDupuis, Chad 2361d8658bSDupuis, Chad 2461d8658bSDupuis, Chad /* 2561d8658bSDupuis, Chad * FCoE CQ element ABTS information 2661d8658bSDupuis, Chad */ 2761d8658bSDupuis, Chad struct fcoe_abts_info { 2861d8658bSDupuis, Chad u8 r_ctl /* R_CTL in the ABTS response frame */; 2961d8658bSDupuis, Chad u8 reserved0; 3061d8658bSDupuis, Chad __le16 rx_id; 3161d8658bSDupuis, Chad __le32 reserved2[2]; 3261d8658bSDupuis, Chad __le32 fc_payload[3] /* ABTS FC payload response frame */; 3361d8658bSDupuis, Chad }; 3461d8658bSDupuis, Chad 3561d8658bSDupuis, Chad 3661d8658bSDupuis, Chad /* 3761d8658bSDupuis, Chad * FCoE class type 3861d8658bSDupuis, Chad */ 3961d8658bSDupuis, Chad enum fcoe_class_type { 4061d8658bSDupuis, Chad FCOE_TASK_CLASS_TYPE_3, 4161d8658bSDupuis, Chad FCOE_TASK_CLASS_TYPE_2, 4261d8658bSDupuis, Chad MAX_FCOE_CLASS_TYPE 4361d8658bSDupuis, Chad }; 4461d8658bSDupuis, Chad 4561d8658bSDupuis, Chad 4661d8658bSDupuis, Chad /* 4761d8658bSDupuis, Chad * FCoE CMDQ element control information 4861d8658bSDupuis, Chad */ 4961d8658bSDupuis, Chad struct fcoe_cmdqe_control { 5061d8658bSDupuis, Chad __le16 conn_id; 5161d8658bSDupuis, Chad u8 num_additional_cmdqes; 5261d8658bSDupuis, Chad u8 cmdType; 5361d8658bSDupuis, Chad /* true for ABTS request cmdqe. used in Target mode */ 5461d8658bSDupuis, Chad #define FCOE_CMDQE_CONTROL_ABTSREQCMD_MASK 0x1 5561d8658bSDupuis, Chad #define FCOE_CMDQE_CONTROL_ABTSREQCMD_SHIFT 0 5661d8658bSDupuis, Chad #define FCOE_CMDQE_CONTROL_RESERVED1_MASK 0x7F 5761d8658bSDupuis, Chad #define FCOE_CMDQE_CONTROL_RESERVED1_SHIFT 1 5861d8658bSDupuis, Chad u8 reserved2[4]; 5961d8658bSDupuis, Chad }; 6061d8658bSDupuis, Chad 6161d8658bSDupuis, Chad /* 6261d8658bSDupuis, Chad * FCoE control + payload CMDQ element 6361d8658bSDupuis, Chad */ 6461d8658bSDupuis, Chad struct fcoe_cmdqe { 6561d8658bSDupuis, Chad struct fcoe_cmdqe_control hdr; 6661d8658bSDupuis, Chad u8 fc_header[24]; 6761d8658bSDupuis, Chad __le32 fcp_cmd_payload[8]; 6861d8658bSDupuis, Chad }; 6961d8658bSDupuis, Chad 7061d8658bSDupuis, Chad 7161d8658bSDupuis, Chad 7261d8658bSDupuis, Chad /* 7361d8658bSDupuis, Chad * FCP RSP flags 7461d8658bSDupuis, Chad */ 7561d8658bSDupuis, Chad struct fcoe_fcp_rsp_flags { 7661d8658bSDupuis, Chad u8 flags; 7761d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_MASK 0x1 7861d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_SHIFT 0 7961d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_MASK 0x1 8061d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_SHIFT 1 8161d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_MASK 0x1 8261d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_SHIFT 2 8361d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_MASK 0x1 8461d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_SHIFT 3 8561d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_MASK 0x1 8661d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_SHIFT 4 8761d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_MASK 0x7 8861d8658bSDupuis, Chad #define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_SHIFT 5 8961d8658bSDupuis, Chad }; 9061d8658bSDupuis, Chad 9161d8658bSDupuis, Chad /* 9261d8658bSDupuis, Chad * FCoE CQ element response information 9361d8658bSDupuis, Chad */ 9461d8658bSDupuis, Chad struct fcoe_cqe_rsp_info { 9561d8658bSDupuis, Chad struct fcoe_fcp_rsp_flags rsp_flags; 9661d8658bSDupuis, Chad u8 scsi_status_code; 9761d8658bSDupuis, Chad __le16 retry_delay_timer; 9861d8658bSDupuis, Chad __le32 fcp_resid; 9961d8658bSDupuis, Chad __le32 fcp_sns_len; 10061d8658bSDupuis, Chad __le32 fcp_rsp_len; 10161d8658bSDupuis, Chad __le16 rx_id; 10261d8658bSDupuis, Chad u8 fw_error_flags; 10361d8658bSDupuis, Chad #define FCOE_CQE_RSP_INFO_FW_UNDERRUN_MASK 0x1 /* FW detected underrun */ 10461d8658bSDupuis, Chad #define FCOE_CQE_RSP_INFO_FW_UNDERRUN_SHIFT 0 10561d8658bSDupuis, Chad #define FCOE_CQE_RSP_INFO_RESREVED_MASK 0x7F 10661d8658bSDupuis, Chad #define FCOE_CQE_RSP_INFO_RESREVED_SHIFT 1 10761d8658bSDupuis, Chad u8 reserved; 10861d8658bSDupuis, Chad __le32 fw_residual /* Residual bytes calculated by FW */; 10961d8658bSDupuis, Chad }; 11061d8658bSDupuis, Chad 11161d8658bSDupuis, Chad /* 11261d8658bSDupuis, Chad * FCoE CQ element Target completion information 11361d8658bSDupuis, Chad */ 11461d8658bSDupuis, Chad struct fcoe_cqe_target_info { 11561d8658bSDupuis, Chad __le16 rx_id; 11661d8658bSDupuis, Chad __le16 reserved0; 11761d8658bSDupuis, Chad __le32 reserved1[5]; 11861d8658bSDupuis, Chad }; 11961d8658bSDupuis, Chad 12061d8658bSDupuis, Chad /* 12161d8658bSDupuis, Chad * FCoE error/warning reporting entry 12261d8658bSDupuis, Chad */ 12361d8658bSDupuis, Chad struct fcoe_err_report_entry { 12461d8658bSDupuis, Chad __le32 err_warn_bitmap_lo /* Error bitmap lower 32 bits */; 12561d8658bSDupuis, Chad __le32 err_warn_bitmap_hi /* Error bitmap higher 32 bits */; 12661d8658bSDupuis, Chad /* Buffer offset the beginning of the Sequence last transmitted */ 12761d8658bSDupuis, Chad __le32 tx_buf_off; 12861d8658bSDupuis, Chad /* Buffer offset from the beginning of the Sequence last received */ 12961d8658bSDupuis, Chad __le32 rx_buf_off; 13061d8658bSDupuis, Chad __le16 rx_id /* RX_ID of the associated task */; 13161d8658bSDupuis, Chad __le16 reserved1; 13261d8658bSDupuis, Chad __le32 reserved2; 13361d8658bSDupuis, Chad }; 13461d8658bSDupuis, Chad 13561d8658bSDupuis, Chad /* 13661d8658bSDupuis, Chad * FCoE CQ element middle path information 13761d8658bSDupuis, Chad */ 13861d8658bSDupuis, Chad struct fcoe_cqe_midpath_info { 13961d8658bSDupuis, Chad __le32 data_placement_size; 14061d8658bSDupuis, Chad __le16 rx_id; 14161d8658bSDupuis, Chad __le16 reserved0; 14261d8658bSDupuis, Chad __le32 reserved1[4]; 14361d8658bSDupuis, Chad }; 14461d8658bSDupuis, Chad 14561d8658bSDupuis, Chad /* 14661d8658bSDupuis, Chad * FCoE CQ element unsolicited information 14761d8658bSDupuis, Chad */ 14861d8658bSDupuis, Chad struct fcoe_unsolic_info { 14961d8658bSDupuis, Chad /* BD information: Physical address and opaque data */ 15061d8658bSDupuis, Chad struct scsi_bd bd_info; 15161d8658bSDupuis, Chad __le16 conn_id /* Connection ID the frame is associated to */; 15261d8658bSDupuis, Chad __le16 pkt_len /* Packet length */; 15361d8658bSDupuis, Chad u8 reserved1[4]; 15461d8658bSDupuis, Chad }; 15561d8658bSDupuis, Chad 15661d8658bSDupuis, Chad /* 15761d8658bSDupuis, Chad * FCoE warning reporting entry 15861d8658bSDupuis, Chad */ 15961d8658bSDupuis, Chad struct fcoe_warning_report_entry { 16061d8658bSDupuis, Chad /* BD information: Physical address and opaque data */ 16161d8658bSDupuis, Chad struct scsi_bd bd_info; 16261d8658bSDupuis, Chad /* Buffer offset the beginning of the Sequence last transmitted */ 16361d8658bSDupuis, Chad __le32 buf_off; 16461d8658bSDupuis, Chad __le16 rx_id /* RX_ID of the associated task */; 16561d8658bSDupuis, Chad __le16 reserved1; 16661d8658bSDupuis, Chad }; 16761d8658bSDupuis, Chad 16861d8658bSDupuis, Chad /* 16961d8658bSDupuis, Chad * FCoE CQ element information 17061d8658bSDupuis, Chad */ 17161d8658bSDupuis, Chad union fcoe_cqe_info { 17261d8658bSDupuis, Chad struct fcoe_cqe_rsp_info rsp_info /* Response completion information */; 17361d8658bSDupuis, Chad /* Target completion information */ 17461d8658bSDupuis, Chad struct fcoe_cqe_target_info target_info; 17561d8658bSDupuis, Chad /* Error completion information */ 17661d8658bSDupuis, Chad struct fcoe_err_report_entry err_info; 17761d8658bSDupuis, Chad struct fcoe_abts_info abts_info /* ABTS completion information */; 17861d8658bSDupuis, Chad /* Middle path completion information */ 17961d8658bSDupuis, Chad struct fcoe_cqe_midpath_info midpath_info; 18061d8658bSDupuis, Chad /* Unsolicited packet completion information */ 18161d8658bSDupuis, Chad struct fcoe_unsolic_info unsolic_info; 18261d8658bSDupuis, Chad /* Warning completion information (Rec Tov expiration) */ 18361d8658bSDupuis, Chad struct fcoe_warning_report_entry warn_info; 18461d8658bSDupuis, Chad }; 18561d8658bSDupuis, Chad 18661d8658bSDupuis, Chad /* 18761d8658bSDupuis, Chad * FCoE CQ element 18861d8658bSDupuis, Chad */ 18961d8658bSDupuis, Chad struct fcoe_cqe { 19061d8658bSDupuis, Chad __le32 cqe_data; 19161d8658bSDupuis, Chad /* The task identifier (OX_ID) to be completed */ 19261d8658bSDupuis, Chad #define FCOE_CQE_TASK_ID_MASK 0xFFFF 19361d8658bSDupuis, Chad #define FCOE_CQE_TASK_ID_SHIFT 0 19461d8658bSDupuis, Chad /* 19561d8658bSDupuis, Chad * The CQE type: 0x0 Indicating on a pending work request completion. 19661d8658bSDupuis, Chad * 0x1 - Indicating on an unsolicited event notification. use enum 19761d8658bSDupuis, Chad * fcoe_cqe_type (use enum fcoe_cqe_type) 19861d8658bSDupuis, Chad */ 19961d8658bSDupuis, Chad #define FCOE_CQE_CQE_TYPE_MASK 0xF 20061d8658bSDupuis, Chad #define FCOE_CQE_CQE_TYPE_SHIFT 16 20161d8658bSDupuis, Chad #define FCOE_CQE_RESERVED0_MASK 0xFFF 20261d8658bSDupuis, Chad #define FCOE_CQE_RESERVED0_SHIFT 20 20361d8658bSDupuis, Chad __le16 reserved1; 20461d8658bSDupuis, Chad __le16 fw_cq_prod; 20561d8658bSDupuis, Chad union fcoe_cqe_info cqe_info; 20661d8658bSDupuis, Chad }; 20761d8658bSDupuis, Chad 20861d8658bSDupuis, Chad /* 20961d8658bSDupuis, Chad * FCoE CQE type 21061d8658bSDupuis, Chad */ 21161d8658bSDupuis, Chad enum fcoe_cqe_type { 21261d8658bSDupuis, Chad /* solicited response on a R/W or middle-path SQE */ 21361d8658bSDupuis, Chad FCOE_GOOD_COMPLETION_CQE_TYPE, 21461d8658bSDupuis, Chad FCOE_UNSOLIC_CQE_TYPE /* unsolicited packet, RQ consumed */, 21561d8658bSDupuis, Chad FCOE_ERROR_DETECTION_CQE_TYPE /* timer expiration, validation error */, 21661d8658bSDupuis, Chad FCOE_WARNING_CQE_TYPE /* rec_tov or rr_tov timer expiration */, 21761d8658bSDupuis, Chad FCOE_EXCH_CLEANUP_CQE_TYPE /* task cleanup completed */, 21861d8658bSDupuis, Chad FCOE_ABTS_CQE_TYPE /* ABTS received and task cleaned */, 21961d8658bSDupuis, Chad FCOE_DUMMY_CQE_TYPE /* just increment SQ CONS */, 22061d8658bSDupuis, Chad /* Task was completed wight after sending a pkt to the target */ 22161d8658bSDupuis, Chad FCOE_LOCAL_COMP_CQE_TYPE, 22261d8658bSDupuis, Chad MAX_FCOE_CQE_TYPE 22361d8658bSDupuis, Chad }; 22461d8658bSDupuis, Chad 22561d8658bSDupuis, Chad /* 22661d8658bSDupuis, Chad * FCoE fast path error codes 22761d8658bSDupuis, Chad */ 22861d8658bSDupuis, Chad enum fcoe_fp_error_warning_code { 22961d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_OOO_RO /* XFER error codes */, 23061d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_RO_NOT_ALIGNED, 23161d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_NULL_BURST_LEN, 23261d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_RO_GREATER_THAN_DATA2TRNS, 23361d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_INVALID_PAYLOAD_SIZE, 23461d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_TASK_TYPE_NOT_WRITE, 23561d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_PEND_XFER_SET, 23661d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_OPENED_SEQ, 23761d8658bSDupuis, Chad FCOE_ERROR_CODE_XFER_FCTL, 23861d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_BIDI_FLAGS_SET /* FCP RSP error codes */, 23961d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_INVALID_LENGTH_FIELD, 24061d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_INVALID_SNS_FIELD, 24161d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_INVALID_PAYLOAD_SIZE, 24261d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_PEND_XFER_SET, 24361d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_OPENED_SEQ, 24461d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_FCTL, 24561d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_LAST_SEQ_RESET, 24661d8658bSDupuis, Chad FCOE_ERROR_CODE_FCP_RSP_CONF_REQ_NOT_SUPPORTED_YET, 24761d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_OOO_RO /* FCP DATA error codes */, 24861d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_EXCEEDS_DEFINED_MAX_FRAME_SIZE, 24961d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_EXCEEDS_DATA2TRNS, 25061d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_SOFI3_SEQ_ACTIVE_SET, 25161d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_SOFN_SEQ_ACTIVE_RESET, 25261d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_EOFN_END_SEQ_SET, 25361d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_EOFT_END_SEQ_RESET, 25461d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_TASK_TYPE_NOT_READ, 25561d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_FCTL_INITIATIR, 25661d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_INVALID_TYPE /* Middle path error codes */, 25761d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_SOFI3_SEQ_ACTIVE_SET, 25861d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_SOFN_SEQ_ACTIVE_RESET, 25961d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_EOFN_END_SEQ_SET, 26061d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_EOFT_END_SEQ_RESET, 26161d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_REPLY_FCTL, 26261d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_INVALID_REPLY, 26361d8658bSDupuis, Chad FCOE_ERROR_CODE_MIDPATH_ELS_REPLY_RCTL, 26461d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_MIDDLE_FRAME_WITH_PAD /* Common error codes */, 26561d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_SEQ_INIT_IN_TCE, 26661d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_FC_HDR_RX_ID_MISMATCH, 26761d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_INCORRECT_SEQ_CNT, 26861d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_DATA_FC_HDR_FCP_TYPE_MISMATCH, 26961d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_DATA_NO_MORE_SGES, 27061d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_OPTIONAL_FC_HDR, 27161d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_READ_TCE_OX_ID_TOO_BIG, 27261d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_DATA_WAS_NOT_TRANSMITTED, 27361d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_TASK_DDF_RCTL_INFO_FIELD, 27461d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_TASK_INVALID_RCTL, 27561d8658bSDupuis, Chad FCOE_ERROR_CODE_COMMON_TASK_RCTL_GENERAL_MISMATCH, 27661d8658bSDupuis, Chad FCOE_ERROR_CODE_E_D_TOV_TIMER_EXPIRATION /* Timer error codes */, 27761d8658bSDupuis, Chad FCOE_WARNING_CODE_REC_TOV_TIMER_EXPIRATION /* Timer error codes */, 27861d8658bSDupuis, Chad FCOE_ERROR_CODE_RR_TOV_TIMER_EXPIRATION /* Timer error codes */, 27961d8658bSDupuis, Chad /* ABTSrsp pckt arrived unexpected */ 28061d8658bSDupuis, Chad FCOE_ERROR_CODE_ABTS_REPLY_UNEXPECTED, 28161d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_MODE_FCP_RSP, 28261d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_MODE_FCP_XFER, 28361d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_MODE_DATA_TASK_TYPE_NOT_WRITE, 28461d8658bSDupuis, Chad FCOE_ERROR_CODE_DATA_FCTL_TARGET, 28561d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_DATA_SIZE_NO_MATCH_XFER, 28661d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_DIF_CRC_CHECKSUM_ERROR, 28761d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_DIF_REF_TAG_ERROR, 28861d8658bSDupuis, Chad FCOE_ERROR_CODE_TARGET_DIF_APP_TAG_ERROR, 28961d8658bSDupuis, Chad MAX_FCOE_FP_ERROR_WARNING_CODE 29061d8658bSDupuis, Chad }; 29161d8658bSDupuis, Chad 29261d8658bSDupuis, Chad 29361d8658bSDupuis, Chad /* 29461d8658bSDupuis, Chad * FCoE RESPQ element 29561d8658bSDupuis, Chad */ 29661d8658bSDupuis, Chad struct fcoe_respqe { 29761d8658bSDupuis, Chad __le16 ox_id /* OX_ID that is located in the FCP_RSP FC header */; 29861d8658bSDupuis, Chad __le16 rx_id /* RX_ID that is located in the FCP_RSP FC header */; 29961d8658bSDupuis, Chad __le32 additional_info; 30061d8658bSDupuis, Chad /* PARAM that is located in the FCP_RSP FC header */ 30161d8658bSDupuis, Chad #define FCOE_RESPQE_PARAM_MASK 0xFFFFFF 30261d8658bSDupuis, Chad #define FCOE_RESPQE_PARAM_SHIFT 0 30361d8658bSDupuis, Chad /* Indication whther its Target-auto-rsp mode or not */ 30461d8658bSDupuis, Chad #define FCOE_RESPQE_TARGET_AUTO_RSP_MASK 0xFF 30561d8658bSDupuis, Chad #define FCOE_RESPQE_TARGET_AUTO_RSP_SHIFT 24 30661d8658bSDupuis, Chad }; 30761d8658bSDupuis, Chad 30861d8658bSDupuis, Chad 30961d8658bSDupuis, Chad /* 31061d8658bSDupuis, Chad * FCoE slow path error codes 31161d8658bSDupuis, Chad */ 31261d8658bSDupuis, Chad enum fcoe_sp_error_code { 31361d8658bSDupuis, Chad /* Error codes for Error Reporting in slow path flows */ 31461d8658bSDupuis, Chad FCOE_ERROR_CODE_SLOW_PATH_TOO_MANY_FUNCS, 31561d8658bSDupuis, Chad FCOE_ERROR_SLOW_PATH_CODE_NO_LICENSE, 31661d8658bSDupuis, Chad MAX_FCOE_SP_ERROR_CODE 31761d8658bSDupuis, Chad }; 31861d8658bSDupuis, Chad 31961d8658bSDupuis, Chad /* 32061d8658bSDupuis, Chad * FCoE task TX state 32161d8658bSDupuis, Chad */ 32261d8658bSDupuis, Chad enum fcoe_task_tx_state { 32361d8658bSDupuis, Chad /* Initiate state after driver has initialized the task */ 32461d8658bSDupuis, Chad FCOE_TASK_TX_STATE_NORMAL, 32561d8658bSDupuis, Chad /* Updated by TX path after complete transmitting unsolicited packet */ 32661d8658bSDupuis, Chad FCOE_TASK_TX_STATE_UNSOLICITED_COMPLETED, 32761d8658bSDupuis, Chad /* 32861d8658bSDupuis, Chad * Updated by TX path after start processing the task requesting the 32961d8658bSDupuis, Chad * cleanup/abort operation 33061d8658bSDupuis, Chad */ 33161d8658bSDupuis, Chad FCOE_TASK_TX_STATE_CLEAN_REQ, 33261d8658bSDupuis, Chad FCOE_TASK_TX_STATE_ABTS /* Updated by TX path during abort procedure */, 33361d8658bSDupuis, Chad /* Updated by TX path during exchange cleanup procedure */ 33461d8658bSDupuis, Chad FCOE_TASK_TX_STATE_EXCLEANUP, 33561d8658bSDupuis, Chad /* 33661d8658bSDupuis, Chad * Updated by TX path during exchange cleanup continuation task 33761d8658bSDupuis, Chad * procedure 33861d8658bSDupuis, Chad */ 33961d8658bSDupuis, Chad FCOE_TASK_TX_STATE_EXCLEANUP_TARGET_WRITE_CONT, 34061d8658bSDupuis, Chad /* Updated by TX path during exchange cleanup first xfer procedure */ 34161d8658bSDupuis, Chad FCOE_TASK_TX_STATE_EXCLEANUP_TARGET_WRITE, 34261d8658bSDupuis, Chad /* Updated by TX path during exchange cleanup read task in Target */ 34361d8658bSDupuis, Chad FCOE_TASK_TX_STATE_EXCLEANUP_TARGET_READ_OR_RSP, 34461d8658bSDupuis, Chad /* Updated by TX path during target exchange cleanup procedure */ 34561d8658bSDupuis, Chad FCOE_TASK_TX_STATE_EXCLEANUP_TARGET_WRITE_LAST_CYCLE, 34661d8658bSDupuis, Chad /* Updated by TX path during sequence recovery procedure */ 34761d8658bSDupuis, Chad FCOE_TASK_TX_STATE_SEQRECOVERY, 34861d8658bSDupuis, Chad MAX_FCOE_TASK_TX_STATE 34961d8658bSDupuis, Chad }; 35061d8658bSDupuis, Chad 35161d8658bSDupuis, Chad #endif /* __QEDF_HSI__ */ 352