xref: /openbmc/linux/drivers/scsi/qedf/qedf_hsi.h (revision 3287e96a)
13287e96aSThomas 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