Lines Matching refs:cmd
388 struct ocrdma_delete_q_req *cmd = dev->mbx_cmd; in ocrdma_mbx_delete_q() local
403 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_delete_q()
404 ocrdma_init_mch(&cmd->req, opcode, OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_delete_q()
405 cmd->id = q->id; in ocrdma_mbx_delete_q()
408 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_delete_q()
417 struct ocrdma_create_eq_req *cmd = dev->mbx_cmd; in ocrdma_mbx_create_eq() local
420 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_create_eq()
421 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_EQ, OCRDMA_SUBSYS_COMMON, in ocrdma_mbx_create_eq()
422 sizeof(*cmd)); in ocrdma_mbx_create_eq()
424 cmd->req.rsvd_version = 2; in ocrdma_mbx_create_eq()
425 cmd->num_pages = 4; in ocrdma_mbx_create_eq()
426 cmd->valid = OCRDMA_CREATE_EQ_VALID; in ocrdma_mbx_create_eq()
427 cmd->cnt = 4 << OCRDMA_CREATE_EQ_CNT_SHIFT; in ocrdma_mbx_create_eq()
429 ocrdma_build_q_pages(&cmd->pa[0], cmd->num_pages, eq->q.dma, in ocrdma_mbx_create_eq()
431 status = be_roce_mcc_cmd(dev->nic_info.netdev, cmd, sizeof(*cmd), NULL, in ocrdma_mbx_create_eq()
508 struct ocrdma_create_cq_cmd *cmd = dev->mbx_cmd; in ocrdma_mbx_mq_cq_create() local
512 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_mq_cq_create()
513 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_mq_cq_create()
514 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_mq_cq_create()
516 cmd->req.rsvd_version = OCRDMA_CREATE_CQ_VER2; in ocrdma_mbx_mq_cq_create()
517 cmd->pgsz_pgcnt = (cq->size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_mq_cq_create()
519 cmd->pgsz_pgcnt |= PAGES_4K_SPANNED(cq->va, cq->size); in ocrdma_mbx_mq_cq_create()
521 cmd->ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_mq_cq_create()
522 cmd->eqn = eq->id; in ocrdma_mbx_mq_cq_create()
523 cmd->pdid_cqecnt = cq->size / sizeof(struct ocrdma_mcqe); in ocrdma_mbx_mq_cq_create()
525 ocrdma_build_q_pages(&cmd->pa[0], cq->size / OCRDMA_MIN_Q_PAGE_SIZE, in ocrdma_mbx_mq_cq_create()
528 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_mq_cq_create()
550 struct ocrdma_create_mq_req *cmd = dev->mbx_cmd; in ocrdma_mbx_create_mq() local
554 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_create_mq()
557 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_MQ_EXT, in ocrdma_mbx_create_mq()
558 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_mq()
559 cmd->req.rsvd_version = 1; in ocrdma_mbx_create_mq()
560 cmd->cqid_pages = num_pages; in ocrdma_mbx_create_mq()
561 cmd->cqid_pages |= (cq->id << OCRDMA_CREATE_MQ_CQ_ID_SHIFT); in ocrdma_mbx_create_mq()
562 cmd->async_cqid_valid = OCRDMA_CREATE_MQ_ASYNC_CQ_VALID; in ocrdma_mbx_create_mq()
564 cmd->async_event_bitmap = BIT(OCRDMA_ASYNC_GRP5_EVE_CODE); in ocrdma_mbx_create_mq()
565 cmd->async_event_bitmap |= BIT(OCRDMA_ASYNC_RDMA_EVE_CODE); in ocrdma_mbx_create_mq()
567 cmd->async_cqid_ringsize = cq->id; in ocrdma_mbx_create_mq()
568 cmd->async_cqid_ringsize |= (ocrdma_encoded_q_len(mq->len) << in ocrdma_mbx_create_mq()
570 cmd->valid = OCRDMA_CREATE_MQ_VALID; in ocrdma_mbx_create_mq()
571 pa = &cmd->pa[0]; in ocrdma_mbx_create_mq()
575 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_create_mq()
974 static void ocrdma_post_mqe(struct ocrdma_dev *dev, struct ocrdma_mqe *cmd) in ocrdma_post_mqe() argument
981 cmd->hdr.tag_lo = dev->mq.sq.head; in ocrdma_post_mqe()
982 ocrdma_copy_cpu_to_le32(mqe, cmd, sizeof(*mqe)); in ocrdma_post_mqe()
1172 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_fw_ver() local
1175 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_VER, sizeof(*cmd)); in ocrdma_mbx_query_fw_ver()
1176 if (!cmd) in ocrdma_mbx_query_fw_ver()
1178 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_query_fw_ver()
1180 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_query_fw_ver()
1182 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_fw_ver()
1185 rsp = (struct ocrdma_fw_ver_rsp *)cmd; in ocrdma_mbx_query_fw_ver()
1191 kfree(cmd); in ocrdma_mbx_query_fw_ver()
1199 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_fw_config() local
1202 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_CONFIG, sizeof(*cmd)); in ocrdma_mbx_query_fw_config()
1203 if (!cmd) in ocrdma_mbx_query_fw_config()
1205 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_query_fw_config()
1207 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_query_fw_config()
1208 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_fw_config()
1211 rsp = (struct ocrdma_fw_conf_rsp *)cmd; in ocrdma_mbx_query_fw_config()
1214 kfree(cmd); in ocrdma_mbx_query_fw_config()
1313 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_dev() local
1315 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_CONFIG, sizeof(*cmd)); in ocrdma_mbx_query_dev()
1316 if (!cmd) in ocrdma_mbx_query_dev()
1318 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_dev()
1321 rsp = (struct ocrdma_mbx_query_config *)cmd; in ocrdma_mbx_query_dev()
1324 kfree(cmd); in ocrdma_mbx_query_dev()
1332 struct ocrdma_mqe *cmd; in ocrdma_mbx_get_link_speed() local
1334 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_NTWK_LINK_CONFIG_V1, in ocrdma_mbx_get_link_speed()
1335 sizeof(*cmd)); in ocrdma_mbx_get_link_speed()
1336 if (!cmd) in ocrdma_mbx_get_link_speed()
1338 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_get_link_speed()
1340 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_get_link_speed()
1342 ((struct ocrdma_mbx_hdr *)cmd->u.cmd)->rsvd_version = 0x1; in ocrdma_mbx_get_link_speed()
1344 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_get_link_speed()
1348 rsp = (struct ocrdma_get_link_speed_rsp *)cmd; in ocrdma_mbx_get_link_speed()
1353 kfree(cmd); in ocrdma_mbx_get_link_speed()
1360 struct ocrdma_mqe *cmd; in ocrdma_mbx_get_phy_info() local
1363 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_PHY_DETAILS, sizeof(*cmd)); in ocrdma_mbx_get_phy_info()
1364 if (!cmd) in ocrdma_mbx_get_phy_info()
1367 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_get_phy_info()
1369 sizeof(*cmd)); in ocrdma_mbx_get_phy_info()
1371 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_get_phy_info()
1375 rsp = (struct ocrdma_get_phy_info_rsp *)cmd; in ocrdma_mbx_get_phy_info()
1387 kfree(cmd); in ocrdma_mbx_get_phy_info()
1394 struct ocrdma_alloc_pd *cmd; in ocrdma_mbx_alloc_pd() local
1397 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD, sizeof(*cmd)); in ocrdma_mbx_alloc_pd()
1398 if (!cmd) in ocrdma_mbx_alloc_pd()
1401 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd()
1402 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd()
1405 rsp = (struct ocrdma_alloc_pd_rsp *)cmd; in ocrdma_mbx_alloc_pd()
1416 kfree(cmd); in ocrdma_mbx_alloc_pd()
1423 struct ocrdma_dealloc_pd *cmd; in ocrdma_mbx_dealloc_pd() local
1425 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd()
1426 if (!cmd) in ocrdma_mbx_dealloc_pd()
1428 cmd->id = pd->id; in ocrdma_mbx_dealloc_pd()
1429 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd()
1430 kfree(cmd); in ocrdma_mbx_dealloc_pd()
1439 struct ocrdma_alloc_pd_range *cmd; in ocrdma_mbx_alloc_pd_range() local
1444 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, in ocrdma_mbx_alloc_pd_range()
1445 sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1446 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1448 cmd->pd_count = dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1449 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd_range()
1450 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1451 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1465 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1468 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1469 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1472 cmd->pd_count = dev->attr.max_pd - dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1473 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1474 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1483 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1495 struct ocrdma_dealloc_pd_range *cmd; in ocrdma_mbx_dealloc_pd_range() local
1498 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1499 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1503 cmd->start_pd_id = dev->pd_mgr->pd_norm_start; in ocrdma_mbx_dealloc_pd_range()
1504 cmd->pd_count = dev->pd_mgr->max_normal_pd; in ocrdma_mbx_dealloc_pd_range()
1505 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1509 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1511 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, in ocrdma_mbx_dealloc_pd_range()
1512 sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1513 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1516 cmd->start_pd_id = dev->pd_mgr->pd_dpp_start; in ocrdma_mbx_dealloc_pd_range()
1517 cmd->pd_count = dev->pd_mgr->max_dpp_pd; in ocrdma_mbx_dealloc_pd_range()
1518 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1521 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1578 struct ocrdma_create_ah_tbl *cmd; in ocrdma_mbx_create_ah_tbl() local
1584 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_create_ah_tbl()
1585 if (!cmd) in ocrdma_mbx_create_ah_tbl()
1592 cmd->ah_conf = (OCRDMA_AH_TBL_PAGES << in ocrdma_mbx_create_ah_tbl()
1601 cmd->ah_conf |= (i << OCRDMA_CREATE_AH_PAGE_SIZE_SHIFT) & in ocrdma_mbx_create_ah_tbl()
1605 cmd->ah_conf |= (sizeof(struct ocrdma_av) << in ocrdma_mbx_create_ah_tbl()
1629 cmd->tbl_addr[0].lo = (u32)(dev->av_tbl.pbl.pa & 0xFFFFFFFF); in ocrdma_mbx_create_ah_tbl()
1630 cmd->tbl_addr[0].hi = (u32)upper_32_bits(dev->av_tbl.pbl.pa); in ocrdma_mbx_create_ah_tbl()
1631 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_ah_tbl()
1634 rsp = (struct ocrdma_create_ah_tbl_rsp *)cmd; in ocrdma_mbx_create_ah_tbl()
1636 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1649 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1655 struct ocrdma_delete_ah_tbl *cmd; in ocrdma_mbx_delete_ah_tbl() local
1661 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_delete_ah_tbl()
1662 if (!cmd) in ocrdma_mbx_delete_ah_tbl()
1664 cmd->ahid = dev->av_tbl.ahid; in ocrdma_mbx_delete_ah_tbl()
1666 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_delete_ah_tbl()
1672 kfree(cmd); in ocrdma_mbx_delete_ah_tbl()
1719 struct ocrdma_create_cq *cmd; in ocrdma_mbx_create_cq() local
1745 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_CQ, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1746 if (!cmd) in ocrdma_mbx_create_cq()
1748 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_create_cq()
1749 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1757 cmd->cmd.pgsz_pgcnt = (page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_create_cq()
1759 cmd->cmd.pgsz_pgcnt |= hw_pages; in ocrdma_mbx_create_cq()
1760 cmd->cmd.ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_create_cq()
1763 cmd->cmd.req.rsvd_version = OCRDMA_CREATE_CQ_VER3; in ocrdma_mbx_create_cq()
1768 cmd->cmd.ev_cnt_flags |= (0x3 << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1784 cmd->cmd.ev_cnt_flags |= (count << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1787 cmd->cmd.eqn = cq->eqn; in ocrdma_mbx_create_cq()
1790 cmd->cmd.pgsz_pgcnt |= OCRDMA_CREATE_CQ_DPP << in ocrdma_mbx_create_cq()
1793 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size); in ocrdma_mbx_create_cq()
1795 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size) - 1; in ocrdma_mbx_create_cq()
1796 cmd->cmd.ev_cnt_flags |= OCRDMA_CREATE_CQ_FLAGS_AUTO_VALID; in ocrdma_mbx_create_cq()
1801 cmd->cmd.pdid_cqecnt |= (pd_id << in ocrdma_mbx_create_cq()
1803 ocrdma_build_q_pages(&cmd->cmd.pa[0], hw_pages, cq->pa, page_size); in ocrdma_mbx_create_cq()
1804 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_cq()
1808 rsp = (struct ocrdma_create_cq_rsp *)cmd; in ocrdma_mbx_create_cq()
1810 kfree(cmd); in ocrdma_mbx_create_cq()
1816 kfree(cmd); in ocrdma_mbx_create_cq()
1823 struct ocrdma_destroy_cq *cmd; in ocrdma_mbx_destroy_cq() local
1825 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_CQ, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1826 if (!cmd) in ocrdma_mbx_destroy_cq()
1828 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_DELETE_CQ, in ocrdma_mbx_destroy_cq()
1829 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1831 cmd->bypass_flush_qid |= in ocrdma_mbx_destroy_cq()
1835 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_cq()
1838 kfree(cmd); in ocrdma_mbx_destroy_cq()
1846 struct ocrdma_alloc_lkey *cmd; in ocrdma_mbx_alloc_lkey() local
1849 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_LKEY, sizeof(*cmd)); in ocrdma_mbx_alloc_lkey()
1850 if (!cmd) in ocrdma_mbx_alloc_lkey()
1852 cmd->pdid = pdid; in ocrdma_mbx_alloc_lkey()
1853 cmd->pbl_sz_flags |= addr_check; in ocrdma_mbx_alloc_lkey()
1854 cmd->pbl_sz_flags |= (hwmr->fr_mr << OCRDMA_ALLOC_LKEY_FMR_SHIFT); in ocrdma_mbx_alloc_lkey()
1855 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1857 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1859 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1861 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1863 cmd->pbl_sz_flags |= in ocrdma_mbx_alloc_lkey()
1866 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_lkey()
1869 rsp = (struct ocrdma_alloc_lkey_rsp *)cmd; in ocrdma_mbx_alloc_lkey()
1872 kfree(cmd); in ocrdma_mbx_alloc_lkey()
1879 struct ocrdma_dealloc_lkey *cmd; in ocrdma_mbx_dealloc_lkey() local
1881 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_LKEY, sizeof(*cmd)); in ocrdma_mbx_dealloc_lkey()
1882 if (!cmd) in ocrdma_mbx_dealloc_lkey()
1884 cmd->lkey = lkey; in ocrdma_mbx_dealloc_lkey()
1885 cmd->rsvd_frmr = fr_mr ? 1 : 0; in ocrdma_mbx_dealloc_lkey()
1886 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_lkey()
1890 kfree(cmd); in ocrdma_mbx_dealloc_lkey()
1899 struct ocrdma_reg_nsmr *cmd; in ocrdma_mbx_reg_mr() local
1902 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR, sizeof(*cmd)); in ocrdma_mbx_reg_mr()
1903 if (!cmd) in ocrdma_mbx_reg_mr()
1905 cmd->num_pbl_pdid = in ocrdma_mbx_reg_mr()
1907 cmd->fr_mr = hwmr->fr_mr; in ocrdma_mbx_reg_mr()
1909 cmd->flags_hpage_pbe_sz |= (hwmr->remote_wr << in ocrdma_mbx_reg_mr()
1911 cmd->flags_hpage_pbe_sz |= (hwmr->remote_rd << in ocrdma_mbx_reg_mr()
1913 cmd->flags_hpage_pbe_sz |= (hwmr->local_wr << in ocrdma_mbx_reg_mr()
1915 cmd->flags_hpage_pbe_sz |= (hwmr->remote_atomic << in ocrdma_mbx_reg_mr()
1917 cmd->flags_hpage_pbe_sz |= (hwmr->mw_bind << in ocrdma_mbx_reg_mr()
1919 cmd->flags_hpage_pbe_sz |= (last << OCRDMA_REG_NSMR_LAST_SHIFT); in ocrdma_mbx_reg_mr()
1921 cmd->flags_hpage_pbe_sz |= (hwmr->pbe_size / OCRDMA_MIN_HPAGE_SIZE); in ocrdma_mbx_reg_mr()
1922 cmd->flags_hpage_pbe_sz |= (hwmr->pbl_size / OCRDMA_MIN_HPAGE_SIZE) << in ocrdma_mbx_reg_mr()
1924 cmd->totlen_low = hwmr->len; in ocrdma_mbx_reg_mr()
1925 cmd->totlen_high = upper_32_bits(hwmr->len); in ocrdma_mbx_reg_mr()
1926 cmd->fbo_low = (u32) (hwmr->fbo & 0xffffffff); in ocrdma_mbx_reg_mr()
1927 cmd->fbo_high = (u32) upper_32_bits(hwmr->fbo); in ocrdma_mbx_reg_mr()
1928 cmd->va_loaddr = (u32) hwmr->va; in ocrdma_mbx_reg_mr()
1929 cmd->va_hiaddr = (u32) upper_32_bits(hwmr->va); in ocrdma_mbx_reg_mr()
1932 cmd->pbl[i].lo = (u32) (hwmr->pbl_table[i].pa & 0xffffffff); in ocrdma_mbx_reg_mr()
1933 cmd->pbl[i].hi = upper_32_bits(hwmr->pbl_table[i].pa); in ocrdma_mbx_reg_mr()
1935 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr()
1938 rsp = (struct ocrdma_reg_nsmr_rsp *)cmd; in ocrdma_mbx_reg_mr()
1941 kfree(cmd); in ocrdma_mbx_reg_mr()
1951 struct ocrdma_reg_nsmr_cont *cmd; in ocrdma_mbx_reg_mr_cont() local
1953 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR_CONT, sizeof(*cmd)); in ocrdma_mbx_reg_mr_cont()
1954 if (!cmd) in ocrdma_mbx_reg_mr_cont()
1956 cmd->lrkey = hwmr->lkey; in ocrdma_mbx_reg_mr_cont()
1957 cmd->num_pbl_offset = (pbl_cnt << OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT) | in ocrdma_mbx_reg_mr_cont()
1959 cmd->last = last << OCRDMA_REG_NSMR_CONT_LAST_SHIFT; in ocrdma_mbx_reg_mr_cont()
1962 cmd->pbl[i].lo = in ocrdma_mbx_reg_mr_cont()
1964 cmd->pbl[i].hi = in ocrdma_mbx_reg_mr_cont()
1967 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr_cont()
1971 kfree(cmd); in ocrdma_mbx_reg_mr_cont()
2119 static int ocrdma_set_create_qp_sq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_sq_cmd() argument
2153 ocrdma_build_q_pages(&cmd->wq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_sq_cmd()
2155 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_set_create_qp_sq_cmd()
2157 cmd->num_wq_rq_pages |= (hw_pages << in ocrdma_set_create_qp_sq_cmd()
2160 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2163 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2166 cmd->max_wqe_rqe |= (ilog2(qp->sq.max_cnt) << in ocrdma_set_create_qp_sq_cmd()
2169 cmd->wqe_rqe_size |= (dev->attr.wqe_size << in ocrdma_set_create_qp_sq_cmd()
2175 static int ocrdma_set_create_qp_rq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_rq_cmd() argument
2205 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_rq_cmd()
2206 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_set_create_qp_rq_cmd()
2208 cmd->num_wq_rq_pages |= in ocrdma_set_create_qp_rq_cmd()
2211 cmd->max_sge_recv_flags |= (attrs->cap.max_recv_sge << in ocrdma_set_create_qp_rq_cmd()
2214 cmd->max_wqe_rqe |= (ilog2(qp->rq.max_cnt) << in ocrdma_set_create_qp_rq_cmd()
2217 cmd->wqe_rqe_size |= (dev->attr.rqe_size << in ocrdma_set_create_qp_rq_cmd()
2223 static void ocrdma_set_create_qp_dpp_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_dpp_cmd() argument
2230 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2233 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2234 cmd->dpp_credits_cqid = dpp_cq_id; in ocrdma_set_create_qp_dpp_cmd()
2235 cmd->dpp_credits_cqid |= OCRDMA_CREATE_QP_REQ_DPP_CREDIT_LIMIT << in ocrdma_set_create_qp_dpp_cmd()
2239 static int ocrdma_set_create_qp_ird_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_ird_cmd() argument
2259 ocrdma_build_q_pages(&cmd->ird_addr[0], dev->attr.num_ird_pages, in ocrdma_set_create_qp_ird_cmd()
2318 struct ocrdma_create_qp_req *cmd; in ocrdma_mbx_create_qp() local
2336 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_QP, sizeof(*cmd)); in ocrdma_mbx_create_qp()
2337 if (!cmd) in ocrdma_mbx_create_qp()
2339 cmd->type_pgsz_pdn |= (qptype << OCRDMA_CREATE_QP_REQ_QPT_SHIFT) & in ocrdma_mbx_create_qp()
2341 status = ocrdma_set_create_qp_sq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2347 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_USE_SRQ_MASK; in ocrdma_mbx_create_qp()
2348 cmd->rq_addr[0].lo = srq->id; in ocrdma_mbx_create_qp()
2351 status = ocrdma_set_create_qp_rq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2356 status = ocrdma_set_create_qp_ird_cmd(cmd, qp); in ocrdma_mbx_create_qp()
2360 cmd->type_pgsz_pdn |= (pd->id << OCRDMA_CREATE_QP_REQ_PD_ID_SHIFT) & in ocrdma_mbx_create_qp()
2365 cmd->max_sge_recv_flags |= flags; in ocrdma_mbx_create_qp()
2366 cmd->max_ord_ird |= (dev->attr.max_ord_per_qp << in ocrdma_mbx_create_qp()
2369 cmd->max_ord_ird |= (dev->attr.max_ird_per_qp << in ocrdma_mbx_create_qp()
2373 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2377 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2383 ocrdma_set_create_qp_dpp_cmd(cmd, pd, qp, enable_dpp_cq, in ocrdma_mbx_create_qp()
2387 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_qp()
2390 rsp = (struct ocrdma_create_qp_rsp *)cmd; in ocrdma_mbx_create_qp()
2393 kfree(cmd); in ocrdma_mbx_create_qp()
2403 kfree(cmd); in ocrdma_mbx_create_qp()
2411 struct ocrdma_query_qp *cmd; in ocrdma_mbx_query_qp() local
2414 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_QP, sizeof(*rsp)); in ocrdma_mbx_query_qp()
2415 if (!cmd) in ocrdma_mbx_query_qp()
2417 cmd->qp_id = qp->id; in ocrdma_mbx_query_qp()
2418 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_qp()
2421 rsp = (struct ocrdma_query_qp_rsp *)cmd; in ocrdma_mbx_query_qp()
2424 kfree(cmd); in ocrdma_mbx_query_qp()
2429 struct ocrdma_modify_qp *cmd, in ocrdma_set_av_params() argument
2444 cmd->params.tclass_sq_psn |= in ocrdma_set_av_params()
2446 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2448 cmd->params.rnt_rc_sl_fl |= (ah_attr->sl << OCRDMA_QP_PARAMS_SL_SHIFT); in ocrdma_set_av_params()
2449 cmd->params.hop_lmt_rq_psn |= in ocrdma_set_av_params()
2451 cmd->flags |= OCRDMA_QP_PARA_FLOW_LBL_VALID; in ocrdma_set_av_params()
2452 memcpy(&cmd->params.dgid[0], &ah_attr->grh.dgid.raw[0], in ocrdma_set_av_params()
2453 sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2464 memcpy(&cmd->params.sgid[0], &sgid.raw[0], sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2468 cmd->params.dmac_b0_to_b3 = mac_addr[0] | (mac_addr[1] << 8) | in ocrdma_set_av_params()
2471 ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2472 ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2473 cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); in ocrdma_set_av_params()
2485 cmd->params.vlan_dmac_b4_to_b5 |= in ocrdma_set_av_params()
2487 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; in ocrdma_set_av_params()
2488 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2496 struct ocrdma_modify_qp *cmd, in ocrdma_set_qp_params() argument
2503 cmd->params.path_mtu_pkey_indx |= (attrs->pkey_index & in ocrdma_set_qp_params()
2505 cmd->flags |= OCRDMA_QP_PARA_PKEY_VALID; in ocrdma_set_qp_params()
2509 cmd->params.qkey = attrs->qkey; in ocrdma_set_qp_params()
2510 cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; in ocrdma_set_qp_params()
2513 status = ocrdma_set_av_params(qp, cmd, attrs, attr_mask); in ocrdma_set_qp_params()
2518 cmd->params.dmac_b0_to_b3 = dev->nic_info.mac_addr[0] | in ocrdma_set_qp_params()
2522 cmd->params.vlan_dmac_b4_to_b5 = dev->nic_info.mac_addr[4] | in ocrdma_set_qp_params()
2527 cmd->params.max_sge_recv_flags |= in ocrdma_set_qp_params()
2529 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2532 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->dest_qp_num & in ocrdma_set_qp_params()
2534 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2544 cmd->params.path_mtu_pkey_indx |= in ocrdma_set_qp_params()
2548 cmd->flags |= OCRDMA_QP_PARA_PMTU_VALID; in ocrdma_set_qp_params()
2551 cmd->params.ack_to_rnr_rtc_dest_qpn |= attrs->timeout << in ocrdma_set_qp_params()
2553 cmd->flags |= OCRDMA_QP_PARA_ACK_TO_VALID; in ocrdma_set_qp_params()
2556 cmd->params.rnt_rc_sl_fl |= (attrs->retry_cnt << in ocrdma_set_qp_params()
2559 cmd->flags |= OCRDMA_QP_PARA_RETRY_CNT_VALID; in ocrdma_set_qp_params()
2562 cmd->params.rnt_rc_sl_fl |= (attrs->min_rnr_timer << in ocrdma_set_qp_params()
2565 cmd->flags |= OCRDMA_QP_PARA_RNT_VALID; in ocrdma_set_qp_params()
2568 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->rnr_retry << in ocrdma_set_qp_params()
2571 cmd->flags |= OCRDMA_QP_PARA_RRC_VALID; in ocrdma_set_qp_params()
2574 cmd->params.tclass_sq_psn |= (attrs->sq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2575 cmd->flags |= OCRDMA_QP_PARA_SQPSN_VALID; in ocrdma_set_qp_params()
2578 cmd->params.hop_lmt_rq_psn |= (attrs->rq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2579 cmd->flags |= OCRDMA_QP_PARA_RQPSN_VALID; in ocrdma_set_qp_params()
2587 cmd->flags |= OCRDMA_QP_PARA_MAX_ORD_VALID; in ocrdma_set_qp_params()
2595 cmd->flags |= OCRDMA_QP_PARA_MAX_IRD_VALID; in ocrdma_set_qp_params()
2597 cmd->params.max_ord_ird = (qp->max_ord << in ocrdma_set_qp_params()
2608 struct ocrdma_modify_qp *cmd; in ocrdma_mbx_modify_qp() local
2610 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_QP, sizeof(*cmd)); in ocrdma_mbx_modify_qp()
2611 if (!cmd) in ocrdma_mbx_modify_qp()
2614 cmd->params.id = qp->id; in ocrdma_mbx_modify_qp()
2615 cmd->flags = 0; in ocrdma_mbx_modify_qp()
2617 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2621 cmd->flags |= OCRDMA_QP_PARA_QPS_VALID; in ocrdma_mbx_modify_qp()
2623 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2628 status = ocrdma_set_qp_params(qp, cmd, attrs, attr_mask); in ocrdma_mbx_modify_qp()
2631 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_qp()
2636 kfree(cmd); in ocrdma_mbx_modify_qp()
2643 struct ocrdma_destroy_qp *cmd; in ocrdma_mbx_destroy_qp() local
2646 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_QP, sizeof(*cmd)); in ocrdma_mbx_destroy_qp()
2647 if (!cmd) in ocrdma_mbx_destroy_qp()
2649 cmd->qp_id = qp->id; in ocrdma_mbx_destroy_qp()
2650 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_qp()
2655 kfree(cmd); in ocrdma_mbx_destroy_qp()
2673 struct ocrdma_create_srq *cmd; in ocrdma_mbx_create_srq() local
2678 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_SRQ, sizeof(*cmd)); in ocrdma_mbx_create_srq()
2679 if (!cmd) in ocrdma_mbx_create_srq()
2682 cmd->pgsz_pdid = pd->id & OCRDMA_CREATE_SRQ_PD_ID_MASK; in ocrdma_mbx_create_srq()
2699 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_mbx_create_srq()
2706 cmd->max_sge_rqe = ilog2(max_rqe_allocated); in ocrdma_mbx_create_srq()
2707 cmd->max_sge_rqe |= srq_attr->attr.max_sge << in ocrdma_mbx_create_srq()
2710 cmd->pgsz_pdid |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_mbx_create_srq()
2712 cmd->pages_rqe_sz |= (dev->attr.rqe_size in ocrdma_mbx_create_srq()
2715 cmd->pages_rqe_sz |= hw_pages << OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT; in ocrdma_mbx_create_srq()
2717 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_srq()
2720 rsp = (struct ocrdma_create_srq_rsp *)cmd; in ocrdma_mbx_create_srq()
2736 kfree(cmd); in ocrdma_mbx_create_srq()
2743 struct ocrdma_modify_srq *cmd; in ocrdma_mbx_modify_srq() local
2747 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_SRQ, sizeof(*cmd)); in ocrdma_mbx_modify_srq()
2748 if (!cmd) in ocrdma_mbx_modify_srq()
2750 cmd->id = srq->id; in ocrdma_mbx_modify_srq()
2751 cmd->limit_max_rqe |= srq_attr->srq_limit << in ocrdma_mbx_modify_srq()
2753 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_srq()
2754 kfree(cmd); in ocrdma_mbx_modify_srq()
2761 struct ocrdma_query_srq *cmd; in ocrdma_mbx_query_srq() local
2764 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_SRQ, sizeof(*cmd)); in ocrdma_mbx_query_srq()
2765 if (!cmd) in ocrdma_mbx_query_srq()
2767 cmd->id = srq->rq.dbid; in ocrdma_mbx_query_srq()
2768 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_srq()
2771 (struct ocrdma_query_srq_rsp *)cmd; in ocrdma_mbx_query_srq()
2780 kfree(cmd); in ocrdma_mbx_query_srq()
2787 struct ocrdma_destroy_srq *cmd; in ocrdma_mbx_destroy_srq() local
2789 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_SRQ, sizeof(*cmd)); in ocrdma_mbx_destroy_srq()
2790 if (!cmd) in ocrdma_mbx_destroy_srq()
2792 cmd->id = srq->id; in ocrdma_mbx_destroy_srq()
2793 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_srq()
2797 kfree(cmd); in ocrdma_mbx_destroy_srq()
2806 struct ocrdma_mqe cmd; in ocrdma_mbx_get_dcbx_config() local
2811 struct ocrdma_mqe_sge *mqe_sge = cmd.u.nonemb_req.sge; in ocrdma_mbx_get_dcbx_config()
2813 memset(&cmd, 0, sizeof(struct ocrdma_mqe)); in ocrdma_mbx_get_dcbx_config()
2814 cmd.hdr.pyld_len = max_t (u32, sizeof(struct ocrdma_get_dcbx_cfg_rsp), in ocrdma_mbx_get_dcbx_config()
2816 req = dma_alloc_coherent(&pdev->dev, cmd.hdr.pyld_len, &pa, GFP_KERNEL); in ocrdma_mbx_get_dcbx_config()
2822 cmd.hdr.spcl_sge_cnt_emb |= (1 << OCRDMA_MQE_HDR_SGE_CNT_SHIFT) & in ocrdma_mbx_get_dcbx_config()
2826 mqe_sge->len = cmd.hdr.pyld_len; in ocrdma_mbx_get_dcbx_config()
2830 OCRDMA_SUBSYS_DCBX, cmd.hdr.pyld_len); in ocrdma_mbx_get_dcbx_config()
2833 status = ocrdma_mbx_cmd(dev, &cmd); in ocrdma_mbx_get_dcbx_config()
2842 dma_free_coherent(&pdev->dev, cmd.hdr.pyld_len, req, pa); in ocrdma_mbx_get_dcbx_config()
3047 struct ocrdma_modify_eqd_req *cmd; in ocrdma_mbx_modify_eqd() local
3049 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_EQ_DELAY, sizeof(*cmd)); in ocrdma_mbx_modify_eqd()
3050 if (!cmd) in ocrdma_mbx_modify_eqd()
3053 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_MODIFY_EQ_DELAY, in ocrdma_mbx_modify_eqd()
3054 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_modify_eqd()
3056 cmd->cmd.num_eq = num; in ocrdma_mbx_modify_eqd()
3058 cmd->cmd.set_eqd[i].eq_id = eq[i].q.id; in ocrdma_mbx_modify_eqd()
3059 cmd->cmd.set_eqd[i].phase = 0; in ocrdma_mbx_modify_eqd()
3060 cmd->cmd.set_eqd[i].delay_multiplier = in ocrdma_mbx_modify_eqd()
3063 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_eqd()
3067 kfree(cmd); in ocrdma_mbx_modify_eqd()