Lines Matching full: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()
1509 struct ocrdma_alloc_pd_range *cmd; in ocrdma_mbx_alloc_pd_range() local
1514 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, in ocrdma_mbx_alloc_pd_range()
1515 sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1516 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1518 cmd->pd_count = dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1519 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd_range()
1520 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1521 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1533 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1536 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1537 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1540 cmd->pd_count = dev->attr.max_pd - dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1541 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1542 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1550 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1562 struct ocrdma_dealloc_pd_range *cmd; in ocrdma_mbx_dealloc_pd_range() local
1565 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1566 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1570 cmd->start_pd_id = dev->pd_mgr->pd_norm_start; in ocrdma_mbx_dealloc_pd_range()
1571 cmd->pd_count = dev->pd_mgr->max_normal_pd; in ocrdma_mbx_dealloc_pd_range()
1572 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1576 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1578 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, in ocrdma_mbx_dealloc_pd_range()
1579 sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1580 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1583 cmd->start_pd_id = dev->pd_mgr->pd_dpp_start; in ocrdma_mbx_dealloc_pd_range()
1584 cmd->pd_count = dev->pd_mgr->max_dpp_pd; in ocrdma_mbx_dealloc_pd_range()
1585 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1588 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1644 struct ocrdma_create_ah_tbl *cmd; in ocrdma_mbx_create_ah_tbl() local
1650 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_create_ah_tbl()
1651 if (!cmd) in ocrdma_mbx_create_ah_tbl()
1658 cmd->ah_conf = (OCRDMA_AH_TBL_PAGES << in ocrdma_mbx_create_ah_tbl()
1667 cmd->ah_conf |= (i << OCRDMA_CREATE_AH_PAGE_SIZE_SHIFT) & in ocrdma_mbx_create_ah_tbl()
1671 cmd->ah_conf |= (sizeof(struct ocrdma_av) << in ocrdma_mbx_create_ah_tbl()
1694 cmd->tbl_addr[0].lo = (u32)(dev->av_tbl.pbl.pa & 0xFFFFFFFF); in ocrdma_mbx_create_ah_tbl()
1695 cmd->tbl_addr[0].hi = (u32)upper_32_bits(dev->av_tbl.pbl.pa); in ocrdma_mbx_create_ah_tbl()
1696 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_ah_tbl()
1699 rsp = (struct ocrdma_create_ah_tbl_rsp *)cmd; in ocrdma_mbx_create_ah_tbl()
1701 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1714 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1720 struct ocrdma_delete_ah_tbl *cmd; in ocrdma_mbx_delete_ah_tbl() local
1726 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_delete_ah_tbl()
1727 if (!cmd) in ocrdma_mbx_delete_ah_tbl()
1729 cmd->ahid = dev->av_tbl.ahid; in ocrdma_mbx_delete_ah_tbl()
1731 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_delete_ah_tbl()
1737 kfree(cmd); in ocrdma_mbx_delete_ah_tbl()
1784 struct ocrdma_create_cq *cmd; in ocrdma_mbx_create_cq() local
1810 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_CQ, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1811 if (!cmd) in ocrdma_mbx_create_cq()
1813 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_create_cq()
1814 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1821 cmd->cmd.pgsz_pgcnt = (page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_create_cq()
1823 cmd->cmd.pgsz_pgcnt |= hw_pages; in ocrdma_mbx_create_cq()
1824 cmd->cmd.ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_create_cq()
1827 cmd->cmd.req.rsvd_version = OCRDMA_CREATE_CQ_VER3; in ocrdma_mbx_create_cq()
1832 cmd->cmd.ev_cnt_flags |= (0x3 << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1848 cmd->cmd.ev_cnt_flags |= (count << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1851 cmd->cmd.eqn = cq->eqn; in ocrdma_mbx_create_cq()
1854 cmd->cmd.pgsz_pgcnt |= OCRDMA_CREATE_CQ_DPP << in ocrdma_mbx_create_cq()
1857 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size); in ocrdma_mbx_create_cq()
1859 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size) - 1; in ocrdma_mbx_create_cq()
1860 cmd->cmd.ev_cnt_flags |= OCRDMA_CREATE_CQ_FLAGS_AUTO_VALID; in ocrdma_mbx_create_cq()
1865 cmd->cmd.pdid_cqecnt |= (pd_id << in ocrdma_mbx_create_cq()
1867 ocrdma_build_q_pages(&cmd->cmd.pa[0], hw_pages, cq->pa, page_size); in ocrdma_mbx_create_cq()
1868 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_cq()
1872 rsp = (struct ocrdma_create_cq_rsp *)cmd; in ocrdma_mbx_create_cq()
1874 kfree(cmd); in ocrdma_mbx_create_cq()
1880 kfree(cmd); in ocrdma_mbx_create_cq()
1886 struct ocrdma_destroy_cq *cmd; in ocrdma_mbx_destroy_cq() local
1888 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_CQ, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1889 if (!cmd) in ocrdma_mbx_destroy_cq()
1891 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_DELETE_CQ, in ocrdma_mbx_destroy_cq()
1892 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1894 cmd->bypass_flush_qid |= in ocrdma_mbx_destroy_cq()
1898 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_cq()
1901 kfree(cmd); in ocrdma_mbx_destroy_cq()
1908 struct ocrdma_alloc_lkey *cmd; in ocrdma_mbx_alloc_lkey() local
1911 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_LKEY, sizeof(*cmd)); in ocrdma_mbx_alloc_lkey()
1912 if (!cmd) in ocrdma_mbx_alloc_lkey()
1914 cmd->pdid = pdid; in ocrdma_mbx_alloc_lkey()
1915 cmd->pbl_sz_flags |= addr_check; in ocrdma_mbx_alloc_lkey()
1916 cmd->pbl_sz_flags |= (hwmr->fr_mr << OCRDMA_ALLOC_LKEY_FMR_SHIFT); in ocrdma_mbx_alloc_lkey()
1917 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1919 cmd->pbl_sz_flags |= 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()
1928 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_lkey()
1931 rsp = (struct ocrdma_alloc_lkey_rsp *)cmd; in ocrdma_mbx_alloc_lkey()
1934 kfree(cmd); in ocrdma_mbx_alloc_lkey()
1941 struct ocrdma_dealloc_lkey *cmd; in ocrdma_mbx_dealloc_lkey() local
1943 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_LKEY, sizeof(*cmd)); in ocrdma_mbx_dealloc_lkey()
1944 if (!cmd) in ocrdma_mbx_dealloc_lkey()
1946 cmd->lkey = lkey; in ocrdma_mbx_dealloc_lkey()
1947 cmd->rsvd_frmr = fr_mr ? 1 : 0; in ocrdma_mbx_dealloc_lkey()
1948 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_lkey()
1950 kfree(cmd); in ocrdma_mbx_dealloc_lkey()
1959 struct ocrdma_reg_nsmr *cmd; in ocrdma_mbx_reg_mr() local
1963 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR, sizeof(*cmd)); in ocrdma_mbx_reg_mr()
1964 if (!cmd) in ocrdma_mbx_reg_mr()
1966 cmd->num_pbl_pdid = in ocrdma_mbx_reg_mr()
1968 cmd->fr_mr = hwmr->fr_mr; in ocrdma_mbx_reg_mr()
1970 cmd->flags_hpage_pbe_sz |= (hwmr->remote_wr << in ocrdma_mbx_reg_mr()
1972 cmd->flags_hpage_pbe_sz |= (hwmr->remote_rd << in ocrdma_mbx_reg_mr()
1974 cmd->flags_hpage_pbe_sz |= (hwmr->local_wr << in ocrdma_mbx_reg_mr()
1976 cmd->flags_hpage_pbe_sz |= (hwmr->remote_atomic << in ocrdma_mbx_reg_mr()
1978 cmd->flags_hpage_pbe_sz |= (hwmr->mw_bind << in ocrdma_mbx_reg_mr()
1980 cmd->flags_hpage_pbe_sz |= (last << OCRDMA_REG_NSMR_LAST_SHIFT); in ocrdma_mbx_reg_mr()
1982 cmd->flags_hpage_pbe_sz |= (hwmr->pbe_size / OCRDMA_MIN_HPAGE_SIZE); in ocrdma_mbx_reg_mr()
1983 cmd->flags_hpage_pbe_sz |= (hwmr->pbl_size / OCRDMA_MIN_HPAGE_SIZE) << in ocrdma_mbx_reg_mr()
1985 cmd->totlen_low = hwmr->len; in ocrdma_mbx_reg_mr()
1986 cmd->totlen_high = upper_32_bits(hwmr->len); in ocrdma_mbx_reg_mr()
1987 cmd->fbo_low = lower_32_bits(fbo); in ocrdma_mbx_reg_mr()
1988 cmd->fbo_high = upper_32_bits(fbo); in ocrdma_mbx_reg_mr()
1989 cmd->va_loaddr = (u32) hwmr->va; in ocrdma_mbx_reg_mr()
1990 cmd->va_hiaddr = (u32) upper_32_bits(hwmr->va); in ocrdma_mbx_reg_mr()
1993 cmd->pbl[i].lo = (u32) (hwmr->pbl_table[i].pa & 0xffffffff); in ocrdma_mbx_reg_mr()
1994 cmd->pbl[i].hi = upper_32_bits(hwmr->pbl_table[i].pa); in ocrdma_mbx_reg_mr()
1996 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr()
1999 rsp = (struct ocrdma_reg_nsmr_rsp *)cmd; in ocrdma_mbx_reg_mr()
2002 kfree(cmd); in ocrdma_mbx_reg_mr()
2012 struct ocrdma_reg_nsmr_cont *cmd; in ocrdma_mbx_reg_mr_cont() local
2014 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR_CONT, sizeof(*cmd)); in ocrdma_mbx_reg_mr_cont()
2015 if (!cmd) in ocrdma_mbx_reg_mr_cont()
2017 cmd->lrkey = hwmr->lkey; in ocrdma_mbx_reg_mr_cont()
2018 cmd->num_pbl_offset = (pbl_cnt << OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT) | in ocrdma_mbx_reg_mr_cont()
2020 cmd->last = last << OCRDMA_REG_NSMR_CONT_LAST_SHIFT; in ocrdma_mbx_reg_mr_cont()
2023 cmd->pbl[i].lo = in ocrdma_mbx_reg_mr_cont()
2025 cmd->pbl[i].hi = in ocrdma_mbx_reg_mr_cont()
2028 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr_cont()
2030 kfree(cmd); in ocrdma_mbx_reg_mr_cont()
2177 static int ocrdma_set_create_qp_sq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_sq_cmd() argument
2210 ocrdma_build_q_pages(&cmd->wq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_sq_cmd()
2212 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_set_create_qp_sq_cmd()
2214 cmd->num_wq_rq_pages |= (hw_pages << in ocrdma_set_create_qp_sq_cmd()
2217 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2220 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2223 cmd->max_wqe_rqe |= (ilog2(qp->sq.max_cnt) << in ocrdma_set_create_qp_sq_cmd()
2226 cmd->wqe_rqe_size |= (dev->attr.wqe_size << in ocrdma_set_create_qp_sq_cmd()
2232 static int ocrdma_set_create_qp_rq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_rq_cmd() argument
2261 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_rq_cmd()
2262 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_set_create_qp_rq_cmd()
2264 cmd->num_wq_rq_pages |= in ocrdma_set_create_qp_rq_cmd()
2267 cmd->max_sge_recv_flags |= (attrs->cap.max_recv_sge << in ocrdma_set_create_qp_rq_cmd()
2270 cmd->max_wqe_rqe |= (ilog2(qp->rq.max_cnt) << in ocrdma_set_create_qp_rq_cmd()
2273 cmd->wqe_rqe_size |= (dev->attr.rqe_size << in ocrdma_set_create_qp_rq_cmd()
2279 static void ocrdma_set_create_qp_dpp_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_dpp_cmd() argument
2286 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2289 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2290 cmd->dpp_credits_cqid = dpp_cq_id; in ocrdma_set_create_qp_dpp_cmd()
2291 cmd->dpp_credits_cqid |= OCRDMA_CREATE_QP_REQ_DPP_CREDIT_LIMIT << in ocrdma_set_create_qp_dpp_cmd()
2295 static int ocrdma_set_create_qp_ird_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_ird_cmd() argument
2314 ocrdma_build_q_pages(&cmd->ird_addr[0], dev->attr.num_ird_pages, in ocrdma_set_create_qp_ird_cmd()
2373 struct ocrdma_create_qp_req *cmd; in ocrdma_mbx_create_qp() local
2391 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_QP, sizeof(*cmd)); in ocrdma_mbx_create_qp()
2392 if (!cmd) in ocrdma_mbx_create_qp()
2394 cmd->type_pgsz_pdn |= (qptype << OCRDMA_CREATE_QP_REQ_QPT_SHIFT) & in ocrdma_mbx_create_qp()
2396 status = ocrdma_set_create_qp_sq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2402 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_USE_SRQ_MASK; in ocrdma_mbx_create_qp()
2403 cmd->rq_addr[0].lo = srq->id; in ocrdma_mbx_create_qp()
2406 status = ocrdma_set_create_qp_rq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2411 status = ocrdma_set_create_qp_ird_cmd(cmd, qp); in ocrdma_mbx_create_qp()
2415 cmd->type_pgsz_pdn |= (pd->id << OCRDMA_CREATE_QP_REQ_PD_ID_SHIFT) & in ocrdma_mbx_create_qp()
2420 cmd->max_sge_recv_flags |= flags; in ocrdma_mbx_create_qp()
2421 cmd->max_ord_ird |= (dev->attr.max_ord_per_qp << in ocrdma_mbx_create_qp()
2424 cmd->max_ord_ird |= (dev->attr.max_ird_per_qp << in ocrdma_mbx_create_qp()
2428 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2432 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2438 ocrdma_set_create_qp_dpp_cmd(cmd, pd, qp, enable_dpp_cq, in ocrdma_mbx_create_qp()
2442 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_qp()
2445 rsp = (struct ocrdma_create_qp_rsp *)cmd; in ocrdma_mbx_create_qp()
2448 kfree(cmd); in ocrdma_mbx_create_qp()
2458 kfree(cmd); in ocrdma_mbx_create_qp()
2466 struct ocrdma_query_qp *cmd; in ocrdma_mbx_query_qp() local
2469 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_QP, sizeof(*rsp)); in ocrdma_mbx_query_qp()
2470 if (!cmd) in ocrdma_mbx_query_qp()
2472 cmd->qp_id = qp->id; in ocrdma_mbx_query_qp()
2473 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_qp()
2476 rsp = (struct ocrdma_query_qp_rsp *)cmd; in ocrdma_mbx_query_qp()
2479 kfree(cmd); in ocrdma_mbx_query_qp()
2484 struct ocrdma_modify_qp *cmd, in ocrdma_set_av_params() argument
2505 cmd->params.tclass_sq_psn |= in ocrdma_set_av_params()
2507 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2509 cmd->params.rnt_rc_sl_fl |= (rdma_ah_get_sl(ah_attr) << in ocrdma_set_av_params()
2511 cmd->params.hop_lmt_rq_psn |= in ocrdma_set_av_params()
2513 cmd->flags |= OCRDMA_QP_PARA_FLOW_LBL_VALID; in ocrdma_set_av_params()
2516 memcpy(&cmd->params.dgid[0], &grh->dgid.raw[0], in ocrdma_set_av_params()
2517 sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2525 memcpy(&cmd->params.sgid[0], &sgid_attr->gid.raw[0], in ocrdma_set_av_params()
2526 sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2531 cmd->params.dmac_b0_to_b3 = mac_addr[0] | (mac_addr[1] << 8) | in ocrdma_set_av_params()
2538 memcpy(&cmd->params.dgid[0], in ocrdma_set_av_params()
2540 memcpy(&cmd->params.sgid[0], in ocrdma_set_av_params()
2544 ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2545 ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2546 cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); in ocrdma_set_av_params()
2557 cmd->params.vlan_dmac_b4_to_b5 |= in ocrdma_set_av_params()
2559 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; in ocrdma_set_av_params()
2560 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2563 cmd->params.max_sge_recv_flags |= ((hdr_type << in ocrdma_set_av_params()
2570 struct ocrdma_modify_qp *cmd, in ocrdma_set_qp_params() argument
2577 cmd->params.path_mtu_pkey_indx |= (attrs->pkey_index & in ocrdma_set_qp_params()
2579 cmd->flags |= OCRDMA_QP_PARA_PKEY_VALID; in ocrdma_set_qp_params()
2583 cmd->params.qkey = attrs->qkey; in ocrdma_set_qp_params()
2584 cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; in ocrdma_set_qp_params()
2587 status = ocrdma_set_av_params(qp, cmd, attrs, attr_mask); in ocrdma_set_qp_params()
2592 cmd->params.dmac_b0_to_b3 = dev->nic_info.mac_addr[0] | in ocrdma_set_qp_params()
2596 cmd->params.vlan_dmac_b4_to_b5 = dev->nic_info.mac_addr[4] | in ocrdma_set_qp_params()
2601 cmd->params.max_sge_recv_flags |= in ocrdma_set_qp_params()
2603 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2606 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->dest_qp_num & in ocrdma_set_qp_params()
2608 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2618 cmd->params.path_mtu_pkey_indx |= in ocrdma_set_qp_params()
2622 cmd->flags |= OCRDMA_QP_PARA_PMTU_VALID; in ocrdma_set_qp_params()
2625 cmd->params.ack_to_rnr_rtc_dest_qpn |= attrs->timeout << in ocrdma_set_qp_params()
2627 cmd->flags |= OCRDMA_QP_PARA_ACK_TO_VALID; in ocrdma_set_qp_params()
2630 cmd->params.rnt_rc_sl_fl |= (attrs->retry_cnt << in ocrdma_set_qp_params()
2633 cmd->flags |= OCRDMA_QP_PARA_RETRY_CNT_VALID; in ocrdma_set_qp_params()
2636 cmd->params.rnt_rc_sl_fl |= (attrs->min_rnr_timer << in ocrdma_set_qp_params()
2639 cmd->flags |= OCRDMA_QP_PARA_RNT_VALID; in ocrdma_set_qp_params()
2642 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->rnr_retry << in ocrdma_set_qp_params()
2645 cmd->flags |= OCRDMA_QP_PARA_RRC_VALID; in ocrdma_set_qp_params()
2648 cmd->params.tclass_sq_psn |= (attrs->sq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2649 cmd->flags |= OCRDMA_QP_PARA_SQPSN_VALID; in ocrdma_set_qp_params()
2652 cmd->params.hop_lmt_rq_psn |= (attrs->rq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2653 cmd->flags |= OCRDMA_QP_PARA_RQPSN_VALID; in ocrdma_set_qp_params()
2661 cmd->flags |= OCRDMA_QP_PARA_MAX_ORD_VALID; in ocrdma_set_qp_params()
2669 cmd->flags |= OCRDMA_QP_PARA_MAX_IRD_VALID; in ocrdma_set_qp_params()
2671 cmd->params.max_ord_ird = (qp->max_ord << in ocrdma_set_qp_params()
2682 struct ocrdma_modify_qp *cmd; in ocrdma_mbx_modify_qp() local
2684 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_QP, sizeof(*cmd)); in ocrdma_mbx_modify_qp()
2685 if (!cmd) in ocrdma_mbx_modify_qp()
2688 cmd->params.id = qp->id; in ocrdma_mbx_modify_qp()
2689 cmd->flags = 0; in ocrdma_mbx_modify_qp()
2691 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2695 cmd->flags |= OCRDMA_QP_PARA_QPS_VALID; in ocrdma_mbx_modify_qp()
2697 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2702 status = ocrdma_set_qp_params(qp, cmd, attrs, attr_mask); in ocrdma_mbx_modify_qp()
2705 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_qp()
2710 kfree(cmd); in ocrdma_mbx_modify_qp()
2717 struct ocrdma_destroy_qp *cmd; in ocrdma_mbx_destroy_qp() local
2720 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_QP, sizeof(*cmd)); in ocrdma_mbx_destroy_qp()
2721 if (!cmd) in ocrdma_mbx_destroy_qp()
2723 cmd->qp_id = qp->id; in ocrdma_mbx_destroy_qp()
2724 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_qp()
2729 kfree(cmd); in ocrdma_mbx_destroy_qp()
2747 struct ocrdma_create_srq *cmd; in ocrdma_mbx_create_srq() local
2752 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_SRQ, sizeof(*cmd)); in ocrdma_mbx_create_srq()
2753 if (!cmd) in ocrdma_mbx_create_srq()
2756 cmd->pgsz_pdid = pd->id & OCRDMA_CREATE_SRQ_PD_ID_MASK; in ocrdma_mbx_create_srq()
2773 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_mbx_create_srq()
2780 cmd->max_sge_rqe = ilog2(max_rqe_allocated); in ocrdma_mbx_create_srq()
2781 cmd->max_sge_rqe |= srq_attr->attr.max_sge << in ocrdma_mbx_create_srq()
2784 cmd->pgsz_pdid |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_mbx_create_srq()
2786 cmd->pages_rqe_sz |= (dev->attr.rqe_size in ocrdma_mbx_create_srq()
2789 cmd->pages_rqe_sz |= hw_pages << OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT; in ocrdma_mbx_create_srq()
2791 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_srq()
2794 rsp = (struct ocrdma_create_srq_rsp *)cmd; in ocrdma_mbx_create_srq()
2810 kfree(cmd); in ocrdma_mbx_create_srq()
2817 struct ocrdma_modify_srq *cmd; in ocrdma_mbx_modify_srq() local
2821 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_SRQ, sizeof(*cmd)); in ocrdma_mbx_modify_srq()
2822 if (!cmd) in ocrdma_mbx_modify_srq()
2824 cmd->id = srq->id; in ocrdma_mbx_modify_srq()
2825 cmd->limit_max_rqe |= srq_attr->srq_limit << in ocrdma_mbx_modify_srq()
2827 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_srq()
2828 kfree(cmd); in ocrdma_mbx_modify_srq()
2835 struct ocrdma_query_srq *cmd; in ocrdma_mbx_query_srq() local
2838 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_SRQ, sizeof(*cmd)); in ocrdma_mbx_query_srq()
2839 if (!cmd) in ocrdma_mbx_query_srq()
2841 cmd->id = srq->rq.dbid; in ocrdma_mbx_query_srq()
2842 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_srq()
2845 (struct ocrdma_query_srq_rsp *)cmd; in ocrdma_mbx_query_srq()
2854 kfree(cmd); in ocrdma_mbx_query_srq()
2860 struct ocrdma_destroy_srq *cmd; in ocrdma_mbx_destroy_srq() local
2862 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_SRQ, sizeof(*cmd)); in ocrdma_mbx_destroy_srq()
2863 if (!cmd) in ocrdma_mbx_destroy_srq()
2865 cmd->id = srq->id; in ocrdma_mbx_destroy_srq()
2866 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_srq()
2870 kfree(cmd); in ocrdma_mbx_destroy_srq()
2878 struct ocrdma_mqe cmd; in ocrdma_mbx_get_dcbx_config() local
2883 struct ocrdma_mqe_sge *mqe_sge = cmd.u.nonemb_req.sge; in ocrdma_mbx_get_dcbx_config()
2885 memset(&cmd, 0, sizeof(struct ocrdma_mqe)); in ocrdma_mbx_get_dcbx_config()
2886 cmd.hdr.pyld_len = max_t (u32, sizeof(struct ocrdma_get_dcbx_cfg_rsp), in ocrdma_mbx_get_dcbx_config()
2888 req = dma_alloc_coherent(&pdev->dev, cmd.hdr.pyld_len, &pa, GFP_KERNEL); in ocrdma_mbx_get_dcbx_config()
2894 cmd.hdr.spcl_sge_cnt_emb |= (1 << OCRDMA_MQE_HDR_SGE_CNT_SHIFT) & in ocrdma_mbx_get_dcbx_config()
2898 mqe_sge->len = cmd.hdr.pyld_len; in ocrdma_mbx_get_dcbx_config()
2901 OCRDMA_SUBSYS_DCBX, cmd.hdr.pyld_len); in ocrdma_mbx_get_dcbx_config()
2904 status = ocrdma_mbx_cmd(dev, &cmd); in ocrdma_mbx_get_dcbx_config()
2913 dma_free_coherent(&pdev->dev, cmd.hdr.pyld_len, req, pa); in ocrdma_mbx_get_dcbx_config()
3117 struct ocrdma_modify_eqd_req *cmd; in ocrdma_mbx_modify_eqd() local
3119 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_EQ_DELAY, sizeof(*cmd)); in ocrdma_mbx_modify_eqd()
3120 if (!cmd) in ocrdma_mbx_modify_eqd()
3123 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_MODIFY_EQ_DELAY, in ocrdma_mbx_modify_eqd()
3124 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_modify_eqd()
3126 cmd->cmd.num_eq = num; in ocrdma_mbx_modify_eqd()
3128 cmd->cmd.set_eqd[i].eq_id = eq[i].q.id; in ocrdma_mbx_modify_eqd()
3129 cmd->cmd.set_eqd[i].phase = 0; in ocrdma_mbx_modify_eqd()
3130 cmd->cmd.set_eqd[i].delay_multiplier = in ocrdma_mbx_modify_eqd()
3133 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_eqd()
3135 kfree(cmd); in ocrdma_mbx_modify_eqd()