45 #if defined(OCS_INCLUDE_DEBUG)
69 ocs_dma_t *qmem, uint16_t cq_id, uint16_t ulp)
72 uint32_t sli_config_off = 0;
77 uint32_t payload_size;
106 for (p = 0, addr = qmem->phys;
132 uint16_t cq_id, uint16_t ignored)
135 uint32_t sli_config_off = 0;
138 uint32_t page_size = 0;
139 uint32_t page_bytes = 0;
143 uint32_t payload_size;
164 switch (qmem->size) {
209 for (p = 0, addr = qmem->phys;
211 p++, addr += page_bytes) {
234 uint32_t sli_config_off = 0;
237 uint32_t payload_size;
277 uint16_t xri, uint32_t xri_count, ocs_dma_t *page0[], ocs_dma_t *page1[], ocs_dma_t *dma)
280 uint32_t sli_config_off = 0;
284 uint32_t payload_size;
296 ocs_memset(post, 0, dma->size);
313 for (i = 0; i < xri_count; i++) {
319 for (i = 0; i < xri_count; i++) {
346 ocs_dma_t *qmem, uint16_t cq_id, uint16_t ulp, uint16_t buffer_size)
349 uint32_t sli_config_off = 0;
354 uint32_t payload_size;
372 ocs_log_test(sli4->
os,
"num_pages %d not valid\n", rq->
num_pages);
383 ocs_log_err(sli4->
os,
"buffer_size %d out of range (%d-%d)\n",
399 for (p = 0, addr = qmem->phys;
427 ocs_dma_t *qmem, uint16_t cq_id, uint16_t ulp,
428 uint16_t buffer_size)
431 uint32_t sli_config_off = 0;
436 uint32_t payload_size;
456 ocs_log_test(sli4->
os,
"num_pages %d not valid, max %d\n",
470 if ((buffer_size < sli4->config.rq_min_buf_size) ||
472 ocs_log_err(sli4->
os,
"buffer_size %d out of range (%d-%d)\n",
482 for (p = 0, addr = qmem->phys;
507 uint32_t sli_config_off = 0;
510 uint32_t payload_size;
554 ocs_log_test(sli4->
os,
"FCOE_READ_FCF_TABLE only supported on FC\n");
558 read_fcf = dma->virt;
586 ocs_dma_t *dma, uint16_t rpi, ocs_dma_t *payload_dma)
589 uint32_t sli_config_off = 0;
593 uint32_t payload_size;
600 if (page_count > 16) {
603 if (ocs_dma_alloc(sli4->
os, payload_dma, payload_size, 4)) {
604 ocs_log_err(sli4->
os,
"mailbox payload memory allocation fail\n");
614 if (UINT16_MAX == rpi) {
623 template->rpi_offset = rpi;
624 template->page_count = page_count;
626 for (i = 0; i <
template->page_count; i++) {
627 template->page_descriptor[i].low = ocs_addr32_lo(phys);
628 template->page_descriptor[i].high = ocs_addr32_hi(phys);
633 return(sli_config_off + payload_size);
640 uint32_t sli_config_off = 0;
653 if (index == UINT16_MAX) {
683 uint32_t ids, uint32_t mask, uint16_t tag, uint16_t cq_id)
687 ocs_memset(buf, 0, size);
693 ocs_log_warn(sli4->
os,
"warning non-zero mask %#x when aborting XRI %#x\n", mask, ids);
704 ocs_log_test(sli4->
os,
"unsupported type %#x\n", type);
708 abort->
ia = send_abts ? 0 : 1;
718 abort->
cq_id = cq_id;
745 uint32_t req_len, uint32_t max_rsp_len, uint8_t timeout,
746 uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode)
750 uint8_t is_fabric = FALSE;
752 ocs_memset(buf, 0, size);
777 els->
timer = timeout;
784 if (rnode->node_group) {
786 els->
remote_id = rnode->fc_id & 0x00ffffff;
798 if (rnode->attached) {
813 if (0 == rnode->sport->fc_id) {
827 if (!rnode->sport->domain) {
828 ocs_log_test(sli4->
os,
"invalid domain handle\n");
836 els->
context_tag = rnode->sport->domain->fcf_indicator;
851 if (rnode->sport->fc_id != UINT32_MAX) {
852 els->
sid = rnode->sport->fc_id;
868 if (rnode->attached) {
916 uint16_t xri, uint16_t tag, uint16_t cq_id,
917 uint32_t rpi, ocs_remote_node_t *rnode, uint8_t timeout)
922 ocs_memset(buf, 0, size);
924 if (!sgl || !sgl->virt) {
925 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
926 sgl, sgl ? sgl->virt : NULL);
946 icmnd->
bde.
u.
blp.sgl_segment_address_low = ocs_addr32_lo(sgl->phys);
947 icmnd->
bde.
u.
blp.sgl_segment_address_high = ocs_addr32_hi(sgl->phys);
953 icmnd->
timer = timeout;
964 if (rnode->node_group) {
969 icmnd->
cq_id = cq_id;
997 uint32_t xfer_len, uint16_t xri, uint16_t tag, uint16_t cq_id,
998 uint32_t rpi, ocs_remote_node_t *rnode,
999 uint8_t dif, uint8_t bs, uint8_t timeout)
1004 ocs_memset(buf, 0, size);
1006 if (!sgl || !sgl->virt) {
1007 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
1008 sgl, sgl ? sgl->virt : NULL);
1028 iread->
bde.
u.
blp.sgl_segment_address_low = ocs_addr32_lo(sgl->phys);
1029 iread->
bde.
u.
blp.sgl_segment_address_high = ocs_addr32_hi(sgl->phys);
1043 iread->
timer = timeout;
1056 if (rnode->node_group) {
1062 iread->
cq_id = cq_id;
1099 uint32_t xfer_len, uint32_t first_burst, uint16_t xri, uint16_t tag, uint16_t cq_id,
1100 uint32_t rpi, ocs_remote_node_t *rnode,
1101 uint8_t dif, uint8_t bs, uint8_t timeout)
1106 ocs_memset(buf, 0, size);
1108 if (!sgl || !sgl->virt) {
1109 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
1110 sgl, sgl ? sgl->virt : NULL);
1116 iwrite->
xbl = FALSE;
1118 iwrite->
dbde = TRUE;
1130 iwrite->
bde.
u.
blp.sgl_segment_address_low = ocs_addr32_lo(sgl->phys);
1131 iwrite->
bde.
u.
blp.sgl_segment_address_high = ocs_addr32_hi(sgl->phys);
1146 iwrite->
timer = timeout;
1159 if (rnode->node_group) {
1164 iwrite->
cq_id = cq_id;
1205 uint32_t relative_off, uint32_t xfer_len, uint16_t xri, uint16_t tag, uint16_t cq_id,
1206 uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode, uint32_t flags, uint8_t dif, uint8_t bs,
1207 uint8_t csctl, uint32_t app_id, uint8_t timer)
1214 bool disable_pbde =
true;
1216 ocs_memset(buf, 0, size);
1218 if (!sgl || !sgl->virt) {
1219 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
1220 sgl, sgl ? sgl->virt : NULL);
1228 if (!dif && !disable_pbde && iftype_g7 && (xfer_len <= sge[2].buffer_length) && (!relative_off)) {
1251 if (!dif && (xfer_len <= sge[2].buffer_length)) {
1261 trecv->
bde.
u.
blp.sgl_segment_address_low = ocs_addr32_lo(sgl->phys);
1262 trecv->
bde.
u.
blp.sgl_segment_address_high = ocs_addr32_hi(sgl->phys);
1286 trecv->
timer = timer;
1296 if (rnode->node_group) {
1303 trecv->
cq_id = cq_id;
1323 trecv_128->
dw[31] = app_id;
1358 uint32_t relative_off, uint32_t xfer_len, uint16_t xri, uint16_t sec_xri, uint16_t tag,
1359 uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode, uint32_t flags,
1360 uint8_t dif, uint8_t bs, uint8_t csctl, uint32_t app_id, uint8_t timer)
1365 cq_id, xid, rpi, rnode, flags, dif, bs, csctl, app_id, timer);
1401 uint16_t xri, uint16_t tag, uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode,
1402 uint32_t flags, uint8_t csctl, uint8_t port_owned, uint32_t app_id)
1407 ocs_memset(buf, 0, size);
1440 if (rnode->node_group) {
1442 trsp->
dword5 = rnode->fc_id & 0x00ffffff;
1455 trsp->
cq_id = cq_id;
1467 trsp_128->
dw[31] = app_id;
1501 uint32_t relative_off, uint32_t xfer_len,
1502 uint16_t xri, uint16_t tag, uint16_t cq_id, uint16_t xid, uint32_t rpi, ocs_remote_node_t *rnode,
1503 uint32_t flags, uint8_t dif, uint8_t bs, uint8_t csctl, uint32_t app_id)
1509 ocs_memset(buf, 0, size);
1511 if (!sgl || !sgl->virt) {
1512 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
1513 sgl, sgl ? sgl->virt : NULL);
1532 if (!dif && (xfer_len <= sge[2].buffer_length)) {
1542 tsend->
bde.
u.
blp.sgl_segment_address_low = ocs_addr32_lo(sgl->phys);
1543 tsend->
bde.
u.
blp.sgl_segment_address_high = ocs_addr32_hi(sgl->phys);
1577 if (rnode->node_group) {
1579 tsend->
dword5 = rnode->fc_id & 0x00ffffff;
1582 tsend->
cq_id = cq_id;
1604 tsend_128->
dw[31] = app_id;
1634 uint32_t req_len, uint32_t max_rsp_len, uint8_t timeout,
1635 uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode,
1636 uint8_t r_ctl, uint8_t type, uint8_t df_ctl)
1641 ocs_memset(buf, 0, size);
1643 if (!sgl || !sgl->virt) {
1644 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
1645 sgl, sgl ? sgl->virt : NULL);
1665 gen->
bde.
u.
blp.sgl_segment_address_low = ocs_addr32_lo(sgl->phys);
1666 gen->
bde.
u.
blp.sgl_segment_address_high = ocs_addr32_hi(sgl->phys);
1685 gen->
timer = timeout;
1693 if (rnode->node_group) {
1725 ocs_dma_t *payload, uint32_t req_len, uint8_t timeout,
1726 uint16_t xri, uint16_t req_tag)
1730 ocs_memset(buf, 0, size);
1734 sf->
bde.
u.
data.buffer_address_low = ocs_addr32_lo(payload->phys);
1735 sf->
bde.
u.
data.buffer_address_high = ocs_addr32_hi(payload->phys);
1755 sf->
timer = timeout;
1800 uint32_t payload_len, uint8_t timeout, uint16_t ox_id,
1801 uint16_t xri, uint16_t tag, ocs_remote_node_t *rnode,
1802 uint8_t r_ctl, uint8_t type, uint8_t df_ctl)
1806 ocs_memset(buf, 0, size);
1808 if ((payload == NULL) || (payload->virt == NULL)) {
1809 ocs_log_err(sli4->
os,
"bad parameter sgl=%p virt=%p\n",
1810 payload, payload ? payload->virt : NULL);
1822 xmit->
bde.
u.
data.buffer_address_low = ocs_addr32_lo(payload->phys);
1823 xmit->
bde.
u.
data.buffer_address_high = ocs_addr32_hi(payload->phys);
1837 xmit->
r_ctl = r_ctl;
1849 xmit->
timer = timeout;
1857 if (rnode->node_group) {
1866 xmit->
cq_id = 0xFFFF;
1889 ocs_memset(buf, 0, size);
1896 requeue->
cq_id = cq_id;
1904 uint32_t payload_len, uint8_t timeout, uint16_t xri, uint16_t tag,
1905 uint16_t cq_id, ocs_remote_node_t *rnode,
1906 uint8_t r_ctl, uint8_t type, uint8_t df_ctl)
1911 if (rnode->attached) {
1912 ocs_log_test(sli4->
os,
"remote node %d in use\n", rnode->indicator);
1916 ocs_memset(buf, 0, size);
1928 bcast->
r_ctl = r_ctl;
1939 bcast->
timer = timeout;
1951 bcast->
cq_id = cq_id;
1974 uint16_t xri, uint16_t tag, uint16_t cq_id, ocs_remote_node_t *rnode, uint32_t s_id)
1981 if (rnode->attached && (s_id != UINT32_MAX)) {
1982 ocs_log_test(sli4->
os,
"S_ID specified for attached remote node %d\n",
1987 ocs_memset(buf, 0, size);
1991 (payload->
u.
acc.seq_id_validity << 24);
1998 ocs_log_test(sli4->
os,
"bad BLS type %#x\n",
2006 if (rnode->attached) {
2013 if (UINT32_MAX != s_id) {
2018 bls->
remote_id = rnode->fc_id & 0x00ffffff;
2033 if (rnode->node_group) {
2035 bls->
remote_id = rnode->fc_id & 0x00ffffff;
2067 uint32_t rsp_len, uint16_t xri, uint16_t tag, uint16_t cq_id,
2068 uint16_t ox_id, ocs_remote_node_t *rnode, uint32_t flags, uint32_t s_id)
2072 ocs_memset(buf, 0, size);
2105 if (rnode->attached) {
2111 els->
remote_id = rnode->fc_id & 0x00ffffff;
2113 if (UINT32_MAX != s_id) {
2115 els->
s_id = s_id & 0x00ffffff;
2119 if (rnode->node_group) {
2121 els->
remote_id = rnode->fc_id & 0x00ffffff;
2161 ocs_log_test(sli4->
os,
"unsupported link type %#x\n",
2178 ocs_log_test(sli4->
os,
"unsupported link status %#x\n",
2198 event.
speed = 10000;
2201 event.
speed = 20000;
2204 event.
speed = 25000;
2207 event.
speed = 40000;
2210 event.
speed = 100000;
2213 ocs_log_test(sli4->
os,
"unsupported port_speed %#x\n",
2223 typedef struct sli4_tcm_parity_event_s {
2225 uint32_t tcm_address:24,
2242 ocs_log_info(sli4->
os,
"Link is valid\n");
2245 ocs_log_info(sli4->
os,
"Link not present\n");
2248 ocs_log_info(sli4->
os,
"Link is present but incompatible physical media type\n");
2251 ocs_log_info(sli4->
os,
"Present, Unsupported PHY\n");
2254 ocs_log_err(sli4->
os,
"Unknown link state %d\n", state);
2307 ocs_log_warn(sli4->
os,
"ITCM parity event detected; ULP id = %d, "\
2308 "parity_bit_error_count = %d, total_parity_error_count = %d\n",
2316 ocs_log_err(sli4->
os,
"Unhandled async event type %d\n", pe_acqe->
event_type);
2328 uint32_t speed_gbps = 0;
2331 switch (speed_code) {
2336 speed_gbps = speed_code;
2348 speed_gbps = speed_code;
2352 return speed_gbps * 1000;
2368 ocs_log_debug(sli4->
os,
"attn_type: no hard alpa\n");
2372 ocs_log_test(sli4->
os,
"attn_type: unknown\n");
2384 ocs_log_debug(sli4->
os,
"topology Internal loopback\n");
2388 ocs_log_debug(sli4->
os,
"topology serdes loopback\n");
2392 ocs_log_test(sli4->
os,
"topology: unknown\n");
2405 char *ptr = active_ports_str;
2408 memset(active_ports_str, 0x0, max_str_len);
2409 for (i = 0; i < 4; i++) {
2410 if (!(ports_active & (1 << i)))
2412 if (!ocs_strlen(active_ports_str)) {
2413 ocs_snprintf(tmp,
sizeof(tmp),
"%d", i);
2415 ocs_snprintf(tmp,
sizeof(tmp),
",%d", i);
2417 if (ocs_strlen(active_ports_str) + ocs_strlen(tmp) > max_str_len)
2419 ocs_strcpy(ptr, tmp);
2420 ptr += ocs_strlen(tmp);
2422 if (!ocs_strlen(active_ports_str)) {
2423 ocs_strcpy(active_ports_str,
"None");
2430 uint8_t ports_active;
2431 uint32_t potential_agg_speed;
2432 uint32_t current_trunk_speed;
2433 char active_ports_str[16];
2444 ocs_log_debug(sli4->
os,
2445 "[ Trunk ] Links=2, Ports={ Member={0,1}, Active={%s} }, Speed={max=%dMbps, current=%dMbps}\n",
2446 active_ports_str, potential_agg_speed, current_trunk_speed);
2451 ocs_log_debug(sli4->
os,
2452 "[ Trunk ] Links=2, Ports={ Member={2,3}, Active={%s} }, Speed={max=%dMbps, current=%dMbps}\n",
2453 active_ports_str, potential_agg_speed, current_trunk_speed);
2458 ocs_log_debug(sli4->
os,
2459 "[ Trunk ] Links=4, Ports={ Member={0,1,2,3}, Active={%s} }, Speed={max=%dMbps, current=%dMbps}\n",
2460 active_ports_str, potential_agg_speed, current_trunk_speed);
2463 ocs_log_debug(sli4->
os,
2464 "[ Trunk ] Invalid config: topology=%#x, reported max speed=%d Mbps, current speed=%d Mbps\n",
2465 link_attn->
topology, potential_agg_speed, current_trunk_speed);
2491 ocs_log_debug(sli4->
os,
"link_number=%d attn_type=%#x topology=%#x port_speed=%#x "
2492 "port_fault=%#x shared_link_status=%#x logical_link_speed=%#x "
2504 ocs_log_debug(sli4->
os,
"event_type: SLI4_FC_EVENT_LINK_ATTENTION \n");
2507 ocs_log_debug(sli4->
os,
"event_type: FC shared link event \n");
2510 ocs_log_test(sli4->
os,
"event_type: unknown, %d\n", link_attn->
event_type);
2531 ocs_log_test(sli4->
os,
"attn_type: unknown\n");
2568 ocs_log_err(sli4->
os,
"WCQE: status=%#x hw_status=%#x tag=%#x w1=%#x w2=%#x xb=%d\n",
2571 ocs_log_err(sli4->
os,
" %08X %08X %08X %08X\n", ((uint32_t *)cqe)[0],
2572 ((uint32_t *)cqe)[1], ((uint32_t *)cqe)[2], ((uint32_t *)cqe)[3]);
2584 *r_id = rcqe->
rq_id;
2593 *r_id = rcqe->
rq_id;
2602 *r_id = optcqe->
rq_id;
2616 ocs_log_err(sli4->
os,
"Optimized DATA CQE: status=%#x ext_status=%#x hw_status=%#x xri=%#x dpl=%#x w3=%#x xb=%d\n",
2619 ((uint32_t*) cqe)[3], dcqe->
xb);
2628 *r_id = rcqe->
rq_id;
2645 *r_id = wqec->
wq_id;
2653 *r_id = marker_cqe->
rq_id;
2658 ocs_log_test(sli4->
os,
"CQE completion code %d not handled\n", code);
2776 *index = UINT32_MAX;
2781 *rq_id = rcqe->
rq_id;
2788 ocs_log_err(sli4->
os,
"RCQE: status=%02x (%s) rq_id=%d, index=%x pdpl=%x sof=%02x eof=%02x hdpl=%x\n",
2792 ocs_log_err(sli4->
os,
" %08X %08X %08X %08X\n", ((uint32_t *)cqe)[0],
2793 ((uint32_t *)cqe)[1], ((uint32_t *)cqe)[2], ((uint32_t *)cqe)[3]);
2796 *rq_id = rcqe_v1->
rq_id;
2803 ocs_log_err(sli4->
os,
"RCQE: status=%02x (%s) rq_id=%d, index=%x pdpl=%x sof=%02x eof=%02x hdpl=%x\n",
2807 ocs_log_err(sli4->
os,
" %08X %08X %08X %08X\n", ((uint32_t *)cqe)[0],
2808 ((uint32_t *)cqe)[1], ((uint32_t *)cqe)[2], ((uint32_t *)cqe)[3]);
2813 *rq_id = optcqe->
rq_id;
2820 ocs_log_test(sli4->
os,
"status=%02x (%s) rq_id=%d, index=%x pdpl=%x hdpl=%x oox=%d agxr=%d xri=0x%x rpi=0x%x\n",
2829 *rq_id = rcqe->
rq_id;
2834 *index = UINT32_MAX;
2837 ocs_log_test(sli4->
os,
"status=%02x (%s) rq_id=%d, index=%x rq_id=%#x sdpl=%x\n",
2843 *rq_id = rcqe->
rq_id;
2849 *index = UINT32_MAX;
2851 ocs_log_test(sli4->
os,
"marker rcqe failed. status=%d\n", rc);
2854 *index = UINT32_MAX;
2858 ocs_log_debug(sli4->
os,
"status=%02x rq_id=%d, index=%x pdpl=%x sof=%02x eof=%02x hdpl=%x\n",
2884 uint32_t mask = UINT32_MAX;
2886 ocs_log_debug(sli4->
os,
"ACQE FCoE FIP type=%02x count=%d tag=%#x\n",
2896 event.
index = UINT32_MAX;
2903 ocs_log_debug(sli4->
os,
"FCF Table Full\n");
2911 ocs_log_debug(sli4->
os,
"Clear VLINK Received VPI=%#x\n", fcoe->
event_information & mask);
2914 ocs_log_debug(sli4->
os,
"FCF Modified\n");
2917 ocs_log_test(sli4->
os,
"bad FCoE type %#x", fcoe->
event_type);
2949 uint32_t n_entries, uint32_t buffer_size,
2952 int32_t (*rq_create)(
sli4_t *,
void *, size_t, ocs_dma_t *, uint16_t, uint16_t, uint16_t);
2954 if ((sli4 == NULL) || (q == NULL)) {
2955 void *os = sli4 != NULL ? sli4->
os : NULL;
2957 ocs_log_err(os,
"bad parameter sli4=%p q=%p\n", sli4, q);
2973 cq->
id, ulp, buffer_size)) {
2975 ocs_dma_free(sli4->
os, &q->
dma);
2978 if (is_hdr && q->
id & 1) {
2979 ocs_log_test(sli4->
os,
"bad header RQ_ID %d\n", q->
id);
2980 ocs_dma_free(sli4->
os, &q->
dma);
2982 }
else if (!is_hdr && (q->
id & 1) == 0) {
2983 ocs_log_test(sli4->
os,
"bad data RQ_ID %d\n", q->
id);
2984 ocs_dma_free(sli4->
os, &q->
dma);
2990 q->
u.
flag.is_hdr = is_hdr;
2992 q->
u.
flag.rq_batch = TRUE;
3017 uint32_t n_entries, uint32_t header_buffer_size,
3018 uint32_t payload_buffer_size, uint16_t ulp)
3020 uint32_t i, p, offset = 0;
3021 uint32_t payload_size, total_page_count = 0;
3027 ocs_memset(&dma, 0,
sizeof(dma));
3029 for (i = 0; i < (num_rq_pairs * 2); i++) {
3043 ocs_log_err(sli4->
os,
"DMA allocation failed\n");
3046 ocs_memset(dma.virt, 0, payload_size);
3049 payload_size, &dma) == -1) {
3059 + (8 * total_page_count);
3071 for (i = 0; i < (num_rq_pairs * 2); i++) {
3072 for (p = 0, addr = qs[i]->dma.phys; p < req->num_pages; p++, addr +=
SLI_PAGE_SIZE) {
3080 ocs_log_crit(sli4->
os,
"bootstrap mailbox write faild RQSet\n");
3085 rsp = (
void *)((uint8_t *)dma.virt);
3087 ocs_log_err(sli4->
os,
"bad create RQSet status=%#x addl=%#x\n",
3091 for (i = 0; i < (num_rq_pairs * 2); i++) {
3092 qs[i]->
id = i + rsp->
q_id;
3093 if ((qs[i]->
id & 1) == 0) {
3094 qs[i]->
u.
flag.is_hdr = TRUE;
3096 qs[i]->
u.
flag.is_hdr = FALSE;
3103 ocs_dma_free(sli4->
os, &dma);
3108 for (i = 0; i < (num_rq_pairs * 2); i++) {
3109 if (qs[i]->dma.
size) {
3110 ocs_dma_free(sli4->
os, &qs[i]->
dma);
3115 ocs_dma_free(sli4->
os, &dma);
3184 for (i = 0; i < ARRAY_SIZE(lookup); i++) {
3185 if (status == lookup[i].code) {
3186 return lookup[i].label;
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.
#define SLI4_LINK_ATTN_16G
const char * sli_fc_get_status_string(uint32_t status)
Return a text string corresponding to a CQE status value.
int32_t(* link)(void *, void *)
#define SLI4_CMD_FCP_TSEND64_WQE
#define SLI4_CQE_CODE_RELEASE_WQE
#define SLI4_FCOE_HDR_TEMPLATE_SIZE
#define SLI4_FCOE_FIP_FCF_MODIFIED
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.
uint32_t rq_element_index
sli4_port_type_e port_type
WQE used to create an FCP initiator no data command.
WQE used to create an FCP initiator read.
#define SLI4_WQE_FCP_TRECEIVE64
uint32_t uint32_t xri_tag
uint32_t fcp_cmd_buffer_length
Generic Common Create EQ/CQ/MQ/WQ/RQ Queue completion.
sli4_bde_t sequence_payload
#define SLI4_FC_WCQE_STATUS_REMOTE_STOP
int32_t sli_fc_process_sli_port_event(sli4_t *sli4, void *acqe)
Process an asynchronous sli port event.
#define SLI4_WQE_XMIT_BLS_RSP
#define SLI4_CQE_CODE_OPTIMIZED_WRITE_CMD
#define SLI4_CMD_ABORT_WQE
#define SLI4_WQE_FCP_CONT_TRECEIVE64
uint32_t uint32_t len_loc
uint32_t tcm_parity_event
sli4_link_medium_e medium
#define SLI4_FC_TRUNK_4_PORT_CONFIG
#define SLI4_OPC_FCOE_WQ_DESTROY
static int32_t sli_fc_process_fc_link_attention(sli4_t *sli4, sli4_link_attention_t *link_attn, sli4_link_event_t *event)
#define SLI4_BDE_TYPE_BLP
#define SLI4_WQE_XMIT_SEQUENCE64
uint32_t fc_header_2_5[4]
sli4_link_topology_e topology
uint32_t max_response_payload_length
#define SLI4_PORT_LINK_STATUS_PHYSICAL_UP
#define SLI4_FC_WCQE_STATUS_FABRIC_BSY
#define SLI4_LINK_TYPE_ETHERNET
#define SLI4_FC_COALESCE_RQ_SUCCESS
#define SLI4_LINK_ATTN_64G
WQE used to create an FCP target send (DATA IN).
#define SLI4_WQE_FCP_TSEND64
#define SLI4_ELS_REQUEST64_PLOGI
#define SLI4_LINK_ATTN_TYPE_LINK_DOWN
uint32_t sequence_payload_length
#define SLI4_FCOE_FIP_FCF_DISCOVERED
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
#define SLI4_ELS_REQUEST64_CMD_FABRIC
WQE used to create a general request.
#define SLI4_FCOE_RQE_SIZE
uint32_t uint32_t additional_status
struct sli_bls_payload_t::@52::@53 acc
#define SLI4_FC_TRUNK_LINK_STATE_MASK
uint32_t event_information
#define SLI4_FCOE_RQ_CREATE_V0_MAX_PAGES
#define SLI4_CMD_FCP_IWRITE64_WQE
#define SLI4_FCOE_WQ_CREATE_V1_MAX_PAGES
#define SLI4_OPC_FCOE_RQ_DESTROY
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.
#define SLI4_FCOE_FIP_FCF_CLEAR_VLINK
#define SLI4_LINK_ATTN_8G
uint32_t logical_link_speed
#define SLI4_CMD_XMIT_SEQUENCE64_WQE
#define SLI4_CMD_FCP_TRECEIVE64_WQE
uint32_t sgl_pre_registered
#define SLI4_FC_EVENT_LINK_ATTENTION
#define SLI4_FC_WCQE_STATUS_LOCAL_REJECT
#define SLI4_CQE_CODE_MARKER
#define SLI4_FC_WCQE_STATUS_FABRIC_RJT
#define SLI4_FC_WCQE_STATUS_FCP_TGT_LENCHECK
WQE used to create an ELS request.
uint32_t header_data_placement_length
#define SLI4_CMD_XMIT_BLS_RSP64_WQE
sli4_fcoe_post_sgl_page_desc_t page_desc[0]
uint32_t hdr_template_req
WQE used to create an ELS response.
uint32_t uint32_t disable_cqe
#define SLI4_CMD_SEND_FRAME_WQE
#define SLI4_CMD_FCP_IREAD64_WQE
struct sli4_bde_t::@27::@28 data
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)
#define SLI4_OPC_FCOE_POST_SGL_PAGES
sli4_bde_t first_data_bde
#define SLI4_FCOE_FIP_FCF_TABLE_FULL
static void sli_fc_log_link_state(sli4_t *sli4, uint8_t state)
#define SLI4_FC_WCQE_STATUS_RQ_BUF_LEN_EXCEEDED
uint32_t uint32_t uint32_t xri_tag
WQE used to create an FCP target receive, and FCP target receive continue.
#define SLI4_WQE_GEN_REQUEST64
Asynchronouse Event: FCoE/FIP ACQE.
#define SLI4_OPC_FCOE_POST_HDR_TEMPLATES
uint32_t sli_fc_io_length(sli4_t *sli4, uint8_t *cqe)
Return the FCP IO length.
#define SLI4_OPC_FCOE_REDISCOVER_FCF
#define SLI4_ELS_REQUEST64_LOGO
#define SLI4_CMD_REQUEUE_XRI_WQE
#define SLI4_CMD_GEN_REQUEST64_WQE
#define SLI4_ELS_REQUEST64_CONTEXT_VPI
uint32_t uint32_t uint32_t payload_data_placement_length
#define SLI4_WQE_FCP_ICMND64
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.
#define SLI4_FC_WCQE_STATUS_FCP_RSP_TRUNCATE
uint32_t remote_n_port_id
static void sli_fc_process_trunk_link_attention(sli4_t *sli4, sli4_link_attention_t *link_attn)
#define SLI4_FC_WCQE_STATUS_CMD_REJECT
#define SLI4_LINK_ATTN_SERDES_LOOPBACK
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 aggregate_link_speed
uint32_t max_response_payload_length
#define SLI4_WQE_SEND_FRAME
uint32_t payload_data_placement_length
uint32_t uint32_t uint32_t xri_tag
Asynchronouse Event: FC Link Attention Event.
#define SLI4_WQE_EXT_BYTES
uint32_t remote_n_port_id
#define SLI4_FC_WCQE_STATUS_SUCCESS
FC/FCoE Completion Status Codes.
#define SLI4_FC_EVENT_SHARED_LINK_ATTENTION
#define SLI4_CQE_CODE_XRI_ABORTED
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.
struct sli4_t::@47 config
uint32_t initial_transfer_length
#define SLI4_FCOE_RQ_CREATE_V0_MIN_BUF_SIZE
uint32_t fcp_data_receive_length
#define SLI4_LINK_ATTN_INTERNAL_LOOPBACK
#define SLI4_FC_WCQE_STATUS_RQ_INSUFF_XRI_NEEDED
Asynchronouse Event: Link State ACQE.
#define SLI4_FC_WCQE_STATUS_RX_ERROR_DETECT
uint32_t sli_fc_get_rpi_requirements(sli4_t *sli4, uint32_t n_rpi)
Get the RPI resource requirements.
#define SLI4_FCOE_RQ_CREATE_V0_MAX_BUF_SIZE
#define SLI4_FC_WCQE_STATUS_RQ_INSUFF_XRI_DISC
uint32_t uint32_t len_loc
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.
#define SLI4_ABORT_CRITERIA_XRI_TAG
uint32_t payload_data_placement_length
#define SLI4_FC_WCQE_STATUS_RQ_INSUFF_FRM_DISC
FC/FCoE WQ completion queue entry.
#define SLI4_FCOE_RQ_PAGE_SIZE_4096
uint32_t rq_element_index
#define SLI4_FC_WCQE_STATUS_NPORT_RJT
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.
#define SLI4_FCOE_RQE_SIZE_8
#define SLI4_MAX_IF_TYPES
#define SLI4_ELS_REQUEST64_CONTEXT_RPI
uint32_t fcp_cmd_buffer_length
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.
#define SLI4_ELS_REQUEST64_CONTEXT_FCFI
struct sli4_t::@47::@50 extent[SLI_RSRC_MAX]
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.
uint32_t shared_link_status
#define SLI4_ACQE_PORT_EVENT_TYPE_MISCONF_PHYPORTS
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.
sli4_physical_page_descriptor_t page_physical_address[8]
sli4_bde_t first_data_bde
uint32_t uint32_t relative_offset
#define SLI4_FCOE_FIP_FCF_DEAD
#define SLI4_WQE_FCP_IREAD64
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_FC_TRUNK_CONFIG_MASK
uint32_t uint32_t len_loc
struct sli4_queue_t::@44::@45 flag
#define SLI4_LINK_ATTN_128G
uint32_t remote_n_port_id
#define SLI4_CQE_CODE_OFFSET
#define SLI4_OPC_FCOE_WQ_CREATE
uint32_t uint32_t uint32_t context_tag
uint32_t payload_offset_length
uint32_t remote_n_port_id
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.
int32_t sli_cmd_sli_config(sli4_t *sli4, void *buf, size_t size, uint32_t length, ocs_dma_t *dma)
Write a SLI_CONFIG command to the provided buffer.
WQE used unblock the specified XRI and to release it to the SLI Port's free pool. ...
#define SLI4_FC_WCQE_STATUS_NPORT_BSY
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.
#define SLI4_LINK_ATTN_32G
#define SLI4_FC_WCQE_STATUS_RQ_INSUFF_BUF_NEEDED
sli4_physical_page_descriptor_t page_physical_address[SLI4_FCOE_WQ_CREATE_V0_MAX_PAGES]
uint32_t rq_element_index
uint32_t payload_buffer_size
#define SLI4_FCOE_WQ_CREATE_V0_MAX_PAGES
FCOE_WQ_CREATE.
uint32_t uint32_t context_tag
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 port_link_status
uint32_t sli_fc_ext_status(sli4_t *sli4, uint8_t *cqe)
#define SLI4_FC_WCQE_STATUS_RX_ABORT_REQUEST
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.
#define SLI4_LINK_ATTN_TYPE_LINK_UP
#define SLI4_CQE_CODE_WORK_REQUEST_COMPLETION
static void sli_fc_report_link_state(sli4_t *sli4, sli4_port_event_acqe_t *pe_acqe)
uint32_t header_data_placement_length
#define SLI4_CQE_CODE_RQ_COALESCING
#define SLI4_FC_ASYNC_RQ_SUCCESS
#define SLI4_ELS_REQUEST64_CLASS_3
union sli4_fcp_treceive64_wqe_t::@51 dword5
#define SLI4_ELS_REQUEST64_FDISC
#define SLI4_FC_TRUNK_2_PORT_HI_CONFIG
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.
uint32_t uint32_t remote_id
static void sli_fc_report_trunk_links(sli4_t *sli4, uint8_t ports_active, char *active_ports_str, size_t max_str_len)
sli4_link_status_e status
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.
#define SLI4_CMD_FCP_TRSP64_WQE
WQE used to create an FCP target response.
#define SLI4_FC_WCQE_STATUS_LS_RJT
struct sli4_bde_t::@27::@30 blp
uint32_t total_data_placed
uint32_t total_transfer_length
#define SLI4_PORT_LINK_STATUS_LOGICAL_DOWN
#define SLI4_FC_WCQE_STATUS_BA_RJT
static uint32_t sli_page_count(size_t bytes, uint32_t page_size)
#define SLI4_ELS_REQUEST64_CMD_NON_FABRIC
uint32_t request_payload_length
uint32_t uint32_t context_tag
#define SLI4_LINK_ATTN_FC_AL
uint32_t els_response_payload_length
FC/FCoE WQ consumed CQ queue entry.
uint32_t payload_offset_length
uint32_t sli_fc_response_length(sli4_t *sli4, uint8_t *cqe)
Return the ELS/CT response length.
#define SLI4_ABORT_CRITERIA_REQUEST_TAG
uint32_t sli4_bde_t first_data_bde
#define SLI4_CQE_CODE_OPTIMIZED_WRITE_DATA
uint32_t buffer_address_low
#define SLI4_IF_TYPE_LANCER_G7
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.
#define SLI_ROUND_PAGE(b)
#define SLI4_OPC_FCOE_READ_FCF_TABLE
uint32_t sequence_reporting_placement_length
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.
int32_t __sli_create_queue(sli4_t *sli4, sli4_queue_t *q)
Issue the command to create a queue.
sli4_physical_page_descriptor_t page_physical_address[0]
#define SLI4_CMD_XMIT_BCAST64_WQE
WQE used to send a single frame sequence to broadcast address.
uint32_t payload_offset_length
sli4_physical_page_descriptor_t page_physical_address[8]
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.
static uint32_t sli_fc_decode_port_speed(uint32_t speed_code)
uint32_t rq_element_index
#define SLI4_LINK_ATTN_10G
int32_t __sli_queue_init(sli4_t *sli4, sli4_queue_t *q, uint32_t qtype, size_t size, uint32_t n_entries, uint32_t align)
Initialize a queue object.
#define SLI4_ELS_REQUEST64_DIR_WRITE
#define SLI4_FC_WCQE_STATUS_FCP_RSP_FAILURE
#define SLI4_IO_AUTO_GOOD_RESPONSE
uint32_t uint32_t xri_tag
#define SLI4_WQE_ELS_RSP64
sli4_bde_t els_request_payload
#define SLI4_LINK_ATTN_TYPE_TRUNK_EVENT
#define SLI4_IF_TYPE_BE3_SKH_PF
#define SLI4_CQE_CODE_RQ_ASYNC
union sli_bls_payload_t::@52 u
sli4_physical_page_descriptor_t page_physical_address[8]
#define SLI4_ELS_REQUEST64_DIR_READ
#define SLI4_IO_CONTINUATION
uint32_t uint32_t remote_id
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 uint32_t uint32_t context_tag
#define SLI4_WQE_FCP_IWRITE64
#define SLI4_LINK_ATTN_TYPE_NO_HARD_ALPA
uint32_t buffer_address_high
#define SLI4_FCOE_RQ_CREATE_V1_MAX_PAGES
uint32_t fcp_response_length
#define SLI4_OPC_FCOE_RQ_CREATE
#define SLI4_SUBSYSTEM_FCFCOE
#define SLI4_FC_TRUNK_2_PORT_CONFIG
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.
int32_t sli_bmbx_command(sli4_t *sli4)
Submit a command to the bootstrap mailbox and check the status.
sli4_bde_t first_data_bde
#define SLI4_FC_WCQE_STATUS_RQ_DMA_FAILURE
int32_t sli_fc_process_link_state(sli4_t *sli4, void *acqe)
Process an asynchronous Link State event entry.
#define SLI4_ELS_REQUEST64_OTHER
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.
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.
Scatter-Gather Entry (SGE)
#define SLI4_WQE_REQUEUE_XRI
uint32_t logical_link_speed
uint32_t els_request_payload_length
#define SLI4_BDE_TYPE_BDE_64
#define SLI4_SGE_TYPE_SKIP
#define SLI4_ABORT_CRITERIA_ABORT_TAG
#define SLI4_WQE_XMIT_BCAST64
#define SLI4_WQE_EXT_SIZE
#define SLI4_WQE_FCP_TRSP64
#define SLI4_LINK_ATTN_256G
Generic Command Request header.
#define SLI4_PORT_LINK_STATUS_LOGICAL_UP
#define SLI4_IO_SUPPRESS_RESPONSE
Generic Command Response header.
int32_t(* fip)(void *, void *)
struct sli_bls_payload_t::@52::@54 rjt
uint32_t fc_header_0_1[2]
uint32_t remote_n_port_id
#define SLI4_ELS_REQUEST64_FLOGIN
uint32_t rq_element_index
uint32_t total_transfer_length
#define SLI4_CMD_FCP_ICMND64_WQE
uint32_t header_data_placement_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.
#define SLI4_ELS_REQUEST64_CMD_GEN
#define SLI4_LINK_ATTN_P2P
uint32_t sequence_payload_len
#define SLI4_ACQE_PORT_EVENT_TYPE_ITCM_PARITY_EVENT
#define SLI4_CQE_CODE_RQ_ASYNC_V1
union sli4_queue_t::@44 u
uint32_t uint32_t remote_id
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.
#define SLI4_FC_WCQE_STATUS_DI_ERROR
uint32_t uint32_t uint32_t rq_id
#define SLI4_WQE_ELS_REQUEST64
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.
#define SLI4_PORT_LINK_STATUS_PHYSICAL_DOWN
int32_t sli_cmd_fcoe_rediscover_fcf(sli4_t *sli4, void *buf, size_t size, uint16_t index)
const sli4_reg_t regmap[SLI4_REG_MAX][SLI4_MAX_IF_TYPES]
Define the mapping of registers to their BAR and offset.
uint32_t payload_offset_length