Lines Matching +full:pa +full:- +full:stats
1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
34 * freebsd-drivers@emulex.com
51 return (-1);
60 device_printf(sc->dev, "Error detected in the card\n");
67 device_printf(sc->dev, "Firmware wait timed out\n");
69 return (-1);
91 device_printf(sc->dev, "Firmware reset Failed\n");
97 mb = OCE_DMAPTR(&sc->bsmbx, struct oce_bmbx);
98 mbx = &mb->mbx;
101 fwcmd = (struct ioctl_common_function_reset *)&mbx->payload;
102 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
110 mbx->u0.s.embedded = 1;
111 mbx->payload_length =
132 mbx = OCE_DMAPTR(&sc->bsmbx, struct oce_bmbx);
133 ptr = (uint8_t *) &mbx->mbx;
163 if (--tmo_sec == 0)
175 device_printf(sc->dev, "Mailbox timed out\n");
189 uint32_t pa;
192 oce_dma_sync(&sc->bsmbx, BUS_DMASYNC_PREWRITE);
193 pa = (uint32_t) ((uint64_t) sc->bsmbx.paddr >> 34);
197 mbox_db.bits.address = pa;
203 pa = (uint32_t) ((uint64_t) sc->bsmbx.paddr >> 4) & 0x3fffffff;
206 mbox_db.bits.address = pa;
215 oce_dma_sync(&sc->bsmbx, BUS_DMASYNC_POSTWRITE);
239 hdr->u0.req.opcode = opcode;
240 hdr->u0.req.subsystem = subsys;
241 hdr->u0.req.port_number = port;
242 hdr->u0.req.domain = dom;
244 hdr->u0.req.timeout = timeout;
245 hdr->u0.req.request_length = pyld_len - sizeof(struct mbx_hdr);
246 hdr->u0.req.version = version;
261 if (sc->flags & OCE_FLAGS_MBOX_ENDIAN_RQD) {
262 mbx = OCE_DMAPTR(&sc->bsmbx, struct oce_bmbx);
263 ptr = (uint8_t *) &mbx->mbx;
296 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
309 ret = fwcmd->hdr.u0.rsp.status;
311 device_printf(sc->dev,
312 "%s failed - cmd status: %d addi status: %d\n",
314 fwcmd->hdr.u0.rsp.additional_status);
318 bcopy(fwcmd->params.rsp.fw_ver_str, sc->fw_version, 32);
334 struct oce_mq *mq = sc->mq;
338 mbx = RING_GET_PRODUCER_ITEM_VA(mq->ring, struct oce_mbx);
341 fwcmd = (struct mbx_get_common_fw_version *)&mbx->payload;
342 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
348 mbx->u0.s.embedded = 1;
349 mbx->payload_length = sizeof(struct mbx_get_common_fw_version);
350 bus_dmamap_sync(mq->ring->dma.tag, mq->ring->dma.map,
352 RING_PUT(mq->ring, 1);
353 reg_value = (1 << 16) | mq->mq_id;
376 LOCK(&sc->bmbx_lock);
378 mb = OCE_DMAPTR(&sc->bsmbx, struct oce_bmbx);
379 mb_mbx = &mb->mbx;
382 tmo = mbx->tag[0];
383 mbx->tag[0] = 0;
395 mb_cqe = &mb->cqe;
396 DW_SWAP(u32ptr(&mb_cqe->u0.dw[0]), sizeof(struct oce_mq_cqe));
402 cstatus = mb_cqe->u0.s.completion_status;
411 mbxctx->mbx = mb_mbx;
412 bcopy(&mbxctx, mb_cqe->u0.s.mq_tag,
417 UNLOCK(&sc->bmbx_lock);
444 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
451 fwcmd->params.req.permanent = perm;
453 fwcmd->params.req.if_id = (uint16_t) if_id;
455 fwcmd->params.req.if_id = 0;
457 fwcmd->params.req.type = type;
465 ret = fwcmd->hdr.u0.rsp.status;
467 device_printf(sc->dev,
468 "%s failed - cmd status: %d addi status: %d\n",
470 fwcmd->hdr.u0.rsp.additional_status);
475 mac->size_of_struct = fwcmd->params.rsp.mac.size_of_struct;
476 bcopy(&fwcmd->params.rsp.mac.mac_addr[0], &mac->mac_addr[0],
477 mac->size_of_struct);
497 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
510 ret = fwcmd->hdr.u0.rsp.status;
512 device_printf(sc->dev,
513 "%s failed - cmd status: %d addi status: %d\n",
515 fwcmd->hdr.u0.rsp.additional_status);
521 sc->config_number = HOST_32(fwcmd->params.rsp.config_number);
522 sc->asic_revision = HOST_32(fwcmd->params.rsp.asic_revision);
523 sc->port_id = HOST_32(fwcmd->params.rsp.port_id);
524 sc->function_mode = HOST_32(fwcmd->params.rsp.function_mode);
525 if ((sc->function_mode & (ULP_NIC_MODE | ULP_RDMA_MODE)) ==
527 sc->rdma_flags = OCE_RDMA_FLAG_SUPPORTED;
529 sc->function_caps = HOST_32(fwcmd->params.rsp.function_caps);
531 if (fwcmd->params.rsp.ulp[0].ulp_mode & ULP_NIC_MODE) {
532 sc->max_tx_rings = HOST_32(fwcmd->params.rsp.ulp[0].nic_wq_tot);
533 sc->max_rx_rings = HOST_32(fwcmd->params.rsp.ulp[0].lro_rqid_tot);
535 sc->max_tx_rings = HOST_32(fwcmd->params.rsp.ulp[1].nic_wq_tot);
536 sc->max_rx_rings = HOST_32(fwcmd->params.rsp.ulp[1].lro_rqid_tot);
571 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
577 DW_SWAP(u32ptr(&fwcmd->hdr), sizeof(struct mbx_hdr));
579 fwcmd->params.req.version = 0;
580 fwcmd->params.req.cap_flags = LE_32(cap_flags);
581 fwcmd->params.req.enable_flags = LE_32(en_flags);
583 bcopy(mac_addr, &fwcmd->params.req.mac_addr[0], 6);
584 fwcmd->params.req.vlan_tag.u0.normal.vtag = LE_16(vlan_tag);
585 fwcmd->params.req.mac_invalid = 0;
587 fwcmd->params.req.mac_invalid = 1;
596 rc = fwcmd->hdr.u0.rsp.status;
598 device_printf(sc->dev,
599 "%s failed - cmd status: %d addi status: %d\n",
601 fwcmd->hdr.u0.rsp.additional_status);
605 *if_id = HOST_32(fwcmd->params.rsp.if_id);
608 sc->pmac_id = HOST_32(fwcmd->params.rsp.pmac_id);
629 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
636 fwcmd->params.req.if_id = if_id;
644 rc = fwcmd->hdr.u0.rsp.status;
646 device_printf(sc->dev,
647 "%s failed - cmd status: %d addi status: %d\n",
649 fwcmd->hdr.u0.rsp.additional_status);
673 if (sc->vlans_added > sc->max_vlans)
679 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
686 fwcmd->params.req.if_id = (uint8_t) if_id;
687 fwcmd->params.req.promisc = (uint8_t) enable_promisc;
688 fwcmd->params.req.untagged = (uint8_t) untagged;
689 fwcmd->params.req.num_vlans = vtag_cnt;
692 bcopy(vtag_arr, fwcmd->params.req.tags.normal_vlans,
701 rc = fwcmd->hdr.u0.rsp.status;
703 device_printf(sc->dev,
704 "%s failed - cmd status: %d addi status: %d\n",
706 fwcmd->hdr.u0.rsp.additional_status);
713 device_printf(sc->dev,"Enabling Vlan Promisc Mode\n");
735 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
743 fwcmd->tx_flow_control = 1;
746 fwcmd->rx_flow_control = 1;
754 rc = fwcmd->hdr.u0.rsp.status;
756 device_printf(sc->dev,
757 "%s failed - cmd status: %d addi status: %d\n",
759 fwcmd->hdr.u0.rsp.additional_status);
769 * Each entry in the table contains the RSS CPU-ID returned by the NIC
771 * the corresponding RSS CQs. (Non-RSS packets are always completed
782 uint8_t *tbl = fwcmd->params.req.cputable;
785 for (j = 0; j < INDIRECTION_TABLE_ENTRIES ; j += (sc->nrqs - 1)) {
789 tbl[j + i] = rq->rss_cpuid;
793 device_printf(sc->dev, "error: Invalid number of RSS RQ's\n");
800 fwcmd->params.req.cpu_tbl_sz_log2 = LE_16(OCE_LOG2(INDIRECTION_TABLE_ENTRIES));
825 fwcmd->params.req.enable_rss = RSS_ENABLE_UDP_IPV4 |
830 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
837 fwcmd->params.req.enable_rss |= (RSS_ENABLE_IPV4 |
842 if(!sc->enable_hwlro)
843 fwcmd->params.req.flush = OCE_FLUSH;
845 fwcmd->params.req.flush = 0;
847 fwcmd->params.req.if_id = LE_32(if_id);
849 read_random(fwcmd->params.req.hash, sizeof(fwcmd->params.req.hash));
859 rc = fwcmd->hdr.u0.rsp.status;
861 device_printf(sc->dev,
862 "%s failed - cmd status: %d addi status: %d\n",
864 fwcmd->hdr.u0.rsp.additional_status);
894 req = &fwcmd->params.req;
895 req->iface_flags_mask = MBX_RX_IFACE_FLAGS_PROMISCUOUS |
899 req->iface_flags = MBX_RX_IFACE_FLAGS_PROMISCUOUS;
902 req->iface_flags |= MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS;
904 req->if_id = sc->if_id;
929 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
939 mbx.payload.u0.u1.sgl[0].pa_lo = ADDR_LO(sgl->paddr);
940 mbx.payload.u0.u1.sgl[0].pa_hi = ADDR_HI(sgl->paddr);
947 rc = fwcmd->hdr.u0.rsp.status;
949 device_printf(sc->dev,
950 "%s failed - cmd status: %d addi status: %d\n",
952 fwcmd->hdr.u0.rsp.additional_status);
974 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
988 rc = fwcmd->hdr.u0.rsp.status;
990 device_printf(sc->dev,
991 "%s failed - cmd status: %d addi status: %d\n",
993 fwcmd->hdr.u0.rsp.additional_status);
997 link->qos_link_speed = HOST_16(fwcmd->params.rsp.qos_link_speed);
998 link->phys_port_speed = fwcmd->params.rsp.physical_port_speed;
999 link->logical_link_status = fwcmd->params.rsp.logical_link_status;
1007 * @param *stats pointer to where to store statistics
1024 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, \
1031 mbx.u0.s.embedded = 0; /* stats too large for embedded mbx rsp */ \
1035 mbx.payload.u0.u1.sgl[0].pa_lo = ADDR_LO(pstats_dma_mem->paddr); \
1036 mbx.payload.u0.u1.sgl[0].pa_hi = ADDR_HI(pstats_dma_mem->paddr); \
1044 rc = fwcmd->hdr.u0.rsp.status; \
1046 device_printf(sc->dev, \
1047 "%s failed - cmd status: %d addi status: %d\n", \
1049 fwcmd->hdr.u0.rsp.additional_status); \
1060 * @param *stats pointer to where to store statistics
1076 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1083 fwcmd->params.req.reset_stats = reset_stats;
1084 fwcmd->params.req.port_number = sc->port_id;
1086 mbx.u0.s.embedded = 0; /* stats too large for embedded mbx rsp */
1090 mbx.payload.u0.u1.sgl[0].pa_lo = ADDR_LO(pstats_dma_mem->paddr);
1091 mbx.payload.u0.u1.sgl[0].pa_hi = ADDR_HI(pstats_dma_mem->paddr);
1101 rc = fwcmd->hdr.u0.rsp.status;
1103 device_printf(sc->dev,
1104 "%s failed - cmd status: %d addi status: %d\n",
1106 fwcmd->hdr.u0.rsp.additional_status);
1113 * @param *stats pointer to where to store statistics
1130 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1137 fwcmd->params.req.reset_stats = reset_stats;
1138 fwcmd->params.req.vport_number = sc->if_id;
1140 mbx.u0.s.embedded = 0; /* stats too large for embedded mbx rsp */
1144 mbx.payload.u0.u1.sgl[0].pa_lo = ADDR_LO(pstats_dma_mem->paddr);
1145 mbx.payload.u0.u1.sgl[0].pa_hi = ADDR_HI(pstats_dma_mem->paddr);
1155 rc = fwcmd->hdr.u0.rsp.status;
1157 device_printf(sc->dev,
1158 "%s failed - cmd status: %d addi status: %d\n",
1160 fwcmd->hdr.u0.rsp.additional_status);
1180 mbx_common_req_hdr_init(&req->hdr, 0, 0,
1193 sgl->pa_hi = htole32(upper_32_bits(pdma_mem->paddr));
1194 sgl->pa_lo = htole32((pdma_mem->paddr) & 0xFFFFFFFF);
1195 sgl->length = htole32(mbx.payload_length);
1201 rc = req->hdr.u0.rsp.status;
1203 device_printf(sc->dev,
1204 "%s failed - cmd status: %d addi status: %d\n",
1206 req->hdr.u0.rsp.additional_status);
1230 sgl->pa_hi = htole32(upper_32_bits(dma_mem->paddr));
1231 sgl->pa_lo = htole32((dma_mem->paddr) & 0xFFFFFFFF);
1232 sgl->length = htole32(req_size);
1251 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1258 fwcmd->params.req.if_id = (uint16_t) if_id;
1259 bcopy(mac_addr, fwcmd->params.req.mac_address, 6);
1266 rc = fwcmd->hdr.u0.rsp.status;
1268 device_printf(sc->dev,
1269 "%s failed - cmd status: %d addi status: %d\n",
1271 fwcmd->hdr.u0.rsp.additional_status);
1274 *pmac_id = fwcmd->params.rsp.pmac_id;
1289 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1296 fwcmd->params.req.if_id = (uint16_t)if_id;
1297 fwcmd->params.req.pmac_id = pmac_id;
1305 rc = fwcmd->hdr.u0.rsp.status;
1307 device_printf(sc->dev,
1308 "%s failed - cmd status: %d addi status: %d\n",
1310 fwcmd->hdr.u0.rsp.additional_status);
1324 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1331 fwcmd->params.req.valid_capability_flags = CAP_SW_TIMESTAMPS |
1334 fwcmd->params.req.capability_flags = CAP_BE3_NATIVE_ERX_API;
1342 rc = fwcmd->hdr.u0.rsp.status;
1344 device_printf(sc->dev,
1345 "%s failed - cmd status: %d addi status: %d\n",
1347 fwcmd->hdr.u0.rsp.additional_status);
1350 sc->be3_native = HOST_32(fwcmd->params.rsp.capability_flags)
1368 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1375 fwcmd->params.req.src_port = port_num;
1376 fwcmd->params.req.dest_port = port_num;
1377 fwcmd->params.req.loopback_type = loopback_type;
1378 fwcmd->params.req.loopback_state = enable;
1386 rc = fwcmd->hdr.u0.rsp.status;
1388 device_printf(sc->dev,
1389 "%s failed - cmd status: %d addi status: %d\n",
1391 fwcmd->hdr.u0.rsp.additional_status);
1410 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1417 fwcmd->params.req.pattern = pattern;
1418 fwcmd->params.req.src_port = port_num;
1419 fwcmd->params.req.dest_port = port_num;
1420 fwcmd->params.req.pkt_size = pkt_size;
1421 fwcmd->params.req.num_pkts = num_pkts;
1422 fwcmd->params.req.loopback_type = loopback_type;
1430 rc = fwcmd->hdr.u0.rsp.status;
1432 device_printf(sc->dev,
1433 "%s failed - cmd status: %d addi status: %d\n",
1435 fwcmd->hdr.u0.rsp.additional_status);
1454 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1461 fwcmd->flash_op_type = LE_32(optype);
1462 fwcmd->flash_op_code = LE_32(opcode);
1463 fwcmd->data_buffer_size = LE_32(num_bytes);
1470 sgl->pa_hi = upper_32_bits(pdma_mem->paddr);
1471 sgl->pa_lo = pdma_mem->paddr & 0xFFFFFFFF;
1472 sgl->length = payload_len;
1477 rc = fwcmd->hdr.u0.rsp.status;
1479 device_printf(sc->dev,
1480 "%s failed - cmd status: %d addi status: %d\n",
1482 fwcmd->hdr.u0.rsp.additional_status);
1507 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1514 fwcmd->flash_op_type = optype;
1515 fwcmd->flash_op_code = FLASHROM_OPER_REPORT;
1516 fwcmd->data_offset = offset;
1517 fwcmd->data_buffer_size = 0x4;
1525 rc = fwcmd->hdr.u0.rsp.status;
1527 device_printf(sc->dev,
1528 "%s failed - cmd status: %d addi status: %d\n",
1530 fwcmd->hdr.u0.rsp.additional_status);
1533 bcopy(fwcmd->data_buffer, flash_crc, 4);
1549 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1562 rc = fwcmd->hdr.u0.rsp.status;
1564 device_printf(sc->dev,
1565 "%s failed - cmd status: %d addi status: %d\n",
1567 fwcmd->hdr.u0.rsp.additional_status);
1570 phy_info->phy_type = HOST_16(fwcmd->params.rsp.phy_info.phy_type);
1571 phy_info->interface_type =
1572 HOST_16(fwcmd->params.rsp.phy_info.interface_type);
1573 phy_info->auto_speeds_supported =
1574 HOST_16(fwcmd->params.rsp.phy_info.auto_speeds_supported);
1575 phy_info->fixed_speeds_supported =
1576 HOST_16(fwcmd->params.rsp.phy_info.fixed_speeds_supported);
1577 phy_info->misc_params = HOST_32(fwcmd->params.rsp.phy_info.misc_params);
1601 mbx_common_req_hdr_init(&fwcmd->params.req.hdr, 0, 0,
1608 fwcmd->params.req.write_length = data_size;
1610 fwcmd->params.req.eof = 1;
1612 fwcmd->params.req.eof = 0;
1614 strcpy(fwcmd->params.req.object_name, "/prg");
1615 fwcmd->params.req.descriptor_count = 1;
1616 fwcmd->params.req.write_offset = data_offset;
1617 fwcmd->params.req.buffer_length = data_size;
1618 fwcmd->params.req.address_lower = pdma_mem->paddr & 0xFFFFFFFF;
1619 fwcmd->params.req.address_upper = upper_32_bits(pdma_mem->paddr);
1624 rc = fwcmd->params.rsp.status;
1626 device_printf(sc->dev,
1627 "%s failed - cmd status: %d addi status: %d\n",
1629 fwcmd->params.rsp.additional_status);
1632 *written_data = HOST_32(fwcmd->params.rsp.actual_write_length);
1633 *additional_status = fwcmd->params.rsp.additional_status;
1645 POCE_SOFTC sc = rq->parent;
1648 if (rq->qstate == QCREATED)
1654 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1661 num_pages = oce_page_list(rq->ring, &fwcmd->params.req.pages[0]);
1664 fwcmd->params.req.frag_size = rq->cfg.frag_size/2048;
1665 fwcmd->params.req.page_size = 1;
1666 fwcmd->hdr.u0.req.version = OCE_MBX_VER_V1;
1668 fwcmd->params.req.frag_size = OCE_LOG2(rq->cfg.frag_size);
1669 fwcmd->params.req.num_pages = num_pages;
1670 fwcmd->params.req.cq_id = rq->cq->cq_id;
1671 fwcmd->params.req.if_id = sc->if_id;
1672 fwcmd->params.req.max_frame_size = rq->cfg.mtu;
1673 fwcmd->params.req.is_rss_queue = rq->cfg.is_rss_queue;
1680 rc = fwcmd->hdr.u0.rsp.status;
1682 device_printf(sc->dev,
1683 "%s failed - cmd status: %d addi status: %d\n",
1685 fwcmd->hdr.u0.rsp.additional_status);
1688 rq->rq_id = HOST_16(fwcmd->params.rsp.rq_id);
1689 rq->rss_cpuid = fwcmd->params.rsp.rss_cpuid;
1700 POCE_SOFTC sc = wq->parent;
1715 fwcmd->params.req.if_id = sc->if_id;
1717 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1723 num_pages = oce_page_list(wq->ring, &fwcmd->params.req.pages[0]);
1725 fwcmd->params.req.nic_wq_type = wq->cfg.wq_type;
1726 fwcmd->params.req.num_pages = num_pages;
1727 fwcmd->params.req.wq_size = OCE_LOG2(wq->cfg.q_len) + 1;
1728 fwcmd->params.req.cq_id = wq->cq->cq_id;
1729 fwcmd->params.req.ulp_num = 1;
1736 rc = fwcmd->hdr.u0.rsp.status;
1738 device_printf(sc->dev,
1739 "%s failed - cmd status: %d addi status: %d\n",
1741 fwcmd->hdr.u0.rsp.additional_status);
1744 wq->wq_id = HOST_16(fwcmd->params.rsp.wq_id);
1746 wq->db_offset = HOST_32(fwcmd->params.rsp.db_offset);
1748 wq->db_offset = PD_TXULP_DB;
1759 POCE_SOFTC sc = eq->parent;
1767 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1773 num_pages = oce_page_list(eq->ring, &fwcmd->params.req.pages[0]);
1774 fwcmd->params.req.ctx.num_pages = num_pages;
1775 fwcmd->params.req.ctx.valid = 1;
1776 fwcmd->params.req.ctx.size = (eq->eq_cfg.item_size == 4) ? 0 : 1;
1777 fwcmd->params.req.ctx.count = OCE_LOG2(eq->eq_cfg.q_len / 256);
1778 fwcmd->params.req.ctx.armed = 0;
1779 fwcmd->params.req.ctx.delay_mult = eq->eq_cfg.cur_eqd;
1786 rc = fwcmd->hdr.u0.rsp.status;
1788 device_printf(sc->dev,
1789 "%s failed - cmd status: %d addi status: %d\n",
1791 fwcmd->hdr.u0.rsp.additional_status);
1794 eq->eq_id = HOST_16(fwcmd->params.rsp.eq_id);
1804 POCE_SOFTC sc = cq->parent;
1819 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1826 ctx = &fwcmd->params.req.cq_ctx;
1828 num_pages = oce_page_list(cq->ring, &fwcmd->params.req.pages[0]);
1832 ctx->v2.num_pages = LE_16(num_pages);
1833 ctx->v2.page_size = page_size;
1834 ctx->v2.eventable = is_eventable;
1835 ctx->v2.valid = 1;
1836 ctx->v2.count = OCE_LOG2(cq->cq_cfg.q_len / 256);
1837 ctx->v2.nodelay = cq->cq_cfg.nodelay;
1838 ctx->v2.coalesce_wm = ncoalesce;
1839 ctx->v2.armed = 0;
1840 ctx->v2.eq_id = cq->eq->eq_id;
1841 if (ctx->v2.count == 3) {
1842 if ((u_int)cq->cq_cfg.q_len > (4*1024)-1)
1843 ctx->v2.cqe_count = (4*1024)-1;
1845 ctx->v2.cqe_count = cq->cq_cfg.q_len;
1848 ctx->v0.num_pages = LE_16(num_pages);
1849 ctx->v0.eventable = is_eventable;
1850 ctx->v0.valid = 1;
1851 ctx->v0.count = OCE_LOG2(cq->cq_cfg.q_len / 256);
1852 ctx->v0.nodelay = cq->cq_cfg.nodelay;
1853 ctx->v0.coalesce_wm = ncoalesce;
1854 ctx->v0.armed = 0;
1855 ctx->v0.eq_id = cq->eq->eq_id;
1863 rc = fwcmd->hdr.u0.rsp.status;
1865 device_printf(sc->dev,
1866 "%s failed - cmd status: %d addi status: %d\n",
1868 fwcmd->hdr.u0.rsp.additional_status);
1871 cq->cq_id = HOST_16(fwcmd->params.rsp.cq_id);
1895 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1907 sgl->pa_hi = htole32(upper_32_bits(dma.paddr));
1908 sgl->pa_lo = htole32((dma.paddr) & 0xFFFFFFFF);
1909 sgl->length = htole32(mbx.payload_length);
1912 fwcmd->params.req.port = LE_32(sc->port_id);
1913 fwcmd->params.req.page_num = LE_32(page_num);
1918 rc = fwcmd->hdr.u0.rsp.status;
1920 device_printf(sc->dev,
1921 "%s failed - cmd status: %d addi status: %d\n",
1923 fwcmd->hdr.u0.rsp.additional_status);
1926 if(fwcmd->params.rsp.page_num == PAGE_NUM_A0)
1928 bcopy((char *)fwcmd->params.rsp.page_data,
1933 if(fwcmd->params.rsp.page_num == PAGE_NUM_A2)
1935 bcopy((char *)fwcmd->params.rsp.page_data,
1957 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
1968 fwcmd->params.req.num_eq = num;
1970 fwcmd->params.req.delay[i].eq_id =
1972 fwcmd->params.req.delay[i].phase = 0;
1973 fwcmd->params.req.delay[i].dm =
1981 rc = fwcmd->hdr.u0.rsp.status;
1983 device_printf(sc->dev,
1984 "%s failed - cmd status: %d addi status: %d\n",
1986 fwcmd->hdr.u0.rsp.additional_status);
2004 return -1;
2021 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
2032 sgl->pa_hi = htole32(upper_32_bits(dma.paddr));
2033 sgl->pa_lo = htole32((dma.paddr) & 0xFFFFFFFF);
2034 sgl->length = htole32(mbx.payload_length);
2037 fwcmd->params.req.type = ACTIVE_PROFILE;
2042 rc = fwcmd->hdr.u0.rsp.status;
2044 device_printf(sc->dev,
2045 "%s failed - cmd status: %d addi status: %d\n",
2047 fwcmd->hdr.u0.rsp.additional_status);
2051 nic_desc = (struct oce_nic_resc_desc *) fwcmd->params.rsp.resources;
2052 desc_count = HOST_32(fwcmd->params.rsp.desc_count);
2054 if ((nic_desc->desc_type == NIC_RESC_DESC_TYPE_V0) ||
2055 (nic_desc->desc_type == NIC_RESC_DESC_TYPE_V1)) {
2060 ((char *)nic_desc + nic_desc->desc_len);
2063 rc = -1;
2067 sc->max_vlans = HOST_16(nic_desc->vlan_count);
2068 sc->nwqs = HOST_16(nic_desc->txq_count);
2069 if (sc->nwqs)
2070 sc->nwqs = MIN(sc->nwqs, OCE_MAX_WQ);
2072 sc->nwqs = OCE_MAX_WQ;
2074 sc->nrssqs = HOST_16(nic_desc->rssq_count);
2075 if (sc->nrssqs)
2076 sc->nrssqs = MIN(sc->nrssqs, max_rss);
2078 sc->nrssqs = max_rss;
2079 sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */
2102 if ((IS_BE(sc) || IS_SH(sc)) && (!sc->be3_native))
2122 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
2133 sgl->pa_hi = htole32(upper_32_bits(dma.paddr));
2134 sgl->pa_lo = htole32((dma.paddr) & 0xFFFFFFFF);
2135 sgl->length = htole32(mbx.payload_length);
2141 rc = fwcmd->hdr.u0.rsp.status;
2143 device_printf(sc->dev,
2144 "%s failed - cmd status: %d addi status: %d\n",
2146 fwcmd->hdr.u0.rsp.additional_status);
2150 nic_desc = (struct oce_nic_resc_desc *) fwcmd->params.rsp.resources;
2151 desc_count = HOST_32(fwcmd->params.rsp.desc_count);
2153 if ((nic_desc->desc_type == NIC_RESC_DESC_TYPE_V0) ||
2154 (nic_desc->desc_type == NIC_RESC_DESC_TYPE_V1)) {
2159 ((char *)nic_desc + nic_desc->desc_len);
2162 rc = -1;
2166 sc->max_vlans = nic_desc->vlan_count;
2167 sc->nwqs = HOST_32(nic_desc->txq_count);
2168 if (sc->nwqs)
2169 sc->nwqs = MIN(sc->nwqs, OCE_MAX_WQ);
2171 sc->nwqs = OCE_MAX_WQ;
2173 sc->nrssqs = HOST_32(nic_desc->rssq_count);
2174 if (sc->nrssqs)
2175 sc->nrssqs = MIN(sc->nrssqs, max_rss);
2177 sc->nrssqs = max_rss;
2178 sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */
2198 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
2209 rc = fwcmd->hdr.u0.rsp.status;
2211 device_printf(sc->dev,
2212 "%s failed - cmd status: %d addi status: %d\n",
2214 fwcmd->hdr.u0.rsp.additional_status);
2219 *lro_flags = HOST_32(fwcmd->params.rsp.lro_flags);
2222 *lro_rq_cnt = HOST_16(fwcmd->params.rsp.lro_rq_cnt);
2237 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
2246 fwcmd->params.req.iface_id = sc->if_id;
2247 fwcmd->params.req.lro_flags = 0;
2250 fwcmd->params.req.lro_flags = LRO_FLAGS_HASH_MODE | LRO_FLAGS_RSS_MODE;
2251 fwcmd->params.req.lro_flags |= LRO_FLAGS_CLSC_IPV4 | LRO_FLAGS_CLSC_IPV6;
2253 fwcmd->params.req.max_clsc_byte_cnt = 64*1024; /* min = 2974, max = 0xfa59 */
2254 fwcmd->params.req.max_clsc_seg_cnt = 43; /* min = 2, max = 64 */
2255 fwcmd->params.req.max_clsc_usec_delay = 18; /* min = 1, max = 256 */
2256 fwcmd->params.req.min_clsc_frame_byte_cnt = 0; /* min = 1, max = 9014 */
2261 rc = fwcmd->hdr.u0.rsp.status;
2263 device_printf(sc->dev,
2264 "%s failed - cmd status: %d addi status: %d\n",
2266 fwcmd->hdr.u0.rsp.additional_status);
2278 POCE_SOFTC sc = rq->parent;
2281 if (rq->qstate == QCREATED)
2287 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0,
2294 num_pages = oce_page_list(rq->ring, &fwcmd->params.req.pages[0]);
2296 fwcmd->params.req.cq_id = rq->cq->cq_id;
2297 fwcmd->params.req.frag_size = rq->cfg.frag_size/2048;
2298 fwcmd->params.req.num_pages = num_pages;
2300 fwcmd->params.req.if_id = sc->if_id;
2302 fwcmd->params.req.max_frame_size = rq->cfg.mtu;
2303 fwcmd->params.req.page_size = 1;
2304 if(rq->cfg.is_rss_queue) {
2305 fwcmd->params.req.rq_flags = (NIC_RQ_FLAGS_RSS | NIC_RQ_FLAGS_LRO);
2307 device_printf(sc->dev,
2316 rc = fwcmd->hdr.u0.rsp.status;
2318 device_printf(sc->dev,
2319 "%s failed - cmd status: %d addi status: %d\n",
2321 fwcmd->hdr.u0.rsp.additional_status);
2324 rq->rq_id = HOST_16(fwcmd->params.rsp.rq_id);
2325 rq->rss_cpuid = fwcmd->params.rsp.rss_cpuid;