Lines Matching +full:- +full:i

16  *      - Redistributions of source code must retain the above
20 * - Redistributions in binary form must reproduce the above
86 int i, j; in mlx4_make_profile() local
90 return -ENOMEM; in mlx4_make_profile()
92 profile[MLX4_RES_QP].size = dev_cap->qpc_entry_sz; in mlx4_make_profile()
93 profile[MLX4_RES_RDMARC].size = dev_cap->rdmarc_entry_sz; in mlx4_make_profile()
94 profile[MLX4_RES_ALTC].size = dev_cap->altc_entry_sz; in mlx4_make_profile()
95 profile[MLX4_RES_AUXC].size = dev_cap->aux_entry_sz; in mlx4_make_profile()
96 profile[MLX4_RES_SRQ].size = dev_cap->srq_entry_sz; in mlx4_make_profile()
97 profile[MLX4_RES_CQ].size = dev_cap->cqc_entry_sz; in mlx4_make_profile()
98 profile[MLX4_RES_EQ].size = dev_cap->eqc_entry_sz; in mlx4_make_profile()
99 profile[MLX4_RES_DMPT].size = dev_cap->dmpt_entry_sz; in mlx4_make_profile()
100 profile[MLX4_RES_CMPT].size = dev_cap->cmpt_entry_sz; in mlx4_make_profile()
101 profile[MLX4_RES_MTT].size = dev_cap->mtt_entry_sz; in mlx4_make_profile()
104 profile[MLX4_RES_QP].num = request->num_qp; in mlx4_make_profile()
105 profile[MLX4_RES_RDMARC].num = request->num_qp * request->rdmarc_per_qp; in mlx4_make_profile()
106 profile[MLX4_RES_ALTC].num = request->num_qp; in mlx4_make_profile()
107 profile[MLX4_RES_AUXC].num = request->num_qp; in mlx4_make_profile()
108 profile[MLX4_RES_SRQ].num = request->num_srq; in mlx4_make_profile()
109 profile[MLX4_RES_CQ].num = request->num_cq; in mlx4_make_profile()
110 profile[MLX4_RES_EQ].num = min_t(unsigned, dev_cap->max_eqs, MAX_MSIX); in mlx4_make_profile()
111 profile[MLX4_RES_DMPT].num = request->num_mpt; in mlx4_make_profile()
113 profile[MLX4_RES_MTT].num = request->num_mtt * (1 << log_mtts_per_seg); in mlx4_make_profile()
114 profile[MLX4_RES_MCG].num = request->num_mcg; in mlx4_make_profile()
116 for (i = 0; i < MLX4_RES_NUM; ++i) { in mlx4_make_profile()
117 profile[i].type = i; in mlx4_make_profile()
118 profile[i].num = roundup_pow_of_two(profile[i].num); in mlx4_make_profile()
119 profile[i].log_num = ilog2(profile[i].num); in mlx4_make_profile()
120 profile[i].size *= profile[i].num; in mlx4_make_profile()
121 profile[i].size = max(profile[i].size, (u64) PAGE_SIZE); in mlx4_make_profile()
130 for (i = MLX4_RES_NUM; i > 0; --i) in mlx4_make_profile()
131 for (j = 1; j < i; ++j) { in mlx4_make_profile()
132 if (profile[j].size > profile[j - 1].size) { in mlx4_make_profile()
134 profile[j] = profile[j - 1]; in mlx4_make_profile()
135 profile[j - 1] = tmp; in mlx4_make_profile()
139 for (i = 0; i < MLX4_RES_NUM; ++i) { in mlx4_make_profile()
140 if (profile[i].size) { in mlx4_make_profile()
141 profile[i].start = total_size; in mlx4_make_profile()
142 total_size += profile[i].size; in mlx4_make_profile()
145 if (total_size > dev_cap->max_icm_sz) { in mlx4_make_profile()
149 (unsigned long long) dev_cap->max_icm_sz); in mlx4_make_profile()
151 return -ENOMEM; in mlx4_make_profile()
154 if (profile[i].size) in mlx4_make_profile()
157 i, res_name[profile[i].type], profile[i].log_num, in mlx4_make_profile()
158 (unsigned long long) profile[i].start, in mlx4_make_profile()
159 (unsigned long long) profile[i].size); in mlx4_make_profile()
165 for (i = 0; i < MLX4_RES_NUM; ++i) { in mlx4_make_profile()
166 switch (profile[i].type) { in mlx4_make_profile()
168 dev->caps.num_qps = profile[i].num; in mlx4_make_profile()
169 init_hca->qpc_base = profile[i].start; in mlx4_make_profile()
170 init_hca->log_num_qps = profile[i].log_num; in mlx4_make_profile()
173 for (priv->qp_table.rdmarc_shift = 0; in mlx4_make_profile()
174 request->num_qp << priv->qp_table.rdmarc_shift < profile[i].num; in mlx4_make_profile()
175 ++priv->qp_table.rdmarc_shift) in mlx4_make_profile()
177 dev->caps.max_qp_dest_rdma = 1 << priv->qp_table.rdmarc_shift; in mlx4_make_profile()
178 priv->qp_table.rdmarc_base = (u32) profile[i].start; in mlx4_make_profile()
179 init_hca->rdmarc_base = profile[i].start; in mlx4_make_profile()
180 init_hca->log_rd_per_qp = priv->qp_table.rdmarc_shift; in mlx4_make_profile()
183 init_hca->altc_base = profile[i].start; in mlx4_make_profile()
186 init_hca->auxc_base = profile[i].start; in mlx4_make_profile()
189 dev->caps.num_srqs = profile[i].num; in mlx4_make_profile()
190 init_hca->srqc_base = profile[i].start; in mlx4_make_profile()
191 init_hca->log_num_srqs = profile[i].log_num; in mlx4_make_profile()
194 dev->caps.num_cqs = profile[i].num; in mlx4_make_profile()
195 init_hca->cqc_base = profile[i].start; in mlx4_make_profile()
196 init_hca->log_num_cqs = profile[i].log_num; in mlx4_make_profile()
199 dev->caps.num_eqs = profile[i].num; in mlx4_make_profile()
200 init_hca->eqc_base = profile[i].start; in mlx4_make_profile()
201 init_hca->log_num_eqs = profile[i].log_num; in mlx4_make_profile()
204 dev->caps.num_mpts = profile[i].num; in mlx4_make_profile()
205 priv->mr_table.mpt_base = profile[i].start; in mlx4_make_profile()
206 init_hca->dmpt_base = profile[i].start; in mlx4_make_profile()
207 init_hca->log_mpt_sz = profile[i].log_num; in mlx4_make_profile()
210 init_hca->cmpt_base = profile[i].start; in mlx4_make_profile()
213 dev->caps.num_mtts = profile[i].num; in mlx4_make_profile()
214 priv->mr_table.mtt_base = profile[i].start; in mlx4_make_profile()
215 init_hca->mtt_base = profile[i].start; in mlx4_make_profile()
218 dev->caps.num_mgms = profile[i].num >> 1; in mlx4_make_profile()
219 dev->caps.num_amgms = profile[i].num >> 1; in mlx4_make_profile()
220 init_hca->mc_base = profile[i].start; in mlx4_make_profile()
221 init_hca->log_mc_entry_sz = in mlx4_make_profile()
223 init_hca->log_mc_table_sz = profile[i].log_num; in mlx4_make_profile()
224 init_hca->log_mc_hash_sz = profile[i].log_num - 1; in mlx4_make_profile()
235 dev->caps.num_pds = MLX4_NUM_PDS; in mlx4_make_profile()