52 #define SLI4_MAX_FCFI 64
61 #define SLI4_MAX_FCF_INDEX SLI4_MAX_FCFI
70 #define SLI4_OPC_FCOE_WQ_CREATE 0x1
71 #define SLI4_OPC_FCOE_WQ_DESTROY 0x2
72 #define SLI4_OPC_FCOE_POST_SGL_PAGES 0x3
73 #define SLI4_OPC_FCOE_RQ_CREATE 0x5
74 #define SLI4_OPC_FCOE_RQ_DESTROY 0x6
75 #define SLI4_OPC_FCOE_READ_FCF_TABLE 0x8
76 #define SLI4_OPC_FCOE_POST_HDR_TEMPLATES 0xb
77 #define SLI4_OPC_FCOE_REDISCOVER_FCF 0x10
80 #define SLI4_CQ_DEFAULT 0xffff
82 typedef struct sli4_physical_page_descriptor_s {
92 #define SLI4_FCOE_WQ_CREATE_V0_MAX_PAGES 4
94 typedef struct sli4_req_fcoe_wq_create_s {
96 #if BYTE_ORDER == LITTLE_ENDIAN
107 #error big endian version not defined
116 typedef struct sli4_req_fcoe_wq_create_v1_s {
118 #if BYTE_ORDER == LITTLE_ENDIAN
119 uint32_t num_pages:16,
121 uint32_t page_size:8,
129 #error big endian version not defined
133 #define SLI4_FCOE_WQ_CREATE_V1_MAX_PAGES 8
140 typedef struct sli4_req_fcoe_wq_destroy_s {
142 #if BYTE_ORDER == LITTLE_ENDIAN
146 #error big endian version not defined
155 typedef struct sli4_fcoe_post_sgl_page_desc_s {
162 typedef struct sli4_req_fcoe_post_sgl_pages_s {
164 #if BYTE_ORDER == LITTLE_ENDIAN
165 uint32_t xri_start:16,
169 #error big endian version not defined
178 typedef struct sli4_req_fcoe_rq_create_s {
180 #if BYTE_ORDER == LITTLE_ENDIAN
181 uint32_t num_pages:16,
190 uint32_t buffer_size:16,
195 #error big endian version not defined
199 #define SLI4_FCOE_RQ_CREATE_V0_MAX_PAGES 8
200 #define SLI4_FCOE_RQ_CREATE_V0_MIN_BUF_SIZE 128
201 #define SLI4_FCOE_RQ_CREATE_V0_MAX_BUF_SIZE 2048
208 typedef struct sli4_req_fcoe_rq_create_v1_s {
210 #if BYTE_ORDER == LITTLE_ENDIAN
211 uint32_t num_pages:16,
216 uint32_t page_size:8,
226 #error big endian version not defined
236 typedef struct sli4_req_fcoe_rq_create_v2_s {
238 #if BYTE_ORDER == LITTLE_ENDIAN
239 uint32_t num_pages:16,
245 uint32_t page_size:8,
249 uint32_t hdr_buffer_size:16,
250 payload_buffer_size:16;
251 uint32_t base_cq_id:16,
256 #error big endian version not defined
261 #define SLI4_FCOE_RQ_CREATE_V1_MAX_PAGES 8
262 #define SLI4_FCOE_RQ_CREATE_V1_MIN_BUF_SIZE 64
263 #define SLI4_FCOE_RQ_CREATE_V1_MAX_BUF_SIZE 2048
265 #define SLI4_FCOE_RQE_SIZE_8 0x2
266 #define SLI4_FCOE_RQE_SIZE_16 0x3
267 #define SLI4_FCOE_RQE_SIZE_32 0x4
268 #define SLI4_FCOE_RQE_SIZE_64 0x5
269 #define SLI4_FCOE_RQE_SIZE_128 0x6
271 #define SLI4_FCOE_RQ_PAGE_SIZE_4096 0x1
272 #define SLI4_FCOE_RQ_PAGE_SIZE_8192 0x2
273 #define SLI4_FCOE_RQ_PAGE_SIZE_16384 0x4
274 #define SLI4_FCOE_RQ_PAGE_SIZE_32768 0x8
275 #define SLI4_FCOE_RQ_PAGE_SIZE_64536 0x10
277 #define SLI4_FCOE_RQE_SIZE 8
284 typedef struct sli4_req_fcoe_rq_destroy_s {
286 #if BYTE_ORDER == LITTLE_ENDIAN
290 #error big endian version not defined
300 typedef struct sli4_req_fcoe_read_fcf_table_s {
302 #if BYTE_ORDER == LITTLE_ENDIAN
303 uint32_t fcf_index:16,
306 #error big endian version not defined
311 #define SLI4_FCOE_FCF_TABLE_FIRST (UINT16_MAX)
318 typedef struct sli4_fcf_entry_s {
319 #if BYTE_ORDER == LITTLE_ENDIAN
323 uint8_t fcf_mac_address[6];
326 uint8_t fabric_name_id[8];
332 uint32_t fcf_index:16,
334 uint8_t vlan_bitmap[512];
335 uint8_t switch_name[8];
337 #error big endian version not defined
344 typedef struct sli4_res_fcoe_read_fcf_table_s {
346 #if BYTE_ORDER == LITTLE_ENDIAN
348 uint32_t next_index:16,
352 #error big endian version not defined
357 #define SLI4_FCOE_FCF_TABLE_LAST (UINT16_MAX)
363 typedef struct sli4_req_fcoe_post_hdr_templates_s {
365 #if BYTE_ORDER == LITTLE_ENDIAN
366 uint32_t rpi_offset:16,
370 #error big endian version not defined
374 #define SLI4_FCOE_HDR_TEMPLATE_SIZE 64
379 typedef struct sli4_req_fcoe_rediscover_fcf_s {
381 #if BYTE_ORDER == LITTLE_ENDIAN
382 uint32_t fcf_count:16,
385 uint16_t fcf_index[16];
387 #error big endian version not defined
395 #define SLI4_WQE_ABORT 0x0f
396 #define SLI4_WQE_ELS_REQUEST64 0x8a
397 #define SLI4_WQE_FCP_IBIDIR64 0xac
398 #define SLI4_WQE_FCP_IREAD64 0x9a
399 #define SLI4_WQE_FCP_IWRITE64 0x98
400 #define SLI4_WQE_FCP_ICMND64 0x9c
401 #define SLI4_WQE_FCP_TRECEIVE64 0xa1
402 #define SLI4_WQE_FCP_CONT_TRECEIVE64 0xe5
403 #define SLI4_WQE_FCP_TRSP64 0xa3
404 #define SLI4_WQE_FCP_TSEND64 0x9f
405 #define SLI4_WQE_GEN_REQUEST64 0xc2
406 #define SLI4_WQE_SEND_FRAME 0xe1
407 #define SLI4_WQE_XMIT_BCAST64 0X84
408 #define SLI4_WQE_XMIT_BLS_RSP 0x97
409 #define SLI4_WQE_ELS_RSP64 0x95
410 #define SLI4_WQE_XMIT_SEQUENCE64 0x82
411 #define SLI4_WQE_REQUEUE_XRI 0x93
416 #define SLI4_CMD_FCP_IREAD64_WQE 0x00
417 #define SLI4_CMD_FCP_ICMND64_WQE 0x00
418 #define SLI4_CMD_FCP_IWRITE64_WQE 0x01
419 #define SLI4_CMD_FCP_TRECEIVE64_WQE 0x02
420 #define SLI4_CMD_FCP_TRSP64_WQE 0x03
421 #define SLI4_CMD_FCP_TSEND64_WQE 0x07
422 #define SLI4_CMD_GEN_REQUEST64_WQE 0x08
423 #define SLI4_CMD_XMIT_BCAST64_WQE 0x08
424 #define SLI4_CMD_XMIT_BLS_RSP64_WQE 0x08
425 #define SLI4_CMD_ABORT_WQE 0x08
426 #define SLI4_CMD_XMIT_SEQUENCE64_WQE 0x08
427 #define SLI4_CMD_REQUEUE_XRI_WQE 0x0A
428 #define SLI4_CMD_SEND_FRAME_WQE 0x0a
430 #define SLI4_WQE_SIZE 0x05
431 #define SLI4_WQE_EXT_SIZE 0x06
433 #define SLI4_WQE_BYTES (16 * sizeof(uint32_t))
434 #define SLI4_WQE_EXT_BYTES (32 * sizeof(uint32_t))
437 #define SLI4_MASK_CCP 0xff
442 typedef struct sli4_generic_wqe_s {
443 #if BYTE_ORDER == LITTLE_ENDIAN
444 uint32_t cmd_spec0_5[6];
457 uint32_t request_tag:16,
482 #error big endian version not defined
489 typedef struct sli4_abort_wqe_s {
490 #if BYTE_ORDER == LITTLE_ENDIAN
513 uint32_t request_tag:16,
538 #error big endian version not defined
542 #define SLI4_ABORT_CRITERIA_XRI_TAG 0x01
543 #define SLI4_ABORT_CRITERIA_ABORT_TAG 0x02
544 #define SLI4_ABORT_CRITERIA_REQUEST_TAG 0x03
545 #define SLI4_ABORT_CRITERIA_EXT_ABORT_TAG 0x04
557 typedef struct sli4_els_request64_wqe_s {
559 #if BYTE_ORDER == LITTLE_ENDIAN
564 uint32_t remote_id:24,
578 uint32_t request_tag:16,
605 #error big endian version not defined
609 #define SLI4_ELS_REQUEST64_CONTEXT_RPI 0x0
610 #define SLI4_ELS_REQUEST64_CONTEXT_VPI 0x1
611 #define SLI4_ELS_REQUEST64_CONTEXT_VFI 0x2
612 #define SLI4_ELS_REQUEST64_CONTEXT_FCFI 0x3
614 #define SLI4_ELS_REQUEST64_CLASS_2 0x1
615 #define SLI4_ELS_REQUEST64_CLASS_3 0x2
617 #define SLI4_ELS_REQUEST64_DIR_WRITE 0x0
618 #define SLI4_ELS_REQUEST64_DIR_READ 0x1
620 #define SLI4_ELS_REQUEST64_OTHER 0x0
621 #define SLI4_ELS_REQUEST64_LOGO 0x1
622 #define SLI4_ELS_REQUEST64_FDISC 0x2
623 #define SLI4_ELS_REQUEST64_FLOGIN 0x3
624 #define SLI4_ELS_REQUEST64_PLOGI 0x4
626 #define SLI4_ELS_REQUEST64_CMD_GEN 0x08
627 #define SLI4_ELS_REQUEST64_CMD_NON_FABRIC 0x0c
628 #define SLI4_ELS_REQUEST64_CMD_FABRIC 0x0d
633 typedef struct sli4_fcp_icmnd64_wqe_s {
635 #if BYTE_ORDER == LITTLE_ENDIAN
636 uint32_t payload_offset_length:16,
637 fcp_cmd_buffer_length:16;
639 uint32_t remote_n_port_id:24,
655 uint32_t request_tag:16,
684 #error big endian version not defined
691 typedef struct sli4_fcp_iread64_wqe_s {
693 #if BYTE_ORDER == LITTLE_ENDIAN
694 uint32_t payload_offset_length:16,
695 fcp_cmd_buffer_length:16;
697 uint32_t remote_n_port_id:24,
713 uint32_t request_tag:16,
739 #error big endian version not defined
747 typedef struct sli4_fcp_iwrite64_wqe_s {
749 #if BYTE_ORDER == LITTLE_ENDIAN
750 uint32_t payload_offset_length:16,
751 fcp_cmd_buffer_length:16;
768 uint32_t request_tag:16,
792 uint32_t remote_n_port_id:24,
795 #error big endian version not defined
801 typedef struct sli4_fcp_128byte_wqe_s {
809 typedef struct sli4_fcp_treceive64_wqe_s {
811 #if BYTE_ORDER == LITTLE_ENDIAN
820 uint32_t sec_xri_tag:16,
838 uint32_t request_tag:16,
869 #error big endian version not defined
878 typedef struct sli4_fcp_trsp64_wqe_s {
880 #if BYTE_ORDER == LITTLE_ENDIAN
902 uint32_t request_tag:16,
933 #error big endian version not defined
940 typedef struct sli4_fcp_tsend64_wqe_s {
942 #if BYTE_ORDER == LITTLE_ENDIAN
964 uint32_t request_tag:16,
994 #error big endian version not defined
999 #define SLI4_IO_CONTINUATION BIT(0)
1000 #define SLI4_IO_AUTO_GOOD_RESPONSE BIT(1)
1001 #define SLI4_IO_NO_ABORT BIT(2)
1002 #define SLI4_IO_DNRX BIT(3)
1003 #define SLI4_IO_SUPPRESS_RESPONSE BIT(4)
1006 #define SLI4_DIF_DISABLED 0
1007 #define SLI4_DIF_PASS_THROUGH 1
1008 #define SLI4_DIF_STRIP 2
1009 #define SLI4_DIF_INSERT 3
1014 typedef struct sli4_gen_request64_wqe_s {
1016 #if BYTE_ORDER == LITTLE_ENDIAN
1023 uint32_t xri_tag:16,
1035 uint32_t request_tag:16,
1037 uint32_t ebde_cnt:4,
1054 uint32_t cmd_type:4,
1059 uint32_t remote_n_port_id:24,
1065 #error big endian version not defined
1072 typedef struct sli4_send_frame_wqe_s {
1074 #if BYTE_ORDER == LITTLE_ENDIAN
1076 uint32_t fc_header_0_1[2];
1077 uint32_t xri_tag:16,
1089 uint32_t request_tag:16,
1092 uint32_t ebde_cnt:4,
1109 uint32_t cmd_type:4,
1114 uint32_t fc_header_2_5[4];
1116 #error big endian version not defined
1123 typedef struct sli4_xmit_sequence64_wqe_s {
1125 #if BYTE_ORDER == LITTLE_ENDIAN
1126 uint32_t remote_n_port_id:24,
1128 uint32_t relative_offset;
1138 uint32_t xri_tag:16,
1151 uint32_t request_tag:16,
1153 uint32_t ebde_cnt:4,
1170 uint32_t cmd_type:4,
1180 #error big endian version not defined
1187 typedef struct sli4_requeue_xri_wqe_s {
1194 #if BYTE_ORDER == LITTLE_ENDIAN
1195 uint32_t xri_tag:16,
1207 uint32_t request_tag:16,
1209 uint32_t ebde_cnt:4,
1228 uint32_t cmd_type:4,
1238 #error big endian version not defined
1245 typedef struct sli4_xmit_bcast64_wqe_s {
1247 #if BYTE_ORDER == LITTLE_ENDIAN
1254 uint32_t xri_tag:16,
1266 uint32_t request_tag:16,
1268 uint32_t ebde_cnt:4,
1285 uint32_t cmd_type:4,
1295 #error big endian version not defined
1302 typedef struct sli4_xmit_bls_rsp_wqe_s {
1303 #if BYTE_ORDER == LITTLE_ENDIAN
1307 uint32_t high_seq_cnt:16,
1310 uint32_t local_n_port_id:24,
1312 uint32_t remote_id:24,
1316 uint32_t xri_tag:16,
1328 uint32_t request_tag:16,
1330 uint32_t ebde_cnt:4,
1347 uint32_t cmd_type:4,
1352 uint32_t temporary_rpi:16,
1358 #error big endian version not defined
1368 typedef struct sli_bls_payload_s {
1374 uint32_t seq_id_validity:8,
1383 uint32_t vendor_unique:8,
1384 reason_explanation:8,
1394 typedef struct sli4_xmit_els_rsp64_wqe_s {
1396 #if BYTE_ORDER == LITTLE_ENDIAN
1401 uint32_t remote_id:24,
1403 uint32_t xri_tag:16,
1415 uint32_t request_tag:16,
1417 uint32_t ebde_cnt:4,
1434 uint32_t cmd_type:4,
1439 uint32_t temporary_rpi:16,
1445 #error big endian version not defined
1452 typedef struct sli4_link_state_s {
1453 #if BYTE_ORDER == LITTLE_ENDIAN
1454 uint32_t link_number:6,
1459 uint32_t port_fault:8,
1461 logical_link_speed:16;
1470 #error big endian version not defined
1475 #define SLI4_LINK_ATTN_TYPE_LINK_UP 0x01
1476 #define SLI4_LINK_ATTN_TYPE_LINK_DOWN 0x02
1477 #define SLI4_LINK_ATTN_TYPE_NO_HARD_ALPA 0x03
1478 #define SLI4_LINK_ATTN_TYPE_TRUNK_EVENT 0x07
1480 #define SLI4_LINK_ATTN_P2P 0x01
1481 #define SLI4_LINK_ATTN_FC_AL 0x02
1482 #define SLI4_LINK_ATTN_INTERNAL_LOOPBACK 0x03
1483 #define SLI4_LINK_ATTN_SERDES_LOOPBACK 0x04
1485 #define SLI4_LINK_ATTN_1G 0x01
1486 #define SLI4_LINK_ATTN_2G 0x02
1487 #define SLI4_LINK_ATTN_4G 0x04
1488 #define SLI4_LINK_ATTN_8G 0x08
1489 #define SLI4_LINK_ATTN_10G 0x0a
1490 #define SLI4_LINK_ATTN_16G 0x10
1491 #define SLI4_LINK_ATTN_32G 0x20
1492 #define SLI4_LINK_ATTN_64G 0x21
1493 #define SLI4_LINK_ATTN_128G 0x22
1494 #define SLI4_LINK_ATTN_256G 0x23
1497 #define SLI4_LINK_TYPE_ETHERNET 0x0
1498 #define SLI4_LINK_TYPE_FC 0x1
1500 #define SLI4_FC_TRUNK_CONFIG_MASK 0xF0
1501 #define SLI4_FC_TRUNK_LINK_STATE_MASK 0x0F
1507 #define SLI4_FC_TRUNK_2_PORT_CONFIG 0x30
1510 #define SLI4_FC_TRUNK_2_PORT_HI_CONFIG 0xC0
1513 #define SLI4_FC_TRUNK_4_PORT_CONFIG 0xF0
1519 typedef struct sli4_link_attention_s {
1520 #if BYTE_ORDER == LITTLE_ENDIAN
1521 uint32_t link_number:8,
1525 uint32_t port_fault:8,
1526 shared_link_status:8,
1527 logical_link_speed:16;
1536 #error big endian version not defined
1543 #define SLI4_LINK_STATE_PHYSICAL 0x00
1544 #define SLI4_LINK_STATE_LOGICAL 0x01
1546 #define SLI4_FCOE_FIP_FCF_DISCOVERED 0x01
1547 #define SLI4_FCOE_FIP_FCF_TABLE_FULL 0x02
1548 #define SLI4_FCOE_FIP_FCF_DEAD 0x03
1549 #define SLI4_FCOE_FIP_FCF_CLEAR_VLINK 0x04
1550 #define SLI4_FCOE_FIP_FCF_MODIFIED 0x05
1552 #define SLI4_GRP5_QOS_SPEED 0x01
1554 #define SLI4_FC_EVENT_LINK_ATTENTION 0x01
1555 #define SLI4_FC_EVENT_SHARED_LINK_ATTENTION 0x02
1557 #define SLI4_PORT_SPEED_NO_LINK 0x0
1558 #define SLI4_PORT_SPEED_10_MBPS 0x1
1559 #define SLI4_PORT_SPEED_100_MBPS 0x2
1560 #define SLI4_PORT_SPEED_1_GBPS 0x3
1561 #define SLI4_PORT_SPEED_10_GBPS 0x4
1563 #define SLI4_PORT_DUPLEX_NONE 0x0
1564 #define SLI4_PORT_DUPLEX_HALF 0x1
1565 #define SLI4_PORT_DUPLEX_FULL 0x2
1567 #define SLI4_PORT_LINK_STATUS_PHYSICAL_DOWN 0x0
1568 #define SLI4_PORT_LINK_STATUS_PHYSICAL_UP 0x1
1569 #define SLI4_PORT_LINK_STATUS_LOGICAL_DOWN 0x2
1570 #define SLI4_PORT_LINK_STATUS_LOGICAL_UP 0x3
1575 typedef struct sli4_fcoe_fip_s {
1576 #if BYTE_ORDER == LITTLE_ENDIAN
1578 uint32_t fcf_count:16,
1588 #error big endian version not defined
1595 typedef struct sli4_fc_wcqe_s {
1596 #if BYTE_ORDER == LITTLE_ENDIAN
1597 uint32_t hw_status:8,
1612 #error big endian version not defined
1619 typedef struct sli4_fc_wqec_s {
1620 #if BYTE_ORDER == LITTLE_ENDIAN
1623 uint32_t wqe_index:16,
1630 #error big endian version not defined
1638 #define SLI4_FC_WCQE_STATUS_SUCCESS 0x00
1639 #define SLI4_FC_WCQE_STATUS_FCP_RSP_FAILURE 0x01
1640 #define SLI4_FC_WCQE_STATUS_REMOTE_STOP 0x02
1641 #define SLI4_FC_WCQE_STATUS_LOCAL_REJECT 0x03
1642 #define SLI4_FC_WCQE_STATUS_NPORT_RJT 0x04
1643 #define SLI4_FC_WCQE_STATUS_FABRIC_RJT 0x05
1644 #define SLI4_FC_WCQE_STATUS_NPORT_BSY 0x06
1645 #define SLI4_FC_WCQE_STATUS_FABRIC_BSY 0x07
1646 #define SLI4_FC_WCQE_STATUS_LS_RJT 0x09
1647 #define SLI4_FC_WCQE_STATUS_CMD_REJECT 0x0b
1648 #define SLI4_FC_WCQE_STATUS_FCP_TGT_LENCHECK 0x0c
1649 #define SLI4_FC_WCQE_STATUS_RQ_BUF_LEN_EXCEEDED 0x11
1650 #define SLI4_FC_WCQE_STATUS_RQ_INSUFF_BUF_NEEDED 0x12
1651 #define SLI4_FC_WCQE_STATUS_RQ_INSUFF_FRM_DISC 0x13
1652 #define SLI4_FC_WCQE_STATUS_RQ_DMA_FAILURE 0x14
1653 #define SLI4_FC_WCQE_STATUS_FCP_RSP_TRUNCATE 0x15
1654 #define SLI4_FC_WCQE_STATUS_DI_ERROR 0x16
1655 #define SLI4_FC_WCQE_STATUS_BA_RJT 0x17
1656 #define SLI4_FC_WCQE_STATUS_RQ_INSUFF_XRI_NEEDED 0x18
1657 #define SLI4_FC_WCQE_STATUS_RQ_INSUFF_XRI_DISC 0x19
1658 #define SLI4_FC_WCQE_STATUS_RX_ERROR_DETECT 0x1a
1659 #define SLI4_FC_WCQE_STATUS_RX_ABORT_REQUEST 0x1b
1662 #define SLI4_FC_WCQE_STATUS_TARGET_WQE_TIMEOUT 0xff
1663 #define SLI4_FC_WCQE_STATUS_SHUTDOWN 0xfe
1664 #define SLI4_FC_WCQE_STATUS_DISPATCH_ERROR 0xfd
1669 #define SLI4_FC_DI_ERROR_GE (1 << 0)
1670 #define SLI4_FC_DI_ERROR_AE (1 << 1)
1671 #define SLI4_FC_DI_ERROR_RE (1 << 2)
1672 #define SLI4_FC_DI_ERROR_TDPV (1 << 3)
1673 #define SLI4_FC_DI_ERROR_UDB (1 << 4)
1674 #define SLI4_FC_DI_ERROR_EDIR (1 << 5)
1679 #define SLI4_FC_LOCAL_REJECT_MISSING_CONTINUE 0x01
1680 #define SLI4_FC_LOCAL_REJECT_SEQUENCE_TIMEOUT 0x02
1681 #define SLI4_FC_LOCAL_REJECT_INTERNAL_ERROR 0x03
1682 #define SLI4_FC_LOCAL_REJECT_INVALID_RPI 0x04
1683 #define SLI4_FC_LOCAL_REJECT_NO_XRI 0x05
1684 #define SLI4_FC_LOCAL_REJECT_ILLEGAL_COMMAND 0x06
1685 #define SLI4_FC_LOCAL_REJECT_XCHG_DROPPED 0x07
1686 #define SLI4_FC_LOCAL_REJECT_ILLEGAL_FIELD 0x08
1687 #define SLI4_FC_LOCAL_REJECT_RPI_SUSPENDED 0x09
1688 #define SLI4_FC_LOCAL_REJECT_NO_ABORT_MATCH 0x0c
1689 #define SLI4_FC_LOCAL_REJECT_TX_DMA_FAILED 0x0d
1690 #define SLI4_FC_LOCAL_REJECT_RX_DMA_FAILED 0x0e
1691 #define SLI4_FC_LOCAL_REJECT_ILLEGAL_FRAME 0x0f
1692 #define SLI4_FC_LOCAL_REJECT_NO_RESOURCES 0x11
1693 #define SLI4_FC_LOCAL_REJECT_FCP_CONF_FAILURE 0x12
1694 #define SLI4_FC_LOCAL_REJECT_ILLEGAL_LENGTH 0x13
1695 #define SLI4_FC_LOCAL_REJECT_UNSUPPORTED_FEATURE 0x14
1696 #define SLI4_FC_LOCAL_REJECT_ABORT_IN_PROGRESS 0x15
1697 #define SLI4_FC_LOCAL_REJECT_ABORT_REQUESTED 0x16
1698 #define SLI4_FC_LOCAL_REJECT_RCV_BUFFER_TIMEOUT 0x17
1699 #define SLI4_FC_LOCAL_REJECT_LOOP_OPEN_FAILURE 0x18
1700 #define SLI4_FC_LOCAL_REJECT_LINK_DOWN 0x1a
1701 #define SLI4_FC_LOCAL_REJECT_CORRUPTED_DATA 0x1b
1702 #define SLI4_FC_LOCAL_REJECT_CORRUPTED_RPI 0x1c
1703 #define SLI4_FC_LOCAL_REJECT_OUT_OF_ORDER_DATA 0x1d
1704 #define SLI4_FC_LOCAL_REJECT_OUT_OF_ORDER_ACK 0x1e
1705 #define SLI4_FC_LOCAL_REJECT_DUP_FRAME 0x1f
1706 #define SLI4_FC_LOCAL_REJECT_LINK_CONTROL_FRAME 0x20
1707 #define SLI4_FC_LOCAL_REJECT_BAD_HOST_ADDRESS 0x21
1708 #define SLI4_FC_LOCAL_REJECT_MISSING_HDR_BUFFER 0x23
1709 #define SLI4_FC_LOCAL_REJECT_MSEQ_CHAIN_CORRUPTED 0x24
1710 #define SLI4_FC_LOCAL_REJECT_ABORTMULT_REQUESTED 0x25
1711 #define SLI4_FC_LOCAL_REJECT_BUFFER_SHORTAGE 0x28
1712 #define SLI4_FC_LOCAL_REJECT_RCV_XRIBUF_WAITING 0x29
1713 #define SLI4_FC_LOCAL_REJECT_INVALID_VPI 0x2e
1714 #define SLI4_FC_LOCAL_REJECT_MISSING_XRIBUF 0x30
1715 #define SLI4_FC_LOCAL_REJECT_INVALID_RELOFFSET 0x40
1716 #define SLI4_FC_LOCAL_REJECT_MISSING_RELOFFSET 0x41
1717 #define SLI4_FC_LOCAL_REJECT_INSUFF_BUFFERSPACE 0x42
1718 #define SLI4_FC_LOCAL_REJECT_MISSING_SI 0x43
1719 #define SLI4_FC_LOCAL_REJECT_MISSING_ES 0x44
1720 #define SLI4_FC_LOCAL_REJECT_INCOMPLETE_XFER 0x45
1721 #define SLI4_FC_LOCAL_REJECT_SLER_FAILURE 0x46
1722 #define SLI4_FC_LOCAL_REJECT_SLER_CMD_RCV_FAILURE 0x47
1723 #define SLI4_FC_LOCAL_REJECT_SLER_REC_RJT_ERR 0x48
1724 #define SLI4_FC_LOCAL_REJECT_SLER_REC_SRR_RETRY_ERR 0x49
1725 #define SLI4_FC_LOCAL_REJECT_SLER_SRR_RJT_ERR 0x4a
1726 #define SLI4_FC_LOCAL_REJECT_SLER_RRQ_RJT_ERR 0x4c
1727 #define SLI4_FC_LOCAL_REJECT_SLER_RRQ_RETRY_ERR 0x4d
1728 #define SLI4_FC_LOCAL_REJECT_SLER_ABTS_ERR 0x4e
1730 typedef struct sli4_fc_async_rcqe_s {
1731 #if BYTE_ORDER == LITTLE_ENDIAN
1734 rq_element_index:12,
1739 payload_data_placement_length:16;
1740 uint32_t sof_byte:8,
1743 header_data_placement_length:6,
1747 #error big endian version not defined
1751 typedef struct sli4_fc_async_rcqe_v1_s {
1752 #if BYTE_ORDER == LITTLE_ENDIAN
1755 rq_element_index:15,
1760 payload_data_placement_length:16;
1761 uint32_t sof_byte:8,
1764 header_data_placement_length:6,
1768 #error big endian version not defined
1772 typedef struct sli4_fc_marker_rcqe_s {
1773 #if BYTE_ORDER == LITTLE_ENDIAN
1776 rq_element_index: 15,
1786 #error big endian version not defined
1790 #define SLI4_FC_ASYNC_RQ_SUCCESS 0x10
1791 #define SLI4_FC_ASYNC_RQ_BUF_LEN_EXCEEDED 0x11
1792 #define SLI4_FC_ASYNC_RQ_INSUFF_BUF_NEEDED 0x12
1793 #define SLI4_FC_ASYNC_RQ_INSUFF_BUF_FRM_DISC 0x13
1794 #define SLI4_FC_ASYNC_RQ_DMA_FAILURE 0x14
1796 typedef struct sli4_fc_coalescing_rcqe_s {
1797 #if BYTE_ORDER == LITTLE_ENDIAN
1800 rq_element_index:12,
1804 sequence_reporting_placement_length:16;
1810 #error big endian version not defined
1814 #define SLI4_FC_COALESCE_RQ_SUCCESS 0x10
1815 #define SLI4_FC_COALESCE_RQ_INSUFF_XRI_NEEDED 0x18
1817 typedef struct sli4_fc_optimized_write_cmd_cqe_s {
1818 #if BYTE_ORDER == LITTLE_ENDIAN
1821 rq_element_index:15,
1829 payload_data_placement_length:16;
1832 header_data_placement_length:6,
1836 #error big endian version not defined
1840 typedef struct sli4_fc_optimized_write_data_cqe_s {
1841 #if BYTE_ORDER == LITTLE_ENDIAN
1842 uint32_t hw_status:8,
1856 #error big endian version not defined
1860 typedef struct sli4_fc_xri_aborted_cqe_s {
1861 #if BYTE_ORDER == LITTLE_ENDIAN
1865 uint32_t extended_status;
1877 #error big endian version not defined
1884 #define SLI4_CQE_CODE_OFFSET 14
1886 #define SLI4_CQE_CODE_WORK_REQUEST_COMPLETION 0x01
1887 #define SLI4_CQE_CODE_RELEASE_WQE 0x02
1888 #define SLI4_CQE_CODE_RQ_ASYNC 0x04
1889 #define SLI4_CQE_CODE_XRI_ABORTED 0x05
1890 #define SLI4_CQE_CODE_RQ_COALESCING 0x06
1891 #define SLI4_CQE_CODE_RQ_CONSUMPTION 0x07
1892 #define SLI4_CQE_CODE_MEASUREMENT_REPORTING 0x08
1893 #define SLI4_CQE_CODE_RQ_ASYNC_V1 0x09
1894 #define SLI4_CQE_CODE_OPTIMIZED_WRITE_CMD 0x0B
1895 #define SLI4_CQE_CODE_OPTIMIZED_WRITE_DATA 0x0C
1896 #define SLI4_CQE_CODE_MARKER 0x1D
1924 extern int32_t
sli_els_request64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint8_t, uint32_t, uint32_t, uint8_t, uint16_t, uint16_t, uint16_t, ocs_remote_node_t *);
1925 extern int32_t
sli_fcp_iread64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint8_t, uint8_t, uint8_t);
1926 extern int32_t
sli_fcp_iwrite64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint8_t, uint8_t, uint8_t);
1927 extern int32_t
sli_fcp_icmnd64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint8_t);
1929 extern int32_t
sli_fcp_treceive64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint32_t, uint8_t, uint8_t, uint8_t, uint32_t, uint8_t);
1930 extern int32_t
sli_fcp_trsp64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint16_t, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint32_t, uint8_t, uint8_t, uint32_t);
1931 extern int32_t
sli_fcp_tsend64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint32_t, uint8_t, uint8_t, uint8_t, uint32_t);
1932 extern int32_t
sli_fcp_cont_treceive64_wqe(
sli4_t *,
void*,
size_t, ocs_dma_t *, uint32_t, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint32_t, ocs_remote_node_t *, uint32_t, uint8_t, uint8_t, uint8_t, uint32_t, uint8_t);
1933 extern int32_t
sli_gen_request64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint32_t,uint8_t, uint16_t, uint16_t, uint16_t, ocs_remote_node_t *, uint8_t, uint8_t, uint8_t);
1935 ocs_dma_t *payload, uint32_t req_len, uint8_t timeout,
1936 uint16_t xri, uint16_t req_tag);
1937 extern int32_t
sli_xmit_sequence64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint8_t, uint16_t, uint16_t, uint16_t, ocs_remote_node_t *, uint8_t, uint8_t, uint8_t);
1938 extern int32_t
sli_xmit_bcast64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint8_t, uint16_t, uint16_t, uint16_t, ocs_remote_node_t *, uint8_t, uint8_t, uint8_t);
1940 extern int32_t
sli_xmit_els_rsp64_wqe(
sli4_t *,
void *,
size_t, ocs_dma_t *, uint32_t, uint16_t, uint16_t, uint16_t, uint16_t, ocs_remote_node_t *, uint32_t, uint32_t);
1943 extern void sli4_cmd_lowlevel_enable_ras(
sli4_t *sli4,
void *buf,
size_t size,
int loglevel, uint32_t unit_size, int32_t buf_count, uint32_t *phys_addr, uintptr_t lwpd_phys_addr);
1958 static inline int32_t
1963 *len_hdr = *len_data = 0;
1983 static inline uint8_t
1987 uint8_t fcfi = UINT8_MAX;
1997 fcfi = rcqev1->
fcfi;
2002 fcfi = opt_wr->
fcfi;
int32_t sli_cmd_fcoe_wq_create_v1(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *qmem, uint16_t cq_id, uint16_t ignored)
Write an FCOE_WQ_CREATE_V1 command.
const char * sli_fc_get_status_string(uint32_t status)
Return a text string corresponding to a CQE status value.
int32_t sli_cmd_fcoe_post_hdr_templates(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *dma, uint16_t rpi, ocs_dma_t *payload_dma)
Write an FCOE_POST_HDR_TEMPLATES command.
WQE used to create an FCP initiator no data command.
WQE used to create an FCP initiator read.
sli4_bde_t sequence_payload
int32_t sli_fc_process_sli_port_event(sli4_t *sli4, void *acqe)
Process an asynchronous sli port event.
#define SLI4_CQE_CODE_OPTIMIZED_WRITE_CMD
uint32_t max_response_payload_length
WQE used to create an FCP target send (DATA IN).
uint32_t sequence_payload_length
int32_t sli_xmit_sequence64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *payload, uint32_t payload_len, uint8_t timeout, uint16_t ox_id, uint16_t xri, uint16_t tag, ocs_remote_node_t *rnode, uint8_t r_ctl, uint8_t type, uint8_t df_ctl)
Write a XMIT_SEQUENCE64 work queue entry.
uint32_t fcp_data_transmit_length
WQE used to create a general request.
uint32_t event_information
int32_t sli_cmd_fcoe_rq_destroy(sli4_t *sli4, void *buf, size_t size, uint16_t rq_id)
Write an FCOE_RQ_DESTROY command.
void sli4_cmd_lowlevel_get_itcm_parity_stats(sli4_t *sli4, void *buf, size_t size, bool clear_stats)
WQE used to create an ELS request.
uint32_t header_data_placement_length
void sli4_cmd_lowlevel_set_watchdog(sli4_t *sli4, void *buf, size_t size, uint16_t timeout)
Write a LOWLEVEL_SET_WATCHDOG command.
WQE used to create an ELS response.
int32_t sli_xmit_bcast64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *payload, uint32_t payload_len, uint8_t timeout, uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode, uint8_t r_ctl, uint8_t type, uint8_t df_ctl)
sli4_bde_t first_data_bde
WQE used to create an FCP target receive, and FCP target receive continue.
Asynchronouse Event: FCoE/FIP ACQE.
uint32_t sli_fc_io_length(sli4_t *sli4, uint8_t *cqe)
Return the FCP IO length.
int32_t sli_fc_cqe_parse(sli4_t *sli4, sli4_queue_t *cq, uint8_t *cqe, sli4_qentry_e *etype, uint16_t *r_id)
Parse an FC/FCoE work queue CQ entry.
int32_t sli_xmit_els_rsp64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *rsp, uint32_t rsp_len, uint16_t xri, uint16_t tag, uint16_t cq_id, uint16_t ox_id, ocs_remote_node_t *rnode, uint32_t flags, uint32_t s_id)
Write a XMIT_ELS_RSP64_WQE work queue entry.
WQE used to create a transmit sequence.
WQE used to abort exchanges.
uint32_t max_response_payload_length
uint32_t payload_offset_length
Asynchronouse Event: FC Link Attention Event.
int32_t sli_fc_rq_alloc(sli4_t *sli4, sli4_queue_t *q, uint32_t n_entries, uint32_t buffer_size, sli4_queue_t *cq, uint16_t ulp, uint8_t is_hdr)
Allocate a receive queue.
uint32_t initial_transfer_length
uint32_t fcp_data_receive_length
Asynchronouse Event: Link State ACQE.
uint32_t sli_fc_get_rpi_requirements(sli4_t *sli4, uint32_t n_rpi)
Get the RPI resource requirements.
WQE used to create a send frame request.
int32_t sli_cmd_fcoe_rq_create_v1(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *qmem, uint16_t cq_id, uint16_t ulp, uint16_t buffer_size)
Write an FCOE_RQ_CREATE_V1 command.
uint32_t payload_data_placement_length
FC/FCoE WQ completion queue entry.
Buffer Descriptor Entry (BDE)
int32_t sli_requeue_xri_wqe(sli4_t *sli4, void *buf, size_t size, uint16_t xri, uint16_t tag, uint16_t cq_id)
Write a REQUEUE_XRI_WQE work queue entry.
int32_t sli_fc_els_did(sli4_t *sli4, uint8_t *cqe, uint32_t *d_id)
Retrieve the D_ID from the completion.
int32_t sli_fcp_treceive64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t first_data_sge, uint32_t relative_off, uint32_t xfer_len, uint16_t xri, uint16_t tag, uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode, uint32_t flags, uint8_t dif, uint8_t bs, uint8_t csctl, uint32_t app_id, uint8_t timer)
Write an FCP_TRECEIVE64_WQE work queue entry.
int32_t sli_fc_rq_set_alloc(sli4_t *sli4, uint32_t num_rq_pairs, sli4_queue_t *qs[], uint32_t base_cq_id, uint32_t n_entries, uint32_t header_buffer_size, uint32_t payload_buffer_size, uint16_t ulp)
Allocate a receive queue set.
int32_t sli_send_frame_wqe(sli4_t *sli4, void *buf, size_t size, uint8_t sof, uint8_t eof, uint32_t *hdr, ocs_dma_t *payload, uint32_t req_len, uint8_t timeout, uint16_t xri, uint16_t req_tag)
Write a SEND_FRAME work queue entry.
uint8_t mac_address_provider
sli4_bde_t first_data_bde
int32_t sli_cmd_fcoe_read_fcf_table(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *dma, uint16_t index)
Write an FCOE_READ_FCF_TABLE command.
#define SLI4_CQE_CODE_OFFSET
int32_t sli_fcp_iread64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t first_data_sge, uint32_t xfer_len, uint16_t xri, uint16_t tag, uint16_t cq_id, uint32_t rpi, ocs_remote_node_t *rnode, uint8_t dif, uint8_t bs, uint8_t timeout)
Write an FCP_IREAD64_WQE work queue entry.
WQE used unblock the specified XRI and to release it to the SLI Port's free pool. ...
int32_t sli_abort_wqe(sli4_t *sli4, void *buf, size_t size, sli4_abort_type_e type, uint32_t send_abts, uint32_t ids, uint32_t mask, uint16_t tag, uint16_t cq_id)
Write an ABORT_WQE work queue entry.
sli4_bde_t els_response_payload_bde
#define SLI4_FCOE_WQ_CREATE_V0_MAX_PAGES
FCOE_WQ_CREATE.
int32_t sli_fc_process_fcoe(sli4_t *sli4, void *acqe)
Process an asynchronous FCoE event entry.
WQE used to create an FCP initiator write.
uint32_t sli_fc_ext_status(sli4_t *sli4, uint8_t *cqe)
int32_t sli_cmd_fcoe_post_sgl_pages(sli4_t *sli4, void *buf, size_t size, uint16_t xri, uint32_t xri_count, ocs_dma_t *page0[], ocs_dma_t *page1[], ocs_dma_t *dma)
Write an FCOE_POST_SGL_PAGES command.
FCOE_READ_FCF_TABLE response.
#define SLI4_FC_ASYNC_RQ_SUCCESS
sli4_bde_t els_response_payload
int32_t sli_fcp_icmnd64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint16_t xri, uint16_t tag, uint16_t cq_id, uint32_t rpi, ocs_remote_node_t *rnode, uint8_t timeout)
Write an FCP_ICMND64_WQE work queue entry.
int32_t sli_els_request64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint8_t req_type, uint32_t req_len, uint32_t max_rsp_len, uint8_t timeout, uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode)
Write an ELS_REQUEST64_WQE work queue entry.
WQE used to create an FCP target response.
uint32_t total_data_placed
uint32_t total_transfer_length
uint32_t request_payload_length
uint32_t els_response_payload_length
FC/FCoE WQ consumed CQ queue entry.
uint32_t sli_fc_response_length(sli4_t *sli4, uint8_t *cqe)
Return the ELS/CT response length.
static int32_t sli_fc_rqe_length(sli4_t *sli4, void *cqe, uint32_t *len_hdr, uint32_t *len_data)
Retrieve the received header and payload length.
WQE used to create a BLS response.
int32_t sli_fc_process_link_attention(sli4_t *sli4, void *acqe)
Process an asynchronous Link Attention event entry.
int32_t sli_cmd_fcoe_rq_create(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *qmem, uint16_t cq_id, uint16_t ulp, uint16_t buffer_size)
Write an FCOE_RQ_CREATE command.
WQE used to send a single frame sequence to broadcast address.
int32_t sli_cmd_fcoe_wq_destroy(sli4_t *sli4, void *buf, size_t size, uint16_t wq_id)
Write an FCOE_WQ_DESTROY command.
void sli4_cmd_lowlevel_disable_ras(sli4_t *sli4, void *buf, size_t size)
Write a LOWLEVEL_SET_DIAG_LOG_OPTIONS command.
sli4_bde_t els_request_payload
#define SLI4_CQE_CODE_RQ_ASYNC
static uint8_t sli_fc_rqe_fcfi(sli4_t *sli4, void *cqe)
Retrieve the received FCFI.
int32_t sli_gen_request64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t req_len, uint32_t max_rsp_len, uint8_t timeout, uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode, uint8_t r_ctl, uint8_t type, uint8_t df_ctl)
Write a GEN_REQUEST64 work queue entry.
uint32_t fcp_response_length
int32_t sli_xmit_bls_rsp64_wqe(sli4_t *sli4, void *buf, size_t size, sli_bls_payload_t *payload, uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode, uint32_t s_id)
Write an XMIT_BLS_RSP64_WQE work queue entry.
sli4_bde_t first_data_bde
int32_t sli_fc_process_link_state(sli4_t *sli4, void *acqe)
Process an asynchronous Link State event entry.
int32_t sli_fcp_tsend64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t first_data_sge, uint32_t relative_off, uint32_t xfer_len, uint16_t xri, uint16_t tag, uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode, uint32_t flags, uint8_t dif, uint8_t bs, uint8_t csctl, uint32_t app_id)
Write an FCP_TSEND64_WQE work queue entry.
uint32_t max_receive_size
int32_t sli_fcp_iwrite64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t first_data_sge, uint32_t xfer_len, uint32_t first_burst, uint16_t xri, uint16_t tag, uint16_t cq_id, uint32_t rpi, ocs_remote_node_t *rnode, uint8_t dif, uint8_t bs, uint8_t timeout)
Write an FCP_IWRITE64_WQE work queue entry.
void sli4_cmd_lowlevel_enable_ras(sli4_t *sli4, void *buf, size_t size, int log_level, uint32_t unit_size, int32_t buf_count, uint32_t *phys_addr, uintptr_t lwpd_phys_addr)
Write a LOWLEVEL_SET_DIAG_LOG_OPTIONS command.
uint32_t els_request_payload_length
Generic Command Request header.
Generic Command Response header.
uint32_t total_transfer_length
int32_t sli_fcp_cont_treceive64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t first_data_sge, uint32_t relative_off, uint32_t xfer_len, uint16_t xri, uint16_t sec_xri, uint16_t tag, uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode, uint32_t flags, uint8_t dif, uint8_t bs, uint8_t csctl, uint32_t app_id, uint8_t timer)
Write an FCP_CONT_TRECEIVE64_WQE work queue entry.
int32_t sli_fcp_trsp64_wqe(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *sgl, uint32_t rsp_len, uint16_t xri, uint16_t tag, uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode, uint32_t flags, uint8_t csctl, uint8_t port_owned, uint32_t app_id)
Write an FCP_TRSP64_WQE work queue entry.
uint32_t sequence_payload_len
#define SLI4_CQE_CODE_RQ_ASYNC_V1
int32_t sli_fc_rqe_rqid_and_index(sli4_t *sli4, uint8_t *cqe, uint16_t *rq_id, uint32_t *index)
Retrieve the RQ index from the completion.
int32_t sli_cmd_fcoe_wq_create(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *qmem, uint16_t cq_id, uint16_t ulp)
Write an FCOE_WQ_CREATE command.
int32_t sli_cmd_fcoe_rediscover_fcf(sli4_t *sli4, void *buf, size_t size, uint16_t index)
uint32_t payload_offset_length