Lines Matching refs:cmd
407 struct ocrdma_delete_q_req *cmd = dev->mbx_cmd; in ocrdma_mbx_delete_q() local
422 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_delete_q()
423 ocrdma_init_mch(&cmd->req, opcode, OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_delete_q()
424 cmd->id = q->id; in ocrdma_mbx_delete_q()
427 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_delete_q()
436 struct ocrdma_create_eq_req *cmd = dev->mbx_cmd; in ocrdma_mbx_create_eq() local
439 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_create_eq()
440 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_EQ, OCRDMA_SUBSYS_COMMON, in ocrdma_mbx_create_eq()
441 sizeof(*cmd)); in ocrdma_mbx_create_eq()
443 cmd->req.rsvd_version = 2; in ocrdma_mbx_create_eq()
444 cmd->num_pages = 4; in ocrdma_mbx_create_eq()
445 cmd->valid = OCRDMA_CREATE_EQ_VALID; in ocrdma_mbx_create_eq()
446 cmd->cnt = 4 << OCRDMA_CREATE_EQ_CNT_SHIFT; in ocrdma_mbx_create_eq()
448 ocrdma_build_q_pages(&cmd->pa[0], cmd->num_pages, eq->q.dma, in ocrdma_mbx_create_eq()
450 status = be_roce_mcc_cmd(dev->nic_info.netdev, cmd, sizeof(*cmd), NULL, in ocrdma_mbx_create_eq()
527 struct ocrdma_create_cq_cmd *cmd = dev->mbx_cmd; in ocrdma_mbx_mq_cq_create() local
531 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_mq_cq_create()
532 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_mq_cq_create()
533 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_mq_cq_create()
535 cmd->req.rsvd_version = OCRDMA_CREATE_CQ_VER2; in ocrdma_mbx_mq_cq_create()
536 cmd->pgsz_pgcnt = (cq->size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_mq_cq_create()
538 cmd->pgsz_pgcnt |= PAGES_4K_SPANNED(cq->va, cq->size); in ocrdma_mbx_mq_cq_create()
540 cmd->ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_mq_cq_create()
541 cmd->eqn = eq->id; in ocrdma_mbx_mq_cq_create()
542 cmd->pdid_cqecnt = cq->size / sizeof(struct ocrdma_mcqe); in ocrdma_mbx_mq_cq_create()
544 ocrdma_build_q_pages(&cmd->pa[0], cq->size / OCRDMA_MIN_Q_PAGE_SIZE, in ocrdma_mbx_mq_cq_create()
547 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_mq_cq_create()
569 struct ocrdma_create_mq_req *cmd = dev->mbx_cmd; in ocrdma_mbx_create_mq() local
573 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_create_mq()
576 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_MQ_EXT, in ocrdma_mbx_create_mq()
577 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_mq()
578 cmd->req.rsvd_version = 1; in ocrdma_mbx_create_mq()
579 cmd->cqid_pages = num_pages; in ocrdma_mbx_create_mq()
580 cmd->cqid_pages |= (cq->id << OCRDMA_CREATE_MQ_CQ_ID_SHIFT); in ocrdma_mbx_create_mq()
581 cmd->async_cqid_valid = OCRDMA_CREATE_MQ_ASYNC_CQ_VALID; in ocrdma_mbx_create_mq()
583 cmd->async_event_bitmap = BIT(OCRDMA_ASYNC_GRP5_EVE_CODE); in ocrdma_mbx_create_mq()
584 cmd->async_event_bitmap |= BIT(OCRDMA_ASYNC_RDMA_EVE_CODE); in ocrdma_mbx_create_mq()
586 cmd->async_event_bitmap |= BIT(OCRDMA_ASYNC_LINK_EVE_CODE); in ocrdma_mbx_create_mq()
588 cmd->async_cqid_ringsize = cq->id; in ocrdma_mbx_create_mq()
589 cmd->async_cqid_ringsize |= (ocrdma_encoded_q_len(mq->len) << in ocrdma_mbx_create_mq()
591 cmd->valid = OCRDMA_CREATE_MQ_VALID; in ocrdma_mbx_create_mq()
592 pa = &cmd->pa[0]; in ocrdma_mbx_create_mq()
596 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_create_mq()
1039 static void ocrdma_post_mqe(struct ocrdma_dev *dev, struct ocrdma_mqe *cmd) in ocrdma_post_mqe() argument
1046 cmd->hdr.tag_lo = dev->mq.sq.head; in ocrdma_post_mqe()
1047 ocrdma_copy_cpu_to_le32(mqe, cmd, sizeof(*mqe)); in ocrdma_post_mqe()
1239 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_fw_ver() local
1242 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_VER, sizeof(*cmd)); in ocrdma_mbx_query_fw_ver()
1243 if (!cmd) in ocrdma_mbx_query_fw_ver()
1245 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_query_fw_ver()
1247 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_query_fw_ver()
1249 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_fw_ver()
1252 rsp = (struct ocrdma_fw_ver_rsp *)cmd; in ocrdma_mbx_query_fw_ver()
1258 kfree(cmd); in ocrdma_mbx_query_fw_ver()
1266 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_fw_config() local
1269 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_CONFIG, sizeof(*cmd)); in ocrdma_mbx_query_fw_config()
1270 if (!cmd) in ocrdma_mbx_query_fw_config()
1272 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_query_fw_config()
1274 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_query_fw_config()
1275 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_fw_config()
1278 rsp = (struct ocrdma_fw_conf_rsp *)cmd; in ocrdma_mbx_query_fw_config()
1281 kfree(cmd); in ocrdma_mbx_query_fw_config()
1380 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_dev() local
1382 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_CONFIG, sizeof(*cmd)); in ocrdma_mbx_query_dev()
1383 if (!cmd) in ocrdma_mbx_query_dev()
1385 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_dev()
1388 rsp = (struct ocrdma_mbx_query_config *)cmd; in ocrdma_mbx_query_dev()
1391 kfree(cmd); in ocrdma_mbx_query_dev()
1400 struct ocrdma_mqe *cmd; in ocrdma_mbx_get_link_speed() local
1402 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_NTWK_LINK_CONFIG_V1, in ocrdma_mbx_get_link_speed()
1403 sizeof(*cmd)); in ocrdma_mbx_get_link_speed()
1404 if (!cmd) in ocrdma_mbx_get_link_speed()
1406 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_get_link_speed()
1408 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_get_link_speed()
1410 ((struct ocrdma_mbx_hdr *)cmd->u.cmd)->rsvd_version = 0x1; in ocrdma_mbx_get_link_speed()
1412 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_get_link_speed()
1416 rsp = (struct ocrdma_get_link_speed_rsp *)cmd; in ocrdma_mbx_get_link_speed()
1424 kfree(cmd); in ocrdma_mbx_get_link_speed()
1431 struct ocrdma_mqe *cmd; in ocrdma_mbx_get_phy_info() local
1434 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_PHY_DETAILS, sizeof(*cmd)); in ocrdma_mbx_get_phy_info()
1435 if (!cmd) in ocrdma_mbx_get_phy_info()
1438 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_get_phy_info()
1440 sizeof(*cmd)); in ocrdma_mbx_get_phy_info()
1442 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_get_phy_info()
1446 rsp = (struct ocrdma_get_phy_info_rsp *)cmd; in ocrdma_mbx_get_phy_info()
1458 kfree(cmd); in ocrdma_mbx_get_phy_info()
1465 struct ocrdma_alloc_pd *cmd; in ocrdma_mbx_alloc_pd() local
1468 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD, sizeof(*cmd)); in ocrdma_mbx_alloc_pd()
1469 if (!cmd) in ocrdma_mbx_alloc_pd()
1472 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd()
1473 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd()
1476 rsp = (struct ocrdma_alloc_pd_rsp *)cmd; in ocrdma_mbx_alloc_pd()
1487 kfree(cmd); in ocrdma_mbx_alloc_pd()
1494 struct ocrdma_dealloc_pd *cmd; in ocrdma_mbx_dealloc_pd() local
1496 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd()
1497 if (!cmd) in ocrdma_mbx_dealloc_pd()
1499 cmd->id = pd->id; in ocrdma_mbx_dealloc_pd()
1500 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd()
1501 kfree(cmd); in ocrdma_mbx_dealloc_pd()
1510 struct ocrdma_alloc_pd_range *cmd; in ocrdma_mbx_alloc_pd_range() local
1515 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, in ocrdma_mbx_alloc_pd_range()
1516 sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1517 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1519 cmd->pd_count = dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1520 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd_range()
1521 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1522 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1536 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1539 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1540 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1543 cmd->pd_count = dev->attr.max_pd - dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1544 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1545 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1554 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1566 struct ocrdma_dealloc_pd_range *cmd; in ocrdma_mbx_dealloc_pd_range() local
1569 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1570 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1574 cmd->start_pd_id = dev->pd_mgr->pd_norm_start; in ocrdma_mbx_dealloc_pd_range()
1575 cmd->pd_count = dev->pd_mgr->max_normal_pd; in ocrdma_mbx_dealloc_pd_range()
1576 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1580 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1582 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, in ocrdma_mbx_dealloc_pd_range()
1583 sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1584 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1587 cmd->start_pd_id = dev->pd_mgr->pd_dpp_start; in ocrdma_mbx_dealloc_pd_range()
1588 cmd->pd_count = dev->pd_mgr->max_dpp_pd; in ocrdma_mbx_dealloc_pd_range()
1589 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1592 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1648 struct ocrdma_create_ah_tbl *cmd; in ocrdma_mbx_create_ah_tbl() local
1654 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_create_ah_tbl()
1655 if (!cmd) in ocrdma_mbx_create_ah_tbl()
1662 cmd->ah_conf = (OCRDMA_AH_TBL_PAGES << in ocrdma_mbx_create_ah_tbl()
1671 cmd->ah_conf |= (i << OCRDMA_CREATE_AH_PAGE_SIZE_SHIFT) & in ocrdma_mbx_create_ah_tbl()
1675 cmd->ah_conf |= (sizeof(struct ocrdma_av) << in ocrdma_mbx_create_ah_tbl()
1698 cmd->tbl_addr[0].lo = (u32)(dev->av_tbl.pbl.pa & 0xFFFFFFFF); in ocrdma_mbx_create_ah_tbl()
1699 cmd->tbl_addr[0].hi = (u32)upper_32_bits(dev->av_tbl.pbl.pa); in ocrdma_mbx_create_ah_tbl()
1700 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_ah_tbl()
1703 rsp = (struct ocrdma_create_ah_tbl_rsp *)cmd; in ocrdma_mbx_create_ah_tbl()
1705 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1718 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1724 struct ocrdma_delete_ah_tbl *cmd; in ocrdma_mbx_delete_ah_tbl() local
1730 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_delete_ah_tbl()
1731 if (!cmd) in ocrdma_mbx_delete_ah_tbl()
1733 cmd->ahid = dev->av_tbl.ahid; in ocrdma_mbx_delete_ah_tbl()
1735 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_delete_ah_tbl()
1741 kfree(cmd); in ocrdma_mbx_delete_ah_tbl()
1788 struct ocrdma_create_cq *cmd; in ocrdma_mbx_create_cq() local
1814 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_CQ, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1815 if (!cmd) in ocrdma_mbx_create_cq()
1817 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_create_cq()
1818 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1825 cmd->cmd.pgsz_pgcnt = (page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_create_cq()
1827 cmd->cmd.pgsz_pgcnt |= hw_pages; in ocrdma_mbx_create_cq()
1828 cmd->cmd.ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_create_cq()
1831 cmd->cmd.req.rsvd_version = OCRDMA_CREATE_CQ_VER3; in ocrdma_mbx_create_cq()
1836 cmd->cmd.ev_cnt_flags |= (0x3 << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1852 cmd->cmd.ev_cnt_flags |= (count << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1855 cmd->cmd.eqn = cq->eqn; in ocrdma_mbx_create_cq()
1858 cmd->cmd.pgsz_pgcnt |= OCRDMA_CREATE_CQ_DPP << in ocrdma_mbx_create_cq()
1861 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size); in ocrdma_mbx_create_cq()
1863 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size) - 1; in ocrdma_mbx_create_cq()
1864 cmd->cmd.ev_cnt_flags |= OCRDMA_CREATE_CQ_FLAGS_AUTO_VALID; in ocrdma_mbx_create_cq()
1869 cmd->cmd.pdid_cqecnt |= (pd_id << in ocrdma_mbx_create_cq()
1871 ocrdma_build_q_pages(&cmd->cmd.pa[0], hw_pages, cq->pa, page_size); in ocrdma_mbx_create_cq()
1872 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_cq()
1876 rsp = (struct ocrdma_create_cq_rsp *)cmd; in ocrdma_mbx_create_cq()
1878 kfree(cmd); in ocrdma_mbx_create_cq()
1884 kfree(cmd); in ocrdma_mbx_create_cq()
1890 struct ocrdma_destroy_cq *cmd; in ocrdma_mbx_destroy_cq() local
1892 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_CQ, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1893 if (!cmd) in ocrdma_mbx_destroy_cq()
1895 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_DELETE_CQ, in ocrdma_mbx_destroy_cq()
1896 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1898 cmd->bypass_flush_qid |= in ocrdma_mbx_destroy_cq()
1902 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_cq()
1905 kfree(cmd); in ocrdma_mbx_destroy_cq()
1912 struct ocrdma_alloc_lkey *cmd; in ocrdma_mbx_alloc_lkey() local
1915 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_LKEY, sizeof(*cmd)); in ocrdma_mbx_alloc_lkey()
1916 if (!cmd) in ocrdma_mbx_alloc_lkey()
1918 cmd->pdid = pdid; in ocrdma_mbx_alloc_lkey()
1919 cmd->pbl_sz_flags |= addr_check; in ocrdma_mbx_alloc_lkey()
1920 cmd->pbl_sz_flags |= (hwmr->fr_mr << OCRDMA_ALLOC_LKEY_FMR_SHIFT); in ocrdma_mbx_alloc_lkey()
1921 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1923 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1925 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1927 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1929 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1932 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_lkey()
1935 rsp = (struct ocrdma_alloc_lkey_rsp *)cmd; in ocrdma_mbx_alloc_lkey()
1938 kfree(cmd); in ocrdma_mbx_alloc_lkey()
1945 struct ocrdma_dealloc_lkey *cmd; in ocrdma_mbx_dealloc_lkey() local
1947 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_LKEY, sizeof(*cmd)); in ocrdma_mbx_dealloc_lkey()
1948 if (!cmd) in ocrdma_mbx_dealloc_lkey()
1950 cmd->lkey = lkey; in ocrdma_mbx_dealloc_lkey()
1951 cmd->rsvd_frmr = fr_mr ? 1 : 0; in ocrdma_mbx_dealloc_lkey()
1952 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_lkey()
1954 kfree(cmd); in ocrdma_mbx_dealloc_lkey()
1963 struct ocrdma_reg_nsmr *cmd; in ocrdma_mbx_reg_mr() local
1967 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR, sizeof(*cmd)); in ocrdma_mbx_reg_mr()
1968 if (!cmd) in ocrdma_mbx_reg_mr()
1970 cmd->num_pbl_pdid = in ocrdma_mbx_reg_mr()
1972 cmd->fr_mr = hwmr->fr_mr; in ocrdma_mbx_reg_mr()
1974 cmd->flags_hpage_pbe_sz |= (hwmr->remote_wr << in ocrdma_mbx_reg_mr()
1976 cmd->flags_hpage_pbe_sz |= (hwmr->remote_rd << in ocrdma_mbx_reg_mr()
1978 cmd->flags_hpage_pbe_sz |= (hwmr->local_wr << in ocrdma_mbx_reg_mr()
1980 cmd->flags_hpage_pbe_sz |= (hwmr->remote_atomic << in ocrdma_mbx_reg_mr()
1982 cmd->flags_hpage_pbe_sz |= (hwmr->mw_bind << in ocrdma_mbx_reg_mr()
1984 cmd->flags_hpage_pbe_sz |= (last << OCRDMA_REG_NSMR_LAST_SHIFT); in ocrdma_mbx_reg_mr()
1986 cmd->flags_hpage_pbe_sz |= (hwmr->pbe_size / OCRDMA_MIN_HPAGE_SIZE); in ocrdma_mbx_reg_mr()
1987 cmd->flags_hpage_pbe_sz |= (hwmr->pbl_size / OCRDMA_MIN_HPAGE_SIZE) << in ocrdma_mbx_reg_mr()
1989 cmd->totlen_low = hwmr->len; in ocrdma_mbx_reg_mr()
1990 cmd->totlen_high = upper_32_bits(hwmr->len); in ocrdma_mbx_reg_mr()
1991 cmd->fbo_low = lower_32_bits(fbo); in ocrdma_mbx_reg_mr()
1992 cmd->fbo_high = upper_32_bits(fbo); in ocrdma_mbx_reg_mr()
1993 cmd->va_loaddr = (u32) hwmr->va; in ocrdma_mbx_reg_mr()
1994 cmd->va_hiaddr = (u32) upper_32_bits(hwmr->va); in ocrdma_mbx_reg_mr()
1997 cmd->pbl[i].lo = (u32) (hwmr->pbl_table[i].pa & 0xffffffff); in ocrdma_mbx_reg_mr()
1998 cmd->pbl[i].hi = upper_32_bits(hwmr->pbl_table[i].pa); in ocrdma_mbx_reg_mr()
2000 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr()
2003 rsp = (struct ocrdma_reg_nsmr_rsp *)cmd; in ocrdma_mbx_reg_mr()
2006 kfree(cmd); in ocrdma_mbx_reg_mr()
2016 struct ocrdma_reg_nsmr_cont *cmd; in ocrdma_mbx_reg_mr_cont() local
2018 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR_CONT, sizeof(*cmd)); in ocrdma_mbx_reg_mr_cont()
2019 if (!cmd) in ocrdma_mbx_reg_mr_cont()
2021 cmd->lrkey = hwmr->lkey; in ocrdma_mbx_reg_mr_cont()
2022 cmd->num_pbl_offset = (pbl_cnt << OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT) | in ocrdma_mbx_reg_mr_cont()
2024 cmd->last = last << OCRDMA_REG_NSMR_CONT_LAST_SHIFT; in ocrdma_mbx_reg_mr_cont()
2027 cmd->pbl[i].lo = in ocrdma_mbx_reg_mr_cont()
2029 cmd->pbl[i].hi = in ocrdma_mbx_reg_mr_cont()
2032 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr_cont()
2034 kfree(cmd); in ocrdma_mbx_reg_mr_cont()
2181 static int ocrdma_set_create_qp_sq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_sq_cmd() argument
2214 ocrdma_build_q_pages(&cmd->wq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_sq_cmd()
2216 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_set_create_qp_sq_cmd()
2218 cmd->num_wq_rq_pages |= (hw_pages << in ocrdma_set_create_qp_sq_cmd()
2221 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2224 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2227 cmd->max_wqe_rqe |= (ilog2(qp->sq.max_cnt) << in ocrdma_set_create_qp_sq_cmd()
2230 cmd->wqe_rqe_size |= (dev->attr.wqe_size << in ocrdma_set_create_qp_sq_cmd()
2236 static int ocrdma_set_create_qp_rq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_rq_cmd() argument
2265 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_rq_cmd()
2266 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_set_create_qp_rq_cmd()
2268 cmd->num_wq_rq_pages |= in ocrdma_set_create_qp_rq_cmd()
2271 cmd->max_sge_recv_flags |= (attrs->cap.max_recv_sge << in ocrdma_set_create_qp_rq_cmd()
2274 cmd->max_wqe_rqe |= (ilog2(qp->rq.max_cnt) << in ocrdma_set_create_qp_rq_cmd()
2277 cmd->wqe_rqe_size |= (dev->attr.rqe_size << in ocrdma_set_create_qp_rq_cmd()
2283 static void ocrdma_set_create_qp_dpp_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_dpp_cmd() argument
2290 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2293 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2294 cmd->dpp_credits_cqid = dpp_cq_id; in ocrdma_set_create_qp_dpp_cmd()
2295 cmd->dpp_credits_cqid |= OCRDMA_CREATE_QP_REQ_DPP_CREDIT_LIMIT << in ocrdma_set_create_qp_dpp_cmd()
2299 static int ocrdma_set_create_qp_ird_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_ird_cmd() argument
2318 ocrdma_build_q_pages(&cmd->ird_addr[0], dev->attr.num_ird_pages, in ocrdma_set_create_qp_ird_cmd()
2377 struct ocrdma_create_qp_req *cmd; in ocrdma_mbx_create_qp() local
2395 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_QP, sizeof(*cmd)); in ocrdma_mbx_create_qp()
2396 if (!cmd) in ocrdma_mbx_create_qp()
2398 cmd->type_pgsz_pdn |= (qptype << OCRDMA_CREATE_QP_REQ_QPT_SHIFT) & in ocrdma_mbx_create_qp()
2400 status = ocrdma_set_create_qp_sq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2406 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_USE_SRQ_MASK; in ocrdma_mbx_create_qp()
2407 cmd->rq_addr[0].lo = srq->id; in ocrdma_mbx_create_qp()
2410 status = ocrdma_set_create_qp_rq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2415 status = ocrdma_set_create_qp_ird_cmd(cmd, qp); in ocrdma_mbx_create_qp()
2419 cmd->type_pgsz_pdn |= (pd->id << OCRDMA_CREATE_QP_REQ_PD_ID_SHIFT) & in ocrdma_mbx_create_qp()
2424 cmd->max_sge_recv_flags |= flags; in ocrdma_mbx_create_qp()
2425 cmd->max_ord_ird |= (dev->attr.max_ord_per_qp << in ocrdma_mbx_create_qp()
2428 cmd->max_ord_ird |= (dev->attr.max_ird_per_qp << in ocrdma_mbx_create_qp()
2432 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2436 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2442 ocrdma_set_create_qp_dpp_cmd(cmd, pd, qp, enable_dpp_cq, in ocrdma_mbx_create_qp()
2446 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_qp()
2449 rsp = (struct ocrdma_create_qp_rsp *)cmd; in ocrdma_mbx_create_qp()
2452 kfree(cmd); in ocrdma_mbx_create_qp()
2462 kfree(cmd); in ocrdma_mbx_create_qp()
2470 struct ocrdma_query_qp *cmd; in ocrdma_mbx_query_qp() local
2473 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_QP, sizeof(*rsp)); in ocrdma_mbx_query_qp()
2474 if (!cmd) in ocrdma_mbx_query_qp()
2476 cmd->qp_id = qp->id; in ocrdma_mbx_query_qp()
2477 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_qp()
2480 rsp = (struct ocrdma_query_qp_rsp *)cmd; in ocrdma_mbx_query_qp()
2483 kfree(cmd); in ocrdma_mbx_query_qp()
2488 struct ocrdma_modify_qp *cmd, in ocrdma_set_av_params() argument
2509 cmd->params.tclass_sq_psn |= in ocrdma_set_av_params()
2511 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2513 cmd->params.rnt_rc_sl_fl |= (rdma_ah_get_sl(ah_attr) << in ocrdma_set_av_params()
2515 cmd->params.hop_lmt_rq_psn |= in ocrdma_set_av_params()
2517 cmd->flags |= OCRDMA_QP_PARA_FLOW_LBL_VALID; in ocrdma_set_av_params()
2520 memcpy(&cmd->params.dgid[0], &grh->dgid.raw[0], in ocrdma_set_av_params()
2521 sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2529 memcpy(&cmd->params.sgid[0], &sgid_attr->gid.raw[0], in ocrdma_set_av_params()
2530 sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2535 cmd->params.dmac_b0_to_b3 = mac_addr[0] | (mac_addr[1] << 8) | in ocrdma_set_av_params()
2542 memcpy(&cmd->params.dgid[0], in ocrdma_set_av_params()
2544 memcpy(&cmd->params.sgid[0], in ocrdma_set_av_params()
2548 ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2549 ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2550 cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); in ocrdma_set_av_params()
2561 cmd->params.vlan_dmac_b4_to_b5 |= in ocrdma_set_av_params()
2563 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; in ocrdma_set_av_params()
2564 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2567 cmd->params.max_sge_recv_flags |= ((hdr_type << in ocrdma_set_av_params()
2574 struct ocrdma_modify_qp *cmd, in ocrdma_set_qp_params() argument
2581 cmd->params.path_mtu_pkey_indx |= (attrs->pkey_index & in ocrdma_set_qp_params()
2583 cmd->flags |= OCRDMA_QP_PARA_PKEY_VALID; in ocrdma_set_qp_params()
2587 cmd->params.qkey = attrs->qkey; in ocrdma_set_qp_params()
2588 cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; in ocrdma_set_qp_params()
2591 status = ocrdma_set_av_params(qp, cmd, attrs, attr_mask); in ocrdma_set_qp_params()
2596 cmd->params.dmac_b0_to_b3 = dev->nic_info.mac_addr[0] | in ocrdma_set_qp_params()
2600 cmd->params.vlan_dmac_b4_to_b5 = dev->nic_info.mac_addr[4] | in ocrdma_set_qp_params()
2605 cmd->params.max_sge_recv_flags |= in ocrdma_set_qp_params()
2607 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2610 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->dest_qp_num & in ocrdma_set_qp_params()
2612 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2622 cmd->params.path_mtu_pkey_indx |= in ocrdma_set_qp_params()
2626 cmd->flags |= OCRDMA_QP_PARA_PMTU_VALID; in ocrdma_set_qp_params()
2629 cmd->params.ack_to_rnr_rtc_dest_qpn |= attrs->timeout << in ocrdma_set_qp_params()
2631 cmd->flags |= OCRDMA_QP_PARA_ACK_TO_VALID; in ocrdma_set_qp_params()
2634 cmd->params.rnt_rc_sl_fl |= (attrs->retry_cnt << in ocrdma_set_qp_params()
2637 cmd->flags |= OCRDMA_QP_PARA_RETRY_CNT_VALID; in ocrdma_set_qp_params()
2640 cmd->params.rnt_rc_sl_fl |= (attrs->min_rnr_timer << in ocrdma_set_qp_params()
2643 cmd->flags |= OCRDMA_QP_PARA_RNT_VALID; in ocrdma_set_qp_params()
2646 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->rnr_retry << in ocrdma_set_qp_params()
2649 cmd->flags |= OCRDMA_QP_PARA_RRC_VALID; in ocrdma_set_qp_params()
2652 cmd->params.tclass_sq_psn |= (attrs->sq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2653 cmd->flags |= OCRDMA_QP_PARA_SQPSN_VALID; in ocrdma_set_qp_params()
2656 cmd->params.hop_lmt_rq_psn |= (attrs->rq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2657 cmd->flags |= OCRDMA_QP_PARA_RQPSN_VALID; in ocrdma_set_qp_params()
2665 cmd->flags |= OCRDMA_QP_PARA_MAX_ORD_VALID; in ocrdma_set_qp_params()
2673 cmd->flags |= OCRDMA_QP_PARA_MAX_IRD_VALID; in ocrdma_set_qp_params()
2675 cmd->params.max_ord_ird = (qp->max_ord << in ocrdma_set_qp_params()
2686 struct ocrdma_modify_qp *cmd; in ocrdma_mbx_modify_qp() local
2688 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_QP, sizeof(*cmd)); in ocrdma_mbx_modify_qp()
2689 if (!cmd) in ocrdma_mbx_modify_qp()
2692 cmd->params.id = qp->id; in ocrdma_mbx_modify_qp()
2693 cmd->flags = 0; in ocrdma_mbx_modify_qp()
2695 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2699 cmd->flags |= OCRDMA_QP_PARA_QPS_VALID; in ocrdma_mbx_modify_qp()
2701 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2706 status = ocrdma_set_qp_params(qp, cmd, attrs, attr_mask); in ocrdma_mbx_modify_qp()
2709 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_qp()
2714 kfree(cmd); in ocrdma_mbx_modify_qp()
2721 struct ocrdma_destroy_qp *cmd; in ocrdma_mbx_destroy_qp() local
2724 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_QP, sizeof(*cmd)); in ocrdma_mbx_destroy_qp()
2725 if (!cmd) in ocrdma_mbx_destroy_qp()
2727 cmd->qp_id = qp->id; in ocrdma_mbx_destroy_qp()
2728 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_qp()
2733 kfree(cmd); in ocrdma_mbx_destroy_qp()
2751 struct ocrdma_create_srq *cmd; in ocrdma_mbx_create_srq() local
2756 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_SRQ, sizeof(*cmd)); in ocrdma_mbx_create_srq()
2757 if (!cmd) in ocrdma_mbx_create_srq()
2760 cmd->pgsz_pdid = pd->id & OCRDMA_CREATE_SRQ_PD_ID_MASK; in ocrdma_mbx_create_srq()
2777 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_mbx_create_srq()
2784 cmd->max_sge_rqe = ilog2(max_rqe_allocated); in ocrdma_mbx_create_srq()
2785 cmd->max_sge_rqe |= srq_attr->attr.max_sge << in ocrdma_mbx_create_srq()
2788 cmd->pgsz_pdid |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_mbx_create_srq()
2790 cmd->pages_rqe_sz |= (dev->attr.rqe_size in ocrdma_mbx_create_srq()
2793 cmd->pages_rqe_sz |= hw_pages << OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT; in ocrdma_mbx_create_srq()
2795 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_srq()
2798 rsp = (struct ocrdma_create_srq_rsp *)cmd; in ocrdma_mbx_create_srq()
2814 kfree(cmd); in ocrdma_mbx_create_srq()
2821 struct ocrdma_modify_srq *cmd; in ocrdma_mbx_modify_srq() local
2825 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_SRQ, sizeof(*cmd)); in ocrdma_mbx_modify_srq()
2826 if (!cmd) in ocrdma_mbx_modify_srq()
2828 cmd->id = srq->id; in ocrdma_mbx_modify_srq()
2829 cmd->limit_max_rqe |= srq_attr->srq_limit << in ocrdma_mbx_modify_srq()
2831 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_srq()
2832 kfree(cmd); in ocrdma_mbx_modify_srq()
2839 struct ocrdma_query_srq *cmd; in ocrdma_mbx_query_srq() local
2842 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_SRQ, sizeof(*cmd)); in ocrdma_mbx_query_srq()
2843 if (!cmd) in ocrdma_mbx_query_srq()
2845 cmd->id = srq->rq.dbid; in ocrdma_mbx_query_srq()
2846 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_srq()
2849 (struct ocrdma_query_srq_rsp *)cmd; in ocrdma_mbx_query_srq()
2858 kfree(cmd); in ocrdma_mbx_query_srq()
2864 struct ocrdma_destroy_srq *cmd; in ocrdma_mbx_destroy_srq() local
2866 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_SRQ, sizeof(*cmd)); in ocrdma_mbx_destroy_srq()
2867 if (!cmd) in ocrdma_mbx_destroy_srq()
2869 cmd->id = srq->id; in ocrdma_mbx_destroy_srq()
2870 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_srq()
2874 kfree(cmd); in ocrdma_mbx_destroy_srq()
2882 struct ocrdma_mqe cmd; in ocrdma_mbx_get_dcbx_config() local
2887 struct ocrdma_mqe_sge *mqe_sge = cmd.u.nonemb_req.sge; in ocrdma_mbx_get_dcbx_config()
2889 memset(&cmd, 0, sizeof(struct ocrdma_mqe)); in ocrdma_mbx_get_dcbx_config()
2890 cmd.hdr.pyld_len = max_t (u32, sizeof(struct ocrdma_get_dcbx_cfg_rsp), in ocrdma_mbx_get_dcbx_config()
2892 req = dma_alloc_coherent(&pdev->dev, cmd.hdr.pyld_len, &pa, GFP_KERNEL); in ocrdma_mbx_get_dcbx_config()
2898 cmd.hdr.spcl_sge_cnt_emb |= (1 << OCRDMA_MQE_HDR_SGE_CNT_SHIFT) & in ocrdma_mbx_get_dcbx_config()
2902 mqe_sge->len = cmd.hdr.pyld_len; in ocrdma_mbx_get_dcbx_config()
2905 OCRDMA_SUBSYS_DCBX, cmd.hdr.pyld_len); in ocrdma_mbx_get_dcbx_config()
2908 status = ocrdma_mbx_cmd(dev, &cmd); in ocrdma_mbx_get_dcbx_config()
2917 dma_free_coherent(&pdev->dev, cmd.hdr.pyld_len, req, pa); in ocrdma_mbx_get_dcbx_config()
3121 struct ocrdma_modify_eqd_req *cmd; in ocrdma_mbx_modify_eqd() local
3123 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_EQ_DELAY, sizeof(*cmd)); in ocrdma_mbx_modify_eqd()
3124 if (!cmd) in ocrdma_mbx_modify_eqd()
3127 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_MODIFY_EQ_DELAY, in ocrdma_mbx_modify_eqd()
3128 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_modify_eqd()
3130 cmd->cmd.num_eq = num; in ocrdma_mbx_modify_eqd()
3132 cmd->cmd.set_eqd[i].eq_id = eq[i].q.id; in ocrdma_mbx_modify_eqd()
3133 cmd->cmd.set_eqd[i].phase = 0; in ocrdma_mbx_modify_eqd()
3134 cmd->cmd.set_eqd[i].delay_multiplier = in ocrdma_mbx_modify_eqd()
3137 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_eqd()
3139 kfree(cmd); in ocrdma_mbx_modify_eqd()