Lines Matching refs:cmd
404 struct ocrdma_delete_q_req *cmd = dev->mbx_cmd; in ocrdma_mbx_delete_q() local
419 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_delete_q()
420 ocrdma_init_mch(&cmd->req, opcode, OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_delete_q()
421 cmd->id = q->id; in ocrdma_mbx_delete_q()
424 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_delete_q()
433 struct ocrdma_create_eq_req *cmd = dev->mbx_cmd; in ocrdma_mbx_create_eq() local
436 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_create_eq()
437 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_EQ, OCRDMA_SUBSYS_COMMON, in ocrdma_mbx_create_eq()
438 sizeof(*cmd)); in ocrdma_mbx_create_eq()
440 cmd->req.rsvd_version = 2; in ocrdma_mbx_create_eq()
441 cmd->num_pages = 4; in ocrdma_mbx_create_eq()
442 cmd->valid = OCRDMA_CREATE_EQ_VALID; in ocrdma_mbx_create_eq()
443 cmd->cnt = 4 << OCRDMA_CREATE_EQ_CNT_SHIFT; in ocrdma_mbx_create_eq()
445 ocrdma_build_q_pages(&cmd->pa[0], cmd->num_pages, eq->q.dma, in ocrdma_mbx_create_eq()
447 status = be_roce_mcc_cmd(dev->nic_info.netdev, cmd, sizeof(*cmd), NULL, in ocrdma_mbx_create_eq()
524 struct ocrdma_create_cq_cmd *cmd = dev->mbx_cmd; in ocrdma_mbx_mq_cq_create() local
528 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_mq_cq_create()
529 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_mq_cq_create()
530 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_mq_cq_create()
532 cmd->req.rsvd_version = OCRDMA_CREATE_CQ_VER2; in ocrdma_mbx_mq_cq_create()
533 cmd->pgsz_pgcnt = (cq->size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_mq_cq_create()
535 cmd->pgsz_pgcnt |= PAGES_4K_SPANNED(cq->va, cq->size); in ocrdma_mbx_mq_cq_create()
537 cmd->ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_mq_cq_create()
538 cmd->eqn = eq->id; in ocrdma_mbx_mq_cq_create()
539 cmd->pdid_cqecnt = cq->size / sizeof(struct ocrdma_mcqe); in ocrdma_mbx_mq_cq_create()
541 ocrdma_build_q_pages(&cmd->pa[0], cq->size / OCRDMA_MIN_Q_PAGE_SIZE, in ocrdma_mbx_mq_cq_create()
544 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_mq_cq_create()
566 struct ocrdma_create_mq_req *cmd = dev->mbx_cmd; in ocrdma_mbx_create_mq() local
570 memset(cmd, 0, sizeof(*cmd)); in ocrdma_mbx_create_mq()
573 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_MQ_EXT, in ocrdma_mbx_create_mq()
574 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_mq()
575 cmd->req.rsvd_version = 1; in ocrdma_mbx_create_mq()
576 cmd->cqid_pages = num_pages; in ocrdma_mbx_create_mq()
577 cmd->cqid_pages |= (cq->id << OCRDMA_CREATE_MQ_CQ_ID_SHIFT); in ocrdma_mbx_create_mq()
578 cmd->async_cqid_valid = OCRDMA_CREATE_MQ_ASYNC_CQ_VALID; in ocrdma_mbx_create_mq()
580 cmd->async_event_bitmap = BIT(OCRDMA_ASYNC_GRP5_EVE_CODE); in ocrdma_mbx_create_mq()
581 cmd->async_event_bitmap |= BIT(OCRDMA_ASYNC_RDMA_EVE_CODE); in ocrdma_mbx_create_mq()
583 cmd->async_event_bitmap |= BIT(OCRDMA_ASYNC_LINK_EVE_CODE); in ocrdma_mbx_create_mq()
585 cmd->async_cqid_ringsize = cq->id; in ocrdma_mbx_create_mq()
586 cmd->async_cqid_ringsize |= (ocrdma_encoded_q_len(mq->len) << in ocrdma_mbx_create_mq()
588 cmd->valid = OCRDMA_CREATE_MQ_VALID; in ocrdma_mbx_create_mq()
589 pa = &cmd->pa[0]; in ocrdma_mbx_create_mq()
593 cmd, sizeof(*cmd), NULL, NULL); in ocrdma_mbx_create_mq()
1036 static void ocrdma_post_mqe(struct ocrdma_dev *dev, struct ocrdma_mqe *cmd) in ocrdma_post_mqe() argument
1043 cmd->hdr.tag_lo = dev->mq.sq.head; in ocrdma_post_mqe()
1044 ocrdma_copy_cpu_to_le32(mqe, cmd, sizeof(*mqe)); in ocrdma_post_mqe()
1234 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_fw_ver() local
1237 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_VER, sizeof(*cmd)); in ocrdma_mbx_query_fw_ver()
1238 if (!cmd) in ocrdma_mbx_query_fw_ver()
1240 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_query_fw_ver()
1242 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_query_fw_ver()
1244 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_fw_ver()
1247 rsp = (struct ocrdma_fw_ver_rsp *)cmd; in ocrdma_mbx_query_fw_ver()
1253 kfree(cmd); in ocrdma_mbx_query_fw_ver()
1261 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_fw_config() local
1264 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_CONFIG, sizeof(*cmd)); in ocrdma_mbx_query_fw_config()
1265 if (!cmd) in ocrdma_mbx_query_fw_config()
1267 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_query_fw_config()
1269 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_query_fw_config()
1270 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_fw_config()
1273 rsp = (struct ocrdma_fw_conf_rsp *)cmd; in ocrdma_mbx_query_fw_config()
1276 kfree(cmd); in ocrdma_mbx_query_fw_config()
1375 struct ocrdma_mqe *cmd; in ocrdma_mbx_query_dev() local
1377 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_CONFIG, sizeof(*cmd)); in ocrdma_mbx_query_dev()
1378 if (!cmd) in ocrdma_mbx_query_dev()
1380 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_dev()
1383 rsp = (struct ocrdma_mbx_query_config *)cmd; in ocrdma_mbx_query_dev()
1386 kfree(cmd); in ocrdma_mbx_query_dev()
1395 struct ocrdma_mqe *cmd; in ocrdma_mbx_get_link_speed() local
1397 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_NTWK_LINK_CONFIG_V1, in ocrdma_mbx_get_link_speed()
1398 sizeof(*cmd)); in ocrdma_mbx_get_link_speed()
1399 if (!cmd) in ocrdma_mbx_get_link_speed()
1401 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_get_link_speed()
1403 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_get_link_speed()
1405 ((struct ocrdma_mbx_hdr *)cmd->u.cmd)->rsvd_version = 0x1; in ocrdma_mbx_get_link_speed()
1407 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_get_link_speed()
1411 rsp = (struct ocrdma_get_link_speed_rsp *)cmd; in ocrdma_mbx_get_link_speed()
1419 kfree(cmd); in ocrdma_mbx_get_link_speed()
1426 struct ocrdma_mqe *cmd; in ocrdma_mbx_get_phy_info() local
1429 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_PHY_DETAILS, sizeof(*cmd)); in ocrdma_mbx_get_phy_info()
1430 if (!cmd) in ocrdma_mbx_get_phy_info()
1433 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], in ocrdma_mbx_get_phy_info()
1435 sizeof(*cmd)); in ocrdma_mbx_get_phy_info()
1437 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_get_phy_info()
1441 rsp = (struct ocrdma_get_phy_info_rsp *)cmd; in ocrdma_mbx_get_phy_info()
1453 kfree(cmd); in ocrdma_mbx_get_phy_info()
1460 struct ocrdma_alloc_pd *cmd; in ocrdma_mbx_alloc_pd() local
1463 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD, sizeof(*cmd)); in ocrdma_mbx_alloc_pd()
1464 if (!cmd) in ocrdma_mbx_alloc_pd()
1467 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd()
1468 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd()
1471 rsp = (struct ocrdma_alloc_pd_rsp *)cmd; in ocrdma_mbx_alloc_pd()
1482 kfree(cmd); in ocrdma_mbx_alloc_pd()
1489 struct ocrdma_dealloc_pd *cmd; in ocrdma_mbx_dealloc_pd() local
1491 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd()
1492 if (!cmd) in ocrdma_mbx_dealloc_pd()
1494 cmd->id = pd->id; in ocrdma_mbx_dealloc_pd()
1495 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd()
1496 kfree(cmd); in ocrdma_mbx_dealloc_pd()
1505 struct ocrdma_alloc_pd_range *cmd; in ocrdma_mbx_alloc_pd_range() local
1510 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, in ocrdma_mbx_alloc_pd_range()
1511 sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1512 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1514 cmd->pd_count = dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1515 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; in ocrdma_mbx_alloc_pd_range()
1516 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1517 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1531 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1534 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_alloc_pd_range()
1535 if (!cmd) in ocrdma_mbx_alloc_pd_range()
1538 cmd->pd_count = dev->attr.max_pd - dev->attr.max_dpp_pds; in ocrdma_mbx_alloc_pd_range()
1539 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_alloc_pd_range()
1540 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; in ocrdma_mbx_alloc_pd_range()
1549 kfree(cmd); in ocrdma_mbx_alloc_pd_range()
1561 struct ocrdma_dealloc_pd_range *cmd; in ocrdma_mbx_dealloc_pd_range() local
1564 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1565 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1569 cmd->start_pd_id = dev->pd_mgr->pd_norm_start; in ocrdma_mbx_dealloc_pd_range()
1570 cmd->pd_count = dev->pd_mgr->max_normal_pd; in ocrdma_mbx_dealloc_pd_range()
1571 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1575 kfree(cmd); in ocrdma_mbx_dealloc_pd_range()
1577 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, in ocrdma_mbx_dealloc_pd_range()
1578 sizeof(*cmd)); in ocrdma_mbx_dealloc_pd_range()
1579 if (!cmd) in ocrdma_mbx_dealloc_pd_range()
1582 cmd->start_pd_id = dev->pd_mgr->pd_dpp_start; in ocrdma_mbx_dealloc_pd_range()
1583 cmd->pd_count = dev->pd_mgr->max_dpp_pd; in ocrdma_mbx_dealloc_pd_range()
1584 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_dealloc_pd_range()
1587 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()
1695 cmd->tbl_addr[0].lo = (u32)(dev->av_tbl.pbl.pa & 0xFFFFFFFF); in ocrdma_mbx_create_ah_tbl()
1696 cmd->tbl_addr[0].hi = (u32)upper_32_bits(dev->av_tbl.pbl.pa); in ocrdma_mbx_create_ah_tbl()
1697 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_ah_tbl()
1700 rsp = (struct ocrdma_create_ah_tbl_rsp *)cmd; in ocrdma_mbx_create_ah_tbl()
1702 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1715 kfree(cmd); in ocrdma_mbx_create_ah_tbl()
1721 struct ocrdma_delete_ah_tbl *cmd; in ocrdma_mbx_delete_ah_tbl() local
1727 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_AH_TBL, sizeof(*cmd)); in ocrdma_mbx_delete_ah_tbl()
1728 if (!cmd) in ocrdma_mbx_delete_ah_tbl()
1730 cmd->ahid = dev->av_tbl.ahid; in ocrdma_mbx_delete_ah_tbl()
1732 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_delete_ah_tbl()
1738 kfree(cmd); in ocrdma_mbx_delete_ah_tbl()
1785 struct ocrdma_create_cq *cmd; in ocrdma_mbx_create_cq() local
1811 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_CQ, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1812 if (!cmd) in ocrdma_mbx_create_cq()
1814 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_CREATE_CQ, in ocrdma_mbx_create_cq()
1815 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_create_cq()
1823 cmd->cmd.pgsz_pgcnt = (page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_create_cq()
1825 cmd->cmd.pgsz_pgcnt |= hw_pages; in ocrdma_mbx_create_cq()
1826 cmd->cmd.ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; in ocrdma_mbx_create_cq()
1829 cmd->cmd.req.rsvd_version = OCRDMA_CREATE_CQ_VER3; in ocrdma_mbx_create_cq()
1834 cmd->cmd.ev_cnt_flags |= (0x3 << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1850 cmd->cmd.ev_cnt_flags |= (count << OCRDMA_CREATE_CQ_CNT_SHIFT); in ocrdma_mbx_create_cq()
1853 cmd->cmd.eqn = cq->eqn; in ocrdma_mbx_create_cq()
1856 cmd->cmd.pgsz_pgcnt |= OCRDMA_CREATE_CQ_DPP << in ocrdma_mbx_create_cq()
1859 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size); in ocrdma_mbx_create_cq()
1861 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size) - 1; in ocrdma_mbx_create_cq()
1862 cmd->cmd.ev_cnt_flags |= OCRDMA_CREATE_CQ_FLAGS_AUTO_VALID; in ocrdma_mbx_create_cq()
1867 cmd->cmd.pdid_cqecnt |= (pd_id << in ocrdma_mbx_create_cq()
1869 ocrdma_build_q_pages(&cmd->cmd.pa[0], hw_pages, cq->pa, page_size); in ocrdma_mbx_create_cq()
1870 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_cq()
1874 rsp = (struct ocrdma_create_cq_rsp *)cmd; in ocrdma_mbx_create_cq()
1876 kfree(cmd); in ocrdma_mbx_create_cq()
1882 kfree(cmd); in ocrdma_mbx_create_cq()
1889 struct ocrdma_destroy_cq *cmd; in ocrdma_mbx_destroy_cq() local
1891 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_CQ, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1892 if (!cmd) in ocrdma_mbx_destroy_cq()
1894 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_DELETE_CQ, in ocrdma_mbx_destroy_cq()
1895 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); in ocrdma_mbx_destroy_cq()
1897 cmd->bypass_flush_qid |= in ocrdma_mbx_destroy_cq()
1901 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_cq()
1904 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()
1956 kfree(cmd); in ocrdma_mbx_dealloc_lkey()
1965 struct ocrdma_reg_nsmr *cmd; in ocrdma_mbx_reg_mr() local
1968 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR, sizeof(*cmd)); in ocrdma_mbx_reg_mr()
1969 if (!cmd) in ocrdma_mbx_reg_mr()
1971 cmd->num_pbl_pdid = in ocrdma_mbx_reg_mr()
1973 cmd->fr_mr = hwmr->fr_mr; in ocrdma_mbx_reg_mr()
1975 cmd->flags_hpage_pbe_sz |= (hwmr->remote_wr << in ocrdma_mbx_reg_mr()
1977 cmd->flags_hpage_pbe_sz |= (hwmr->remote_rd << in ocrdma_mbx_reg_mr()
1979 cmd->flags_hpage_pbe_sz |= (hwmr->local_wr << in ocrdma_mbx_reg_mr()
1981 cmd->flags_hpage_pbe_sz |= (hwmr->remote_atomic << in ocrdma_mbx_reg_mr()
1983 cmd->flags_hpage_pbe_sz |= (hwmr->mw_bind << in ocrdma_mbx_reg_mr()
1985 cmd->flags_hpage_pbe_sz |= (last << OCRDMA_REG_NSMR_LAST_SHIFT); in ocrdma_mbx_reg_mr()
1987 cmd->flags_hpage_pbe_sz |= (hwmr->pbe_size / OCRDMA_MIN_HPAGE_SIZE); in ocrdma_mbx_reg_mr()
1988 cmd->flags_hpage_pbe_sz |= (hwmr->pbl_size / OCRDMA_MIN_HPAGE_SIZE) << in ocrdma_mbx_reg_mr()
1990 cmd->totlen_low = hwmr->len; in ocrdma_mbx_reg_mr()
1991 cmd->totlen_high = upper_32_bits(hwmr->len); in ocrdma_mbx_reg_mr()
1992 cmd->fbo_low = (u32) (hwmr->fbo & 0xffffffff); in ocrdma_mbx_reg_mr()
1993 cmd->fbo_high = (u32) upper_32_bits(hwmr->fbo); in ocrdma_mbx_reg_mr()
1994 cmd->va_loaddr = (u32) hwmr->va; in ocrdma_mbx_reg_mr()
1995 cmd->va_hiaddr = (u32) upper_32_bits(hwmr->va); in ocrdma_mbx_reg_mr()
1998 cmd->pbl[i].lo = (u32) (hwmr->pbl_table[i].pa & 0xffffffff); in ocrdma_mbx_reg_mr()
1999 cmd->pbl[i].hi = upper_32_bits(hwmr->pbl_table[i].pa); in ocrdma_mbx_reg_mr()
2001 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr()
2004 rsp = (struct ocrdma_reg_nsmr_rsp *)cmd; in ocrdma_mbx_reg_mr()
2007 kfree(cmd); in ocrdma_mbx_reg_mr()
2017 struct ocrdma_reg_nsmr_cont *cmd; in ocrdma_mbx_reg_mr_cont() local
2019 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR_CONT, sizeof(*cmd)); in ocrdma_mbx_reg_mr_cont()
2020 if (!cmd) in ocrdma_mbx_reg_mr_cont()
2022 cmd->lrkey = hwmr->lkey; in ocrdma_mbx_reg_mr_cont()
2023 cmd->num_pbl_offset = (pbl_cnt << OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT) | in ocrdma_mbx_reg_mr_cont()
2025 cmd->last = last << OCRDMA_REG_NSMR_CONT_LAST_SHIFT; in ocrdma_mbx_reg_mr_cont()
2028 cmd->pbl[i].lo = in ocrdma_mbx_reg_mr_cont()
2030 cmd->pbl[i].hi = in ocrdma_mbx_reg_mr_cont()
2033 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_reg_mr_cont()
2037 kfree(cmd); in ocrdma_mbx_reg_mr_cont()
2185 static int ocrdma_set_create_qp_sq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_sq_cmd() argument
2219 ocrdma_build_q_pages(&cmd->wq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_sq_cmd()
2221 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_set_create_qp_sq_cmd()
2223 cmd->num_wq_rq_pages |= (hw_pages << in ocrdma_set_create_qp_sq_cmd()
2226 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2229 cmd->max_sge_send_write |= (max_sges << in ocrdma_set_create_qp_sq_cmd()
2232 cmd->max_wqe_rqe |= (ilog2(qp->sq.max_cnt) << in ocrdma_set_create_qp_sq_cmd()
2235 cmd->wqe_rqe_size |= (dev->attr.wqe_size << in ocrdma_set_create_qp_sq_cmd()
2241 static int ocrdma_set_create_qp_rq_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_rq_cmd() argument
2271 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_set_create_qp_rq_cmd()
2272 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_set_create_qp_rq_cmd()
2274 cmd->num_wq_rq_pages |= in ocrdma_set_create_qp_rq_cmd()
2277 cmd->max_sge_recv_flags |= (attrs->cap.max_recv_sge << in ocrdma_set_create_qp_rq_cmd()
2280 cmd->max_wqe_rqe |= (ilog2(qp->rq.max_cnt) << in ocrdma_set_create_qp_rq_cmd()
2283 cmd->wqe_rqe_size |= (dev->attr.rqe_size << in ocrdma_set_create_qp_rq_cmd()
2289 static void ocrdma_set_create_qp_dpp_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_dpp_cmd() argument
2296 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2299 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; in ocrdma_set_create_qp_dpp_cmd()
2300 cmd->dpp_credits_cqid = dpp_cq_id; in ocrdma_set_create_qp_dpp_cmd()
2301 cmd->dpp_credits_cqid |= OCRDMA_CREATE_QP_REQ_DPP_CREDIT_LIMIT << in ocrdma_set_create_qp_dpp_cmd()
2305 static int ocrdma_set_create_qp_ird_cmd(struct ocrdma_create_qp_req *cmd, in ocrdma_set_create_qp_ird_cmd() argument
2325 ocrdma_build_q_pages(&cmd->ird_addr[0], dev->attr.num_ird_pages, in ocrdma_set_create_qp_ird_cmd()
2384 struct ocrdma_create_qp_req *cmd; in ocrdma_mbx_create_qp() local
2402 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_QP, sizeof(*cmd)); in ocrdma_mbx_create_qp()
2403 if (!cmd) in ocrdma_mbx_create_qp()
2405 cmd->type_pgsz_pdn |= (qptype << OCRDMA_CREATE_QP_REQ_QPT_SHIFT) & in ocrdma_mbx_create_qp()
2407 status = ocrdma_set_create_qp_sq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2413 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_USE_SRQ_MASK; in ocrdma_mbx_create_qp()
2414 cmd->rq_addr[0].lo = srq->id; in ocrdma_mbx_create_qp()
2417 status = ocrdma_set_create_qp_rq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2422 status = ocrdma_set_create_qp_ird_cmd(cmd, qp); in ocrdma_mbx_create_qp()
2426 cmd->type_pgsz_pdn |= (pd->id << OCRDMA_CREATE_QP_REQ_PD_ID_SHIFT) & in ocrdma_mbx_create_qp()
2431 cmd->max_sge_recv_flags |= flags; in ocrdma_mbx_create_qp()
2432 cmd->max_ord_ird |= (dev->attr.max_ord_per_qp << in ocrdma_mbx_create_qp()
2435 cmd->max_ord_ird |= (dev->attr.max_ird_per_qp << in ocrdma_mbx_create_qp()
2439 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2443 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2449 ocrdma_set_create_qp_dpp_cmd(cmd, pd, qp, enable_dpp_cq, in ocrdma_mbx_create_qp()
2453 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_qp()
2456 rsp = (struct ocrdma_create_qp_rsp *)cmd; in ocrdma_mbx_create_qp()
2459 kfree(cmd); in ocrdma_mbx_create_qp()
2469 kfree(cmd); in ocrdma_mbx_create_qp()
2477 struct ocrdma_query_qp *cmd; in ocrdma_mbx_query_qp() local
2480 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_QP, sizeof(*rsp)); in ocrdma_mbx_query_qp()
2481 if (!cmd) in ocrdma_mbx_query_qp()
2483 cmd->qp_id = qp->id; in ocrdma_mbx_query_qp()
2484 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_qp()
2487 rsp = (struct ocrdma_query_qp_rsp *)cmd; in ocrdma_mbx_query_qp()
2490 kfree(cmd); in ocrdma_mbx_query_qp()
2495 struct ocrdma_modify_qp *cmd, in ocrdma_set_av_params() argument
2511 cmd->params.tclass_sq_psn |= in ocrdma_set_av_params()
2513 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2515 cmd->params.rnt_rc_sl_fl |= (ah_attr->sl << OCRDMA_QP_PARAMS_SL_SHIFT); in ocrdma_set_av_params()
2516 cmd->params.hop_lmt_rq_psn |= in ocrdma_set_av_params()
2518 cmd->flags |= OCRDMA_QP_PARA_FLOW_LBL_VALID; in ocrdma_set_av_params()
2519 memcpy(&cmd->params.dgid[0], &ah_attr->grh.dgid.raw[0], in ocrdma_set_av_params()
2520 sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2535 memcpy(&cmd->params.sgid[0], &sgid.raw[0], sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2539 cmd->params.dmac_b0_to_b3 = mac_addr[0] | (mac_addr[1] << 8) | in ocrdma_set_av_params()
2542 ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); in ocrdma_set_av_params()
2543 ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); in ocrdma_set_av_params()
2544 cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); in ocrdma_set_av_params()
2555 cmd->params.vlan_dmac_b4_to_b5 |= in ocrdma_set_av_params()
2557 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; in ocrdma_set_av_params()
2558 cmd->params.rnt_rc_sl_fl |= in ocrdma_set_av_params()
2566 struct ocrdma_modify_qp *cmd, in ocrdma_set_qp_params() argument
2573 cmd->params.path_mtu_pkey_indx |= (attrs->pkey_index & in ocrdma_set_qp_params()
2575 cmd->flags |= OCRDMA_QP_PARA_PKEY_VALID; in ocrdma_set_qp_params()
2579 cmd->params.qkey = attrs->qkey; in ocrdma_set_qp_params()
2580 cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; in ocrdma_set_qp_params()
2583 status = ocrdma_set_av_params(qp, cmd, attrs, attr_mask); in ocrdma_set_qp_params()
2588 cmd->params.dmac_b0_to_b3 = dev->nic_info.mac_addr[0] | in ocrdma_set_qp_params()
2592 cmd->params.vlan_dmac_b4_to_b5 = dev->nic_info.mac_addr[4] | in ocrdma_set_qp_params()
2597 cmd->params.max_sge_recv_flags |= in ocrdma_set_qp_params()
2599 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2602 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->dest_qp_num & in ocrdma_set_qp_params()
2604 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; in ocrdma_set_qp_params()
2614 cmd->params.path_mtu_pkey_indx |= in ocrdma_set_qp_params()
2618 cmd->flags |= OCRDMA_QP_PARA_PMTU_VALID; in ocrdma_set_qp_params()
2621 cmd->params.ack_to_rnr_rtc_dest_qpn |= attrs->timeout << in ocrdma_set_qp_params()
2623 cmd->flags |= OCRDMA_QP_PARA_ACK_TO_VALID; in ocrdma_set_qp_params()
2626 cmd->params.rnt_rc_sl_fl |= (attrs->retry_cnt << in ocrdma_set_qp_params()
2629 cmd->flags |= OCRDMA_QP_PARA_RETRY_CNT_VALID; in ocrdma_set_qp_params()
2632 cmd->params.rnt_rc_sl_fl |= (attrs->min_rnr_timer << in ocrdma_set_qp_params()
2635 cmd->flags |= OCRDMA_QP_PARA_RNT_VALID; in ocrdma_set_qp_params()
2638 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->rnr_retry << in ocrdma_set_qp_params()
2641 cmd->flags |= OCRDMA_QP_PARA_RRC_VALID; in ocrdma_set_qp_params()
2644 cmd->params.tclass_sq_psn |= (attrs->sq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2645 cmd->flags |= OCRDMA_QP_PARA_SQPSN_VALID; in ocrdma_set_qp_params()
2648 cmd->params.hop_lmt_rq_psn |= (attrs->rq_psn & 0x00ffffff); in ocrdma_set_qp_params()
2649 cmd->flags |= OCRDMA_QP_PARA_RQPSN_VALID; in ocrdma_set_qp_params()
2657 cmd->flags |= OCRDMA_QP_PARA_MAX_ORD_VALID; in ocrdma_set_qp_params()
2665 cmd->flags |= OCRDMA_QP_PARA_MAX_IRD_VALID; in ocrdma_set_qp_params()
2667 cmd->params.max_ord_ird = (qp->max_ord << in ocrdma_set_qp_params()
2678 struct ocrdma_modify_qp *cmd; in ocrdma_mbx_modify_qp() local
2680 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_QP, sizeof(*cmd)); in ocrdma_mbx_modify_qp()
2681 if (!cmd) in ocrdma_mbx_modify_qp()
2684 cmd->params.id = qp->id; in ocrdma_mbx_modify_qp()
2685 cmd->flags = 0; in ocrdma_mbx_modify_qp()
2687 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2691 cmd->flags |= OCRDMA_QP_PARA_QPS_VALID; in ocrdma_mbx_modify_qp()
2693 cmd->params.max_sge_recv_flags |= in ocrdma_mbx_modify_qp()
2698 status = ocrdma_set_qp_params(qp, cmd, attrs, attr_mask); in ocrdma_mbx_modify_qp()
2701 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_qp()
2706 kfree(cmd); in ocrdma_mbx_modify_qp()
2713 struct ocrdma_destroy_qp *cmd; in ocrdma_mbx_destroy_qp() local
2716 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_QP, sizeof(*cmd)); in ocrdma_mbx_destroy_qp()
2717 if (!cmd) in ocrdma_mbx_destroy_qp()
2719 cmd->qp_id = qp->id; in ocrdma_mbx_destroy_qp()
2720 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_qp()
2725 kfree(cmd); in ocrdma_mbx_destroy_qp()
2743 struct ocrdma_create_srq *cmd; in ocrdma_mbx_create_srq() local
2748 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_SRQ, sizeof(*cmd)); in ocrdma_mbx_create_srq()
2749 if (!cmd) in ocrdma_mbx_create_srq()
2752 cmd->pgsz_pdid = pd->id & OCRDMA_CREATE_SRQ_PD_ID_MASK; in ocrdma_mbx_create_srq()
2769 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); in ocrdma_mbx_create_srq()
2776 cmd->max_sge_rqe = ilog2(max_rqe_allocated); in ocrdma_mbx_create_srq()
2777 cmd->max_sge_rqe |= srq_attr->attr.max_sge << in ocrdma_mbx_create_srq()
2780 cmd->pgsz_pdid |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) in ocrdma_mbx_create_srq()
2782 cmd->pages_rqe_sz |= (dev->attr.rqe_size in ocrdma_mbx_create_srq()
2785 cmd->pages_rqe_sz |= hw_pages << OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT; in ocrdma_mbx_create_srq()
2787 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_create_srq()
2790 rsp = (struct ocrdma_create_srq_rsp *)cmd; in ocrdma_mbx_create_srq()
2806 kfree(cmd); in ocrdma_mbx_create_srq()
2813 struct ocrdma_modify_srq *cmd; in ocrdma_mbx_modify_srq() local
2817 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_SRQ, sizeof(*cmd)); in ocrdma_mbx_modify_srq()
2818 if (!cmd) in ocrdma_mbx_modify_srq()
2820 cmd->id = srq->id; in ocrdma_mbx_modify_srq()
2821 cmd->limit_max_rqe |= srq_attr->srq_limit << in ocrdma_mbx_modify_srq()
2823 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_modify_srq()
2824 kfree(cmd); in ocrdma_mbx_modify_srq()
2831 struct ocrdma_query_srq *cmd; in ocrdma_mbx_query_srq() local
2834 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_SRQ, sizeof(*cmd)); in ocrdma_mbx_query_srq()
2835 if (!cmd) in ocrdma_mbx_query_srq()
2837 cmd->id = srq->rq.dbid; in ocrdma_mbx_query_srq()
2838 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_query_srq()
2841 (struct ocrdma_query_srq_rsp *)cmd; in ocrdma_mbx_query_srq()
2850 kfree(cmd); in ocrdma_mbx_query_srq()
2857 struct ocrdma_destroy_srq *cmd; in ocrdma_mbx_destroy_srq() local
2859 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_SRQ, sizeof(*cmd)); in ocrdma_mbx_destroy_srq()
2860 if (!cmd) in ocrdma_mbx_destroy_srq()
2862 cmd->id = srq->id; in ocrdma_mbx_destroy_srq()
2863 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); in ocrdma_mbx_destroy_srq()
2867 kfree(cmd); in ocrdma_mbx_destroy_srq()
2876 struct ocrdma_mqe cmd; in ocrdma_mbx_get_dcbx_config() local
2881 struct ocrdma_mqe_sge *mqe_sge = cmd.u.nonemb_req.sge; in ocrdma_mbx_get_dcbx_config()
2883 memset(&cmd, 0, sizeof(struct ocrdma_mqe)); in ocrdma_mbx_get_dcbx_config()
2884 cmd.hdr.pyld_len = max_t (u32, sizeof(struct ocrdma_get_dcbx_cfg_rsp), in ocrdma_mbx_get_dcbx_config()
2886 req = dma_alloc_coherent(&pdev->dev, cmd.hdr.pyld_len, &pa, GFP_KERNEL); in ocrdma_mbx_get_dcbx_config()
2892 cmd.hdr.spcl_sge_cnt_emb |= (1 << OCRDMA_MQE_HDR_SGE_CNT_SHIFT) & in ocrdma_mbx_get_dcbx_config()
2896 mqe_sge->len = cmd.hdr.pyld_len; in ocrdma_mbx_get_dcbx_config()
2900 OCRDMA_SUBSYS_DCBX, cmd.hdr.pyld_len); in ocrdma_mbx_get_dcbx_config()
2903 status = ocrdma_mbx_cmd(dev, &cmd); in ocrdma_mbx_get_dcbx_config()
2912 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()
3137 kfree(cmd); in ocrdma_mbx_modify_eqd()