Lines Matching refs:caps
1564 hr_dev->caps.fw_ver = (u64)(le32_to_cpu(resp->fw_ver)); in hns_roce_query_fw_ver()
1618 struct hns_roce_caps *caps = &hr_dev->caps; in load_func_res_caps() local
1639 caps->qpc_bt_num = hr_reg_read(r_a, FUNC_RES_A_QPC_BT_NUM) / func_num; in load_func_res_caps()
1640 caps->srqc_bt_num = hr_reg_read(r_a, FUNC_RES_A_SRQC_BT_NUM) / func_num; in load_func_res_caps()
1641 caps->cqc_bt_num = hr_reg_read(r_a, FUNC_RES_A_CQC_BT_NUM) / func_num; in load_func_res_caps()
1642 caps->mpt_bt_num = hr_reg_read(r_a, FUNC_RES_A_MPT_BT_NUM) / func_num; in load_func_res_caps()
1643 caps->eqc_bt_num = hr_reg_read(r_a, FUNC_RES_A_EQC_BT_NUM) / func_num; in load_func_res_caps()
1644 caps->smac_bt_num = hr_reg_read(r_b, FUNC_RES_B_SMAC_NUM) / func_num; in load_func_res_caps()
1645 caps->sgid_bt_num = hr_reg_read(r_b, FUNC_RES_B_SGID_NUM) / func_num; in load_func_res_caps()
1646 caps->sccc_bt_num = hr_reg_read(r_b, FUNC_RES_B_SCCC_BT_NUM) / func_num; in load_func_res_caps()
1649 caps->sl_num = hr_reg_read(r_b, FUNC_RES_V_QID_NUM) / func_num; in load_func_res_caps()
1650 caps->gmv_bt_num = hr_reg_read(r_b, FUNC_RES_V_GMV_BT_NUM) / in load_func_res_caps()
1653 caps->sl_num = hr_reg_read(r_b, FUNC_RES_B_QID_NUM) / func_num; in load_func_res_caps()
1654 caps->gmv_bt_num = hr_reg_read(r_b, FUNC_RES_B_GMV_BT_NUM) / in load_func_res_caps()
1665 struct hns_roce_caps *caps = &hr_dev->caps; in load_ext_cfg_caps() local
1676 caps->num_pi_qps = round_down(qp_num, HNS_ROCE_QP_BANK_NUM); in load_ext_cfg_caps()
1679 caps->num_qps = round_down(qp_num, HNS_ROCE_QP_BANK_NUM); in load_ext_cfg_caps()
1688 struct hns_roce_caps *caps = &hr_dev->caps; in load_pf_timer_res_caps() local
1698 caps->qpc_timer_bt_num = hr_reg_read(req, PF_TIMER_RES_QPC_ITEM_NUM); in load_pf_timer_res_caps()
1699 caps->cqc_timer_bt_num = hr_reg_read(req, PF_TIMER_RES_CQC_ITEM_NUM); in load_pf_timer_res_caps()
1792 struct hns_roce_caps *caps = &hr_dev->caps; in config_vf_hem_resource() local
1800 hr_reg_write(r_a, FUNC_RES_A_QPC_BT_NUM, caps->qpc_bt_num); in config_vf_hem_resource()
1801 hr_reg_write(r_a, FUNC_RES_A_QPC_BT_IDX, vf_id * caps->qpc_bt_num); in config_vf_hem_resource()
1802 hr_reg_write(r_a, FUNC_RES_A_SRQC_BT_NUM, caps->srqc_bt_num); in config_vf_hem_resource()
1803 hr_reg_write(r_a, FUNC_RES_A_SRQC_BT_IDX, vf_id * caps->srqc_bt_num); in config_vf_hem_resource()
1804 hr_reg_write(r_a, FUNC_RES_A_CQC_BT_NUM, caps->cqc_bt_num); in config_vf_hem_resource()
1805 hr_reg_write(r_a, FUNC_RES_A_CQC_BT_IDX, vf_id * caps->cqc_bt_num); in config_vf_hem_resource()
1806 hr_reg_write(r_a, FUNC_RES_A_MPT_BT_NUM, caps->mpt_bt_num); in config_vf_hem_resource()
1807 hr_reg_write(r_a, FUNC_RES_A_MPT_BT_IDX, vf_id * caps->mpt_bt_num); in config_vf_hem_resource()
1808 hr_reg_write(r_a, FUNC_RES_A_EQC_BT_NUM, caps->eqc_bt_num); in config_vf_hem_resource()
1809 hr_reg_write(r_a, FUNC_RES_A_EQC_BT_IDX, vf_id * caps->eqc_bt_num); in config_vf_hem_resource()
1810 hr_reg_write(r_b, FUNC_RES_V_QID_NUM, caps->sl_num); in config_vf_hem_resource()
1811 hr_reg_write(r_b, FUNC_RES_B_QID_IDX, vf_id * caps->sl_num); in config_vf_hem_resource()
1812 hr_reg_write(r_b, FUNC_RES_B_SCCC_BT_NUM, caps->sccc_bt_num); in config_vf_hem_resource()
1813 hr_reg_write(r_b, FUNC_RES_B_SCCC_BT_IDX, vf_id * caps->sccc_bt_num); in config_vf_hem_resource()
1816 hr_reg_write(r_b, FUNC_RES_V_GMV_BT_NUM, caps->gmv_bt_num); in config_vf_hem_resource()
1818 vf_id * caps->gmv_bt_num); in config_vf_hem_resource()
1820 hr_reg_write(r_b, FUNC_RES_B_SGID_NUM, caps->sgid_bt_num); in config_vf_hem_resource()
1822 vf_id * caps->sgid_bt_num); in config_vf_hem_resource()
1823 hr_reg_write(r_b, FUNC_RES_B_SMAC_NUM, caps->smac_bt_num); in config_vf_hem_resource()
1825 vf_id * caps->smac_bt_num); in config_vf_hem_resource()
1835 struct hns_roce_caps *caps = &hr_dev->caps; in config_vf_ext_resource() local
1841 hr_reg_write(req, EXT_CFG_QP_PI_NUM, caps->num_pi_qps); in config_vf_ext_resource()
1842 hr_reg_write(req, EXT_CFG_QP_PI_IDX, vf_id * caps->num_pi_qps); in config_vf_ext_resource()
1843 hr_reg_write(req, EXT_CFG_QP_NUM, caps->num_qps); in config_vf_ext_resource()
1844 hr_reg_write(req, EXT_CFG_QP_IDX, vf_id * caps->num_qps); in config_vf_ext_resource()
1882 struct hns_roce_caps *caps = &hr_dev->caps; in hns_roce_v2_set_bt() local
1887 caps->qpc_ba_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1889 caps->qpc_buf_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1891 to_hr_hem_hopnum(caps->qpc_hop_num, caps->num_qps)); in hns_roce_v2_set_bt()
1894 caps->srqc_ba_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1896 caps->srqc_buf_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1898 to_hr_hem_hopnum(caps->srqc_hop_num, caps->num_srqs)); in hns_roce_v2_set_bt()
1901 caps->cqc_ba_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1903 caps->cqc_buf_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1905 to_hr_hem_hopnum(caps->cqc_hop_num, caps->num_cqs)); in hns_roce_v2_set_bt()
1908 caps->mpt_ba_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1910 caps->mpt_buf_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1912 to_hr_hem_hopnum(caps->mpt_hop_num, caps->num_mtpts)); in hns_roce_v2_set_bt()
1915 caps->sccc_ba_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1917 caps->sccc_buf_pg_sz + PG_SHIFT_OFFSET); in hns_roce_v2_set_bt()
1919 to_hr_hem_hopnum(caps->sccc_hop_num, caps->num_qps)); in hns_roce_v2_set_bt()
1927 struct hns_roce_caps *caps = &hr_dev->caps; in set_default_caps() local
1929 caps->num_qps = HNS_ROCE_V2_MAX_QP_NUM; in set_default_caps()
1930 caps->max_wqes = HNS_ROCE_V2_MAX_WQE_NUM; in set_default_caps()
1931 caps->num_cqs = HNS_ROCE_V2_MAX_CQ_NUM; in set_default_caps()
1932 caps->num_srqs = HNS_ROCE_V2_MAX_SRQ_NUM; in set_default_caps()
1933 caps->min_cqes = HNS_ROCE_MIN_CQE_NUM; in set_default_caps()
1934 caps->max_cqes = HNS_ROCE_V2_MAX_CQE_NUM; in set_default_caps()
1935 caps->max_sq_sg = HNS_ROCE_V2_MAX_SQ_SGE_NUM; in set_default_caps()
1936 caps->max_extend_sg = HNS_ROCE_V2_MAX_EXTEND_SGE_NUM; in set_default_caps()
1937 caps->max_rq_sg = HNS_ROCE_V2_MAX_RQ_SGE_NUM; in set_default_caps()
1939 caps->num_uars = HNS_ROCE_V2_UAR_NUM; in set_default_caps()
1940 caps->phy_num_uars = HNS_ROCE_V2_PHY_UAR_NUM; in set_default_caps()
1941 caps->num_aeq_vectors = HNS_ROCE_V2_AEQE_VEC_NUM; in set_default_caps()
1942 caps->num_other_vectors = HNS_ROCE_V2_ABNORMAL_VEC_NUM; in set_default_caps()
1943 caps->num_comp_vectors = 0; in set_default_caps()
1945 caps->num_mtpts = HNS_ROCE_V2_MAX_MTPT_NUM; in set_default_caps()
1946 caps->num_pds = HNS_ROCE_V2_MAX_PD_NUM; in set_default_caps()
1947 caps->num_qpc_timer = HNS_ROCE_V2_MAX_QPC_TIMER_NUM; in set_default_caps()
1948 caps->num_cqc_timer = HNS_ROCE_V2_MAX_CQC_TIMER_NUM; in set_default_caps()
1950 caps->max_qp_init_rdma = HNS_ROCE_V2_MAX_QP_INIT_RDMA; in set_default_caps()
1951 caps->max_qp_dest_rdma = HNS_ROCE_V2_MAX_QP_DEST_RDMA; in set_default_caps()
1952 caps->max_sq_desc_sz = HNS_ROCE_V2_MAX_SQ_DESC_SZ; in set_default_caps()
1953 caps->max_rq_desc_sz = HNS_ROCE_V2_MAX_RQ_DESC_SZ; in set_default_caps()
1954 caps->max_srq_desc_sz = HNS_ROCE_V2_MAX_SRQ_DESC_SZ; in set_default_caps()
1955 caps->irrl_entry_sz = HNS_ROCE_V2_IRRL_ENTRY_SZ; in set_default_caps()
1956 caps->trrl_entry_sz = HNS_ROCE_V2_EXT_ATOMIC_TRRL_ENTRY_SZ; in set_default_caps()
1957 caps->cqc_entry_sz = HNS_ROCE_V2_CQC_ENTRY_SZ; in set_default_caps()
1958 caps->srqc_entry_sz = HNS_ROCE_V2_SRQC_ENTRY_SZ; in set_default_caps()
1959 caps->mtpt_entry_sz = HNS_ROCE_V2_MTPT_ENTRY_SZ; in set_default_caps()
1960 caps->idx_entry_sz = HNS_ROCE_V2_IDX_ENTRY_SZ; in set_default_caps()
1961 caps->page_size_cap = HNS_ROCE_V2_PAGE_SIZE_SUPPORTED; in set_default_caps()
1962 caps->reserved_lkey = 0; in set_default_caps()
1963 caps->reserved_pds = 0; in set_default_caps()
1964 caps->reserved_mrws = 1; in set_default_caps()
1965 caps->reserved_uars = 0; in set_default_caps()
1966 caps->reserved_cqs = 0; in set_default_caps()
1967 caps->reserved_srqs = 0; in set_default_caps()
1968 caps->reserved_qps = HNS_ROCE_V2_RSV_QPS; in set_default_caps()
1970 caps->qpc_hop_num = HNS_ROCE_CONTEXT_HOP_NUM; in set_default_caps()
1971 caps->srqc_hop_num = HNS_ROCE_CONTEXT_HOP_NUM; in set_default_caps()
1972 caps->cqc_hop_num = HNS_ROCE_CONTEXT_HOP_NUM; in set_default_caps()
1973 caps->mpt_hop_num = HNS_ROCE_CONTEXT_HOP_NUM; in set_default_caps()
1974 caps->sccc_hop_num = HNS_ROCE_SCCC_HOP_NUM; in set_default_caps()
1976 caps->mtt_hop_num = HNS_ROCE_MTT_HOP_NUM; in set_default_caps()
1977 caps->wqe_sq_hop_num = HNS_ROCE_SQWQE_HOP_NUM; in set_default_caps()
1978 caps->wqe_sge_hop_num = HNS_ROCE_EXT_SGE_HOP_NUM; in set_default_caps()
1979 caps->wqe_rq_hop_num = HNS_ROCE_RQWQE_HOP_NUM; in set_default_caps()
1980 caps->cqe_hop_num = HNS_ROCE_CQE_HOP_NUM; in set_default_caps()
1981 caps->srqwqe_hop_num = HNS_ROCE_SRQWQE_HOP_NUM; in set_default_caps()
1982 caps->idx_hop_num = HNS_ROCE_IDX_HOP_NUM; in set_default_caps()
1983 caps->chunk_sz = HNS_ROCE_V2_TABLE_CHUNK_SIZE; in set_default_caps()
1985 caps->flags = HNS_ROCE_CAP_FLAG_REREG_MR | in set_default_caps()
1990 caps->pkey_table_len[0] = 1; in set_default_caps()
1991 caps->ceqe_depth = HNS_ROCE_V2_COMP_EQE_NUM; in set_default_caps()
1992 caps->aeqe_depth = HNS_ROCE_V2_ASYNC_EQE_NUM; in set_default_caps()
1993 caps->local_ca_ack_delay = 0; in set_default_caps()
1994 caps->max_mtu = IB_MTU_4096; in set_default_caps()
1996 caps->max_srq_wrs = HNS_ROCE_V2_MAX_SRQ_WR; in set_default_caps()
1997 caps->max_srq_sges = HNS_ROCE_V2_MAX_SRQ_SGE; in set_default_caps()
1999 caps->flags |= HNS_ROCE_CAP_FLAG_ATOMIC | HNS_ROCE_CAP_FLAG_MW | in set_default_caps()
2003 caps->gid_table_len[0] = HNS_ROCE_V2_GID_INDEX_NUM; in set_default_caps()
2006 caps->flags |= HNS_ROCE_CAP_FLAG_STASH; in set_default_caps()
2007 caps->max_sq_inline = HNS_ROCE_V3_MAX_SQ_INLINE; in set_default_caps()
2009 caps->max_sq_inline = HNS_ROCE_V2_MAX_SQ_INLINE; in set_default_caps()
2012 caps->qpc_sz = HNS_ROCE_V2_QPC_SZ; in set_default_caps()
2013 caps->sccc_sz = HNS_ROCE_V2_SCCC_SZ; in set_default_caps()
2014 caps->cqe_sz = HNS_ROCE_V2_CQE_SIZE; in set_default_caps()
2062 struct hns_roce_caps *caps = &hr_dev->caps; in set_hem_page_size() local
2065 caps->eqe_ba_pg_sz = 0; in set_hem_page_size()
2066 caps->eqe_buf_pg_sz = 0; in set_hem_page_size()
2069 caps->llm_buf_pg_sz = 0; in set_hem_page_size()
2072 caps->mpt_ba_pg_sz = 0; in set_hem_page_size()
2073 caps->mpt_buf_pg_sz = 0; in set_hem_page_size()
2074 caps->pbl_ba_pg_sz = HNS_ROCE_BA_PG_SZ_SUPPORTED_16K; in set_hem_page_size()
2075 caps->pbl_buf_pg_sz = 0; in set_hem_page_size()
2076 calc_pg_sz(caps->num_mtpts, caps->mtpt_entry_sz, caps->mpt_hop_num, in set_hem_page_size()
2077 caps->mpt_bt_num, &caps->mpt_buf_pg_sz, &caps->mpt_ba_pg_sz, in set_hem_page_size()
2081 caps->qpc_ba_pg_sz = 0; in set_hem_page_size()
2082 caps->qpc_buf_pg_sz = 0; in set_hem_page_size()
2083 caps->qpc_timer_ba_pg_sz = 0; in set_hem_page_size()
2084 caps->qpc_timer_buf_pg_sz = 0; in set_hem_page_size()
2085 caps->sccc_ba_pg_sz = 0; in set_hem_page_size()
2086 caps->sccc_buf_pg_sz = 0; in set_hem_page_size()
2087 caps->mtt_ba_pg_sz = 0; in set_hem_page_size()
2088 caps->mtt_buf_pg_sz = 0; in set_hem_page_size()
2089 calc_pg_sz(caps->num_qps, caps->qpc_sz, caps->qpc_hop_num, in set_hem_page_size()
2090 caps->qpc_bt_num, &caps->qpc_buf_pg_sz, &caps->qpc_ba_pg_sz, in set_hem_page_size()
2093 if (caps->flags & HNS_ROCE_CAP_FLAG_QP_FLOW_CTRL) in set_hem_page_size()
2094 calc_pg_sz(caps->num_qps, caps->sccc_sz, caps->sccc_hop_num, in set_hem_page_size()
2095 caps->sccc_bt_num, &caps->sccc_buf_pg_sz, in set_hem_page_size()
2096 &caps->sccc_ba_pg_sz, HEM_TYPE_SCCC); in set_hem_page_size()
2099 caps->cqc_ba_pg_sz = 0; in set_hem_page_size()
2100 caps->cqc_buf_pg_sz = 0; in set_hem_page_size()
2101 caps->cqc_timer_ba_pg_sz = 0; in set_hem_page_size()
2102 caps->cqc_timer_buf_pg_sz = 0; in set_hem_page_size()
2103 caps->cqe_ba_pg_sz = HNS_ROCE_BA_PG_SZ_SUPPORTED_256K; in set_hem_page_size()
2104 caps->cqe_buf_pg_sz = 0; in set_hem_page_size()
2105 calc_pg_sz(caps->num_cqs, caps->cqc_entry_sz, caps->cqc_hop_num, in set_hem_page_size()
2106 caps->cqc_bt_num, &caps->cqc_buf_pg_sz, &caps->cqc_ba_pg_sz, in set_hem_page_size()
2108 calc_pg_sz(caps->max_cqes, caps->cqe_sz, caps->cqe_hop_num, in set_hem_page_size()
2109 1, &caps->cqe_buf_pg_sz, &caps->cqe_ba_pg_sz, HEM_TYPE_CQE); in set_hem_page_size()
2112 if (caps->flags & HNS_ROCE_CAP_FLAG_SRQ) { in set_hem_page_size()
2113 caps->srqc_ba_pg_sz = 0; in set_hem_page_size()
2114 caps->srqc_buf_pg_sz = 0; in set_hem_page_size()
2115 caps->srqwqe_ba_pg_sz = 0; in set_hem_page_size()
2116 caps->srqwqe_buf_pg_sz = 0; in set_hem_page_size()
2117 caps->idx_ba_pg_sz = 0; in set_hem_page_size()
2118 caps->idx_buf_pg_sz = 0; in set_hem_page_size()
2119 calc_pg_sz(caps->num_srqs, caps->srqc_entry_sz, in set_hem_page_size()
2120 caps->srqc_hop_num, caps->srqc_bt_num, in set_hem_page_size()
2121 &caps->srqc_buf_pg_sz, &caps->srqc_ba_pg_sz, in set_hem_page_size()
2123 calc_pg_sz(caps->num_srqwqe_segs, caps->mtt_entry_sz, in set_hem_page_size()
2124 caps->srqwqe_hop_num, 1, &caps->srqwqe_buf_pg_sz, in set_hem_page_size()
2125 &caps->srqwqe_ba_pg_sz, HEM_TYPE_SRQWQE); in set_hem_page_size()
2126 calc_pg_sz(caps->num_idx_segs, caps->idx_entry_sz, in set_hem_page_size()
2127 caps->idx_hop_num, 1, &caps->idx_buf_pg_sz, in set_hem_page_size()
2128 &caps->idx_ba_pg_sz, HEM_TYPE_IDX); in set_hem_page_size()
2132 caps->gmv_ba_pg_sz = 0; in set_hem_page_size()
2133 caps->gmv_buf_pg_sz = 0; in set_hem_page_size()
2139 struct hns_roce_caps *caps = &hr_dev->caps; in apply_func_caps() local
2143 caps->qpc_timer_entry_sz = HNS_ROCE_V2_QPC_TIMER_ENTRY_SZ; in apply_func_caps()
2144 caps->cqc_timer_entry_sz = HNS_ROCE_V2_CQC_TIMER_ENTRY_SZ; in apply_func_caps()
2145 caps->mtt_entry_sz = HNS_ROCE_V2_MTT_ENTRY_SZ; in apply_func_caps()
2147 caps->eqe_hop_num = HNS_ROCE_EQE_HOP_NUM; in apply_func_caps()
2148 caps->pbl_hop_num = HNS_ROCE_PBL_HOP_NUM; in apply_func_caps()
2149 caps->qpc_timer_hop_num = HNS_ROCE_HOP_NUM_0; in apply_func_caps()
2150 caps->cqc_timer_hop_num = HNS_ROCE_HOP_NUM_0; in apply_func_caps()
2152 caps->num_xrcds = HNS_ROCE_V2_MAX_XRCD_NUM; in apply_func_caps()
2153 caps->reserved_xrcds = HNS_ROCE_V2_RSV_XRCD_NUM; in apply_func_caps()
2155 caps->num_mtt_segs = HNS_ROCE_V2_MAX_MTT_SEGS; in apply_func_caps()
2156 caps->num_srqwqe_segs = HNS_ROCE_V2_MAX_SRQWQE_SEGS; in apply_func_caps()
2157 caps->num_idx_segs = HNS_ROCE_V2_MAX_IDX_SEGS; in apply_func_caps()
2159 if (!caps->num_comp_vectors) in apply_func_caps()
2160 caps->num_comp_vectors = min_t(u32, caps->eqc_bt_num - 1, in apply_func_caps()
2164 caps->ceqe_size = HNS_ROCE_V3_EQE_SIZE; in apply_func_caps()
2165 caps->aeqe_size = HNS_ROCE_V3_EQE_SIZE; in apply_func_caps()
2168 caps->qpc_sz = HNS_ROCE_V3_QPC_SZ; in apply_func_caps()
2169 caps->cqe_sz = HNS_ROCE_V3_CQE_SIZE; in apply_func_caps()
2170 caps->sccc_sz = HNS_ROCE_V3_SCCC_SZ; in apply_func_caps()
2173 caps->gmv_entry_sz = HNS_ROCE_V3_GMV_ENTRY_SZ; in apply_func_caps()
2175 caps->gmv_hop_num = HNS_ROCE_HOP_NUM_0; in apply_func_caps()
2176 caps->gid_table_len[0] = caps->gmv_bt_num * in apply_func_caps()
2177 (HNS_HW_PAGE_SIZE / caps->gmv_entry_sz); in apply_func_caps()
2179 caps->gmv_entry_num = caps->gmv_bt_num * (PAGE_SIZE / in apply_func_caps()
2180 caps->gmv_entry_sz); in apply_func_caps()
2184 caps->ceqe_size = HNS_ROCE_CEQE_SIZE; in apply_func_caps()
2185 caps->aeqe_size = HNS_ROCE_AEQE_SIZE; in apply_func_caps()
2186 caps->gid_table_len[0] /= func_num; in apply_func_caps()
2190 caps->default_aeq_arm_st = 0x3; in apply_func_caps()
2191 caps->default_ceq_arm_st = 0x3; in apply_func_caps()
2192 caps->default_ceq_max_cnt = 0x1; in apply_func_caps()
2193 caps->default_ceq_period = 0x10; in apply_func_caps()
2194 caps->default_aeq_max_cnt = 0x1; in apply_func_caps()
2195 caps->default_aeq_period = 0x10; in apply_func_caps()
2204 struct hns_roce_caps *caps = &hr_dev->caps; in hns_roce_query_pf_caps() local
2235 caps->local_ca_ack_delay = resp_a->local_ca_ack_delay; in hns_roce_query_pf_caps()
2236 caps->max_sq_sg = le16_to_cpu(resp_a->max_sq_sg); in hns_roce_query_pf_caps()
2237 caps->max_sq_inline = le16_to_cpu(resp_a->max_sq_inline); in hns_roce_query_pf_caps()
2238 caps->max_rq_sg = le16_to_cpu(resp_a->max_rq_sg); in hns_roce_query_pf_caps()
2239 caps->max_rq_sg = roundup_pow_of_two(caps->max_rq_sg); in hns_roce_query_pf_caps()
2240 caps->max_extend_sg = le32_to_cpu(resp_a->max_extend_sg); in hns_roce_query_pf_caps()
2241 caps->num_qpc_timer = le16_to_cpu(resp_a->num_qpc_timer); in hns_roce_query_pf_caps()
2242 caps->num_cqc_timer = le16_to_cpu(resp_a->num_cqc_timer); in hns_roce_query_pf_caps()
2243 caps->max_srq_sges = le16_to_cpu(resp_a->max_srq_sges); in hns_roce_query_pf_caps()
2244 caps->max_srq_sges = roundup_pow_of_two(caps->max_srq_sges); in hns_roce_query_pf_caps()
2245 caps->num_aeq_vectors = resp_a->num_aeq_vectors; in hns_roce_query_pf_caps()
2246 caps->num_other_vectors = resp_a->num_other_vectors; in hns_roce_query_pf_caps()
2247 caps->max_sq_desc_sz = resp_a->max_sq_desc_sz; in hns_roce_query_pf_caps()
2248 caps->max_rq_desc_sz = resp_a->max_rq_desc_sz; in hns_roce_query_pf_caps()
2249 caps->max_srq_desc_sz = resp_a->max_srq_desc_sz; in hns_roce_query_pf_caps()
2250 caps->cqe_sz = resp_a->cqe_sz; in hns_roce_query_pf_caps()
2252 caps->mtpt_entry_sz = resp_b->mtpt_entry_sz; in hns_roce_query_pf_caps()
2253 caps->irrl_entry_sz = resp_b->irrl_entry_sz; in hns_roce_query_pf_caps()
2254 caps->trrl_entry_sz = resp_b->trrl_entry_sz; in hns_roce_query_pf_caps()
2255 caps->cqc_entry_sz = resp_b->cqc_entry_sz; in hns_roce_query_pf_caps()
2256 caps->srqc_entry_sz = resp_b->srqc_entry_sz; in hns_roce_query_pf_caps()
2257 caps->idx_entry_sz = resp_b->idx_entry_sz; in hns_roce_query_pf_caps()
2258 caps->sccc_sz = resp_b->sccc_sz; in hns_roce_query_pf_caps()
2259 caps->max_mtu = resp_b->max_mtu; in hns_roce_query_pf_caps()
2260 caps->qpc_sz = le16_to_cpu(resp_b->qpc_sz); in hns_roce_query_pf_caps()
2261 caps->min_cqes = resp_b->min_cqes; in hns_roce_query_pf_caps()
2262 caps->min_wqes = resp_b->min_wqes; in hns_roce_query_pf_caps()
2263 caps->page_size_cap = le32_to_cpu(resp_b->page_size_cap); in hns_roce_query_pf_caps()
2264 caps->pkey_table_len[0] = resp_b->pkey_table_len; in hns_roce_query_pf_caps()
2265 caps->phy_num_uars = resp_b->phy_num_uars; in hns_roce_query_pf_caps()
2269 caps->num_pds = 1 << roce_get_field(resp_c->cap_flags_num_pds, in hns_roce_query_pf_caps()
2272 caps->flags = roce_get_field(resp_c->cap_flags_num_pds, in hns_roce_query_pf_caps()
2275 caps->flags |= le16_to_cpu(resp_d->cap_flags_ex) << in hns_roce_query_pf_caps()
2278 caps->num_cqs = 1 << roce_get_field(resp_c->max_gid_num_cqs, in hns_roce_query_pf_caps()
2281 caps->gid_table_len[0] = roce_get_field(resp_c->max_gid_num_cqs, in hns_roce_query_pf_caps()
2285 caps->max_cqes = 1 << roce_get_field(resp_c->cq_depth, in hns_roce_query_pf_caps()
2288 caps->num_mtpts = 1 << roce_get_field(resp_c->num_mrws, in hns_roce_query_pf_caps()
2291 caps->num_qps = 1 << roce_get_field(resp_c->ord_num_qps, in hns_roce_query_pf_caps()
2294 caps->max_qp_init_rdma = roce_get_field(resp_c->ord_num_qps, in hns_roce_query_pf_caps()
2297 caps->max_qp_dest_rdma = caps->max_qp_init_rdma; in hns_roce_query_pf_caps()
2298 caps->max_wqes = 1 << le16_to_cpu(resp_c->sq_depth); in hns_roce_query_pf_caps()
2299 caps->num_srqs = 1 << roce_get_field(resp_d->wq_hop_num_max_srqs, in hns_roce_query_pf_caps()
2302 caps->cong_type = roce_get_field(resp_d->wq_hop_num_max_srqs, in hns_roce_query_pf_caps()
2305 caps->max_srq_wrs = 1 << le16_to_cpu(resp_d->srq_depth); in hns_roce_query_pf_caps()
2307 caps->ceqe_depth = 1 << roce_get_field(resp_d->num_ceqs_ceq_depth, in hns_roce_query_pf_caps()
2310 caps->num_comp_vectors = roce_get_field(resp_d->num_ceqs_ceq_depth, in hns_roce_query_pf_caps()
2314 caps->aeqe_depth = 1 << roce_get_field(resp_d->arm_st_aeq_depth, in hns_roce_query_pf_caps()
2317 caps->default_aeq_arm_st = roce_get_field(resp_d->arm_st_aeq_depth, in hns_roce_query_pf_caps()
2320 caps->default_ceq_arm_st = roce_get_field(resp_d->arm_st_aeq_depth, in hns_roce_query_pf_caps()
2323 caps->reserved_pds = roce_get_field(resp_d->num_uars_rsv_pds, in hns_roce_query_pf_caps()
2326 caps->num_uars = 1 << roce_get_field(resp_d->num_uars_rsv_pds, in hns_roce_query_pf_caps()
2329 caps->reserved_qps = roce_get_field(resp_d->rsv_uars_rsv_qps, in hns_roce_query_pf_caps()
2332 caps->reserved_uars = roce_get_field(resp_d->rsv_uars_rsv_qps, in hns_roce_query_pf_caps()
2335 caps->reserved_mrws = roce_get_field(resp_e->chunk_size_shift_rsv_mrws, in hns_roce_query_pf_caps()
2338 caps->chunk_sz = 1 << roce_get_field(resp_e->chunk_size_shift_rsv_mrws, in hns_roce_query_pf_caps()
2341 caps->reserved_cqs = roce_get_field(resp_e->rsv_cqs, in hns_roce_query_pf_caps()
2344 caps->reserved_srqs = roce_get_field(resp_e->rsv_srqs, in hns_roce_query_pf_caps()
2347 caps->reserved_lkey = roce_get_field(resp_e->rsv_lkey, in hns_roce_query_pf_caps()
2350 caps->default_ceq_max_cnt = le16_to_cpu(resp_e->ceq_max_cnt); in hns_roce_query_pf_caps()
2351 caps->default_ceq_period = le16_to_cpu(resp_e->ceq_period); in hns_roce_query_pf_caps()
2352 caps->default_aeq_max_cnt = le16_to_cpu(resp_e->aeq_max_cnt); in hns_roce_query_pf_caps()
2353 caps->default_aeq_period = le16_to_cpu(resp_e->aeq_period); in hns_roce_query_pf_caps()
2355 caps->qpc_hop_num = ctx_hop_num; in hns_roce_query_pf_caps()
2356 caps->sccc_hop_num = ctx_hop_num; in hns_roce_query_pf_caps()
2357 caps->srqc_hop_num = ctx_hop_num; in hns_roce_query_pf_caps()
2358 caps->cqc_hop_num = ctx_hop_num; in hns_roce_query_pf_caps()
2359 caps->mpt_hop_num = ctx_hop_num; in hns_roce_query_pf_caps()
2360 caps->mtt_hop_num = pbl_hop_num; in hns_roce_query_pf_caps()
2361 caps->cqe_hop_num = pbl_hop_num; in hns_roce_query_pf_caps()
2362 caps->srqwqe_hop_num = pbl_hop_num; in hns_roce_query_pf_caps()
2363 caps->idx_hop_num = pbl_hop_num; in hns_roce_query_pf_caps()
2364 caps->wqe_sq_hop_num = roce_get_field(resp_d->wq_hop_num_max_srqs, in hns_roce_query_pf_caps()
2367 caps->wqe_sge_hop_num = roce_get_field(resp_d->wq_hop_num_max_srqs, in hns_roce_query_pf_caps()
2370 caps->wqe_rq_hop_num = roce_get_field(resp_d->wq_hop_num_max_srqs, in hns_roce_query_pf_caps()
2393 struct hns_roce_caps *caps = &hr_dev->caps; in hns_roce_config_entry_size() local
2400 caps->qpc_sz); in hns_roce_config_entry_size()
2407 caps->sccc_sz); in hns_roce_config_entry_size()
2578 pg_shift = hr_dev->caps.llm_buf_pg_sz + PAGE_SHIFT; in alloc_link_table_buf()
2579 size = hr_dev->caps.num_qps * HNS_ROCE_V2_EXT_LLM_ENTRY_SZ; in alloc_link_table_buf()
2580 min_size = HNS_ROCE_EXT_LLM_MIN_PAGES(hr_dev->caps.sl_num) << pg_shift; in alloc_link_table_buf()
2672 for (gmv_count = 0; gmv_count < hr_dev->caps.gmv_entry_num; in get_hem_table()
2683 for (qpc_count = 0; qpc_count < hr_dev->caps.qpc_timer_bt_num; in get_hem_table()
2694 for (cqc_count = 0; cqc_count < hr_dev->caps.cqc_timer_bt_num; in get_hem_table()
2725 for (i = 0; i < hr_dev->caps.gmv_entry_num; i++) in put_hem_table()
2731 for (i = 0; i < hr_dev->caps.qpc_timer_bt_num; i++) in put_hem_table()
2734 for (i = 0; i < hr_dev->caps.cqc_timer_bt_num; i++) in put_hem_table()
3345 if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_STASH) in hns_roce_v2_write_cqc()
3352 hr_reg_write(cq_context, CQC_CQE_HOP_NUM, hr_dev->caps.cqe_hop_num == in hns_roce_v2_write_cqc()
3353 HNS_ROCE_HOP_NUM_0 ? 0 : hr_dev->caps.cqe_hop_num); in hns_roce_v2_write_cqc()
3859 u32 idx = obj / (HNS_HW_PAGE_SIZE / hr_dev->caps.gmv_entry_sz); in config_gmv_ba_to_hw()
4013 qpc_size = hr_dev->caps.qpc_sz; in hns_roce_v2_qp_modify()
4127 hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RQ_INLINE); in modify_qp_reset_to_init()
4140 if (hr_dev->caps.qpc_sz < HNS_ROCE_V3_QPC_SZ) in modify_qp_reset_to_init()
4143 if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_STASH) in modify_qp_reset_to_init()
4209 to_hr_hem_hopnum(hr_dev->caps.wqe_sq_hop_num, in config_qp_rq_buf()
4214 to_hr_hem_hopnum(hr_dev->caps.wqe_sge_hop_num, in config_qp_rq_buf()
4219 to_hr_hem_hopnum(hr_dev->caps.wqe_rq_hop_num, in config_qp_rq_buf()
4514 *tail = (*tail == hr_dev->caps.num_qps - 1) ? 0 : (*tail + 1); in get_dip_ctx_idx()
4534 *head = (*head == hr_dev->caps.num_qps - 1) ? 0 : (*head + 1); in get_dip_ctx_idx()
4573 switch (hr_dev->caps.cong_type) { in check_cong_type()
4601 hr_dev->caps.cong_type); in check_cong_type()
4628 hr_dev->caps.cong_type * HNS_ROCE_CONG_SIZE); in fill_cong_field()
4703 if (grh->sgid_index >= hr_dev->caps.gid_table_len[hr_port]) { in hns_roce_v2_set_path()
4705 grh->sgid_index, hr_dev->caps.gid_table_len[hr_port]); in hns_roce_v2_set_path()
4794 memset(qpc_mask, 0, hr_dev->caps.qpc_sz); in hns_roce_v2_set_abs_fields()
5026 memset(context, 0, hr_dev->caps.qpc_sz); in hns_roce_v2_modify_qp()
5027 memset(qpc_mask, 0xff, hr_dev->caps.qpc_sz); in hns_roce_v2_modify_qp()
5104 memcpy(hr_context, mailbox->buf, hr_dev->caps.qpc_sz); in hns_roce_v2_query_qpc()
5363 to_hr_hem_hopnum(hr_dev->caps.idx_hop_num, srq->wqe_cnt)); in hns_roce_v2_write_srqc_index_queue()
5419 to_hr_hem_hopnum(hr_dev->caps.srqwqe_hop_num, in hns_roce_v2_write_srqc()
5876 if (eqn < hr_dev->caps.num_comp_vectors) in hns_roce_v2_destroy_eqc()
5969 if (hr_dev->caps.eqe_hop_num == HNS_ROCE_HOP_NUM_0) in alloc_eq_buf()
5972 eq->hop_num = hr_dev->caps.eqe_hop_num; in alloc_eq_buf()
5974 buf_attr.page_shift = hr_dev->caps.eqe_buf_pg_sz + PAGE_SHIFT; in alloc_eq_buf()
5980 hr_dev->caps.eqe_ba_pg_sz + PAGE_SHIFT, NULL, in alloc_eq_buf()
6102 eq_num = hr_dev->caps.num_comp_vectors + hr_dev->caps.num_aeq_vectors; in __hns_roce_free_irq()
6103 irq_num = eq_num + hr_dev->caps.num_other_vectors; in __hns_roce_free_irq()
6105 for (i = 0; i < hr_dev->caps.num_other_vectors; i++) in __hns_roce_free_irq()
6129 other_num = hr_dev->caps.num_other_vectors; in hns_roce_v2_init_eq_table()
6130 comp_num = hr_dev->caps.num_comp_vectors; in hns_roce_v2_init_eq_table()
6131 aeq_num = hr_dev->caps.num_aeq_vectors; in hns_roce_v2_init_eq_table()
6149 eq->entries = hr_dev->caps.ceqe_depth; in hns_roce_v2_init_eq_table()
6150 eq->eqe_size = hr_dev->caps.ceqe_size; in hns_roce_v2_init_eq_table()
6158 eq->entries = hr_dev->caps.aeqe_depth; in hns_roce_v2_init_eq_table()
6159 eq->eqe_size = hr_dev->caps.aeqe_size; in hns_roce_v2_init_eq_table()
6208 eq_num = hr_dev->caps.num_comp_vectors + hr_dev->caps.num_aeq_vectors; in hns_roce_v2_cleanup_eq_table()
6306 hr_dev->caps.num_ports = 1; in hns_roce_hw_v2_get_cfg()