Lines Matching refs:rdev

38 static int c4iw_init_qid_table(struct c4iw_rdev *rdev)  in c4iw_init_qid_table()  argument
42 if (c4iw_id_table_alloc(&rdev->resource.qid_table, in c4iw_init_qid_table()
43 rdev->lldi.vr->qp.start, in c4iw_init_qid_table()
44 rdev->lldi.vr->qp.size, in c4iw_init_qid_table()
45 rdev->lldi.vr->qp.size, 0)) in c4iw_init_qid_table()
48 for (i = rdev->lldi.vr->qp.start; in c4iw_init_qid_table()
49 i < rdev->lldi.vr->qp.start + rdev->lldi.vr->qp.size; i++) in c4iw_init_qid_table()
50 if (!(i & rdev->qpmask)) in c4iw_init_qid_table()
51 c4iw_id_free(&rdev->resource.qid_table, i); in c4iw_init_qid_table()
56 int c4iw_init_resource(struct c4iw_rdev *rdev, u32 nr_tpt, u32 nr_pdid) in c4iw_init_resource() argument
59 err = c4iw_id_table_alloc(&rdev->resource.tpt_table, 0, nr_tpt, 1, in c4iw_init_resource()
63 err = c4iw_init_qid_table(rdev); in c4iw_init_resource()
66 err = c4iw_id_table_alloc(&rdev->resource.pdid_table, 0, in c4iw_init_resource()
72 c4iw_id_table_free(&rdev->resource.qid_table); in c4iw_init_resource()
74 c4iw_id_table_free(&rdev->resource.tpt_table); in c4iw_init_resource()
97 u32 c4iw_get_cqid(struct c4iw_rdev *rdev, struct c4iw_dev_ucontext *uctx) in c4iw_get_cqid() argument
111 qid = c4iw_get_resource(&rdev->resource.qid_table); in c4iw_get_cqid()
114 mutex_lock(&rdev->stats.lock); in c4iw_get_cqid()
115 rdev->stats.qid.cur += rdev->qpmask + 1; in c4iw_get_cqid()
116 mutex_unlock(&rdev->stats.lock); in c4iw_get_cqid()
117 for (i = qid+1; i & rdev->qpmask; i++) { in c4iw_get_cqid()
134 for (i = qid+1; i & rdev->qpmask; i++) { in c4iw_get_cqid()
145 mutex_lock(&rdev->stats.lock); in c4iw_get_cqid()
146 if (rdev->stats.qid.cur > rdev->stats.qid.max) in c4iw_get_cqid()
147 rdev->stats.qid.max = rdev->stats.qid.cur; in c4iw_get_cqid()
148 mutex_unlock(&rdev->stats.lock); in c4iw_get_cqid()
152 void c4iw_put_cqid(struct c4iw_rdev *rdev, u32 qid, in c4iw_put_cqid() argument
167 u32 c4iw_get_qpid(struct c4iw_rdev *rdev, struct c4iw_dev_ucontext *uctx) in c4iw_get_qpid() argument
181 qid = c4iw_get_resource(&rdev->resource.qid_table); in c4iw_get_qpid()
183 mutex_lock(&rdev->stats.lock); in c4iw_get_qpid()
184 rdev->stats.qid.fail++; in c4iw_get_qpid()
185 mutex_unlock(&rdev->stats.lock); in c4iw_get_qpid()
188 mutex_lock(&rdev->stats.lock); in c4iw_get_qpid()
189 rdev->stats.qid.cur += rdev->qpmask + 1; in c4iw_get_qpid()
190 mutex_unlock(&rdev->stats.lock); in c4iw_get_qpid()
191 for (i = qid+1; i & rdev->qpmask; i++) { in c4iw_get_qpid()
208 for (i = qid; i & rdev->qpmask; i++) { in c4iw_get_qpid()
219 mutex_lock(&rdev->stats.lock); in c4iw_get_qpid()
220 if (rdev->stats.qid.cur > rdev->stats.qid.max) in c4iw_get_qpid()
221 rdev->stats.qid.max = rdev->stats.qid.cur; in c4iw_get_qpid()
222 mutex_unlock(&rdev->stats.lock); in c4iw_get_qpid()
226 void c4iw_put_qpid(struct c4iw_rdev *rdev, u32 qid, in c4iw_put_qpid() argument
254 u32 c4iw_pblpool_alloc(struct c4iw_rdev *rdev, int size) in c4iw_pblpool_alloc() argument
256 unsigned long addr = gen_pool_alloc(rdev->pbl_pool, size); in c4iw_pblpool_alloc()
258 mutex_lock(&rdev->stats.lock); in c4iw_pblpool_alloc()
260 rdev->stats.pbl.cur += roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_alloc()
261 if (rdev->stats.pbl.cur > rdev->stats.pbl.max) in c4iw_pblpool_alloc()
262 rdev->stats.pbl.max = rdev->stats.pbl.cur; in c4iw_pblpool_alloc()
264 rdev->stats.pbl.fail++; in c4iw_pblpool_alloc()
265 mutex_unlock(&rdev->stats.lock); in c4iw_pblpool_alloc()
269 void c4iw_pblpool_free(struct c4iw_rdev *rdev, u32 addr, int size) in c4iw_pblpool_free() argument
272 mutex_lock(&rdev->stats.lock); in c4iw_pblpool_free()
273 rdev->stats.pbl.cur -= roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_free()
274 mutex_unlock(&rdev->stats.lock); in c4iw_pblpool_free()
275 gen_pool_free(rdev->pbl_pool, (unsigned long)addr, size); in c4iw_pblpool_free()
278 int c4iw_pblpool_create(struct c4iw_rdev *rdev) in c4iw_pblpool_create() argument
282 rdev->pbl_pool = gen_pool_create(MIN_PBL_SHIFT, -1); in c4iw_pblpool_create()
283 if (!rdev->pbl_pool) in c4iw_pblpool_create()
286 pbl_start = rdev->lldi.vr->pbl.start; in c4iw_pblpool_create()
287 pbl_chunk = rdev->lldi.vr->pbl.size; in c4iw_pblpool_create()
292 if (gen_pool_add(rdev->pbl_pool, pbl_start, pbl_chunk, -1)) { in c4iw_pblpool_create()
313 void c4iw_pblpool_destroy(struct c4iw_rdev *rdev) in c4iw_pblpool_destroy() argument
315 gen_pool_destroy(rdev->pbl_pool); in c4iw_pblpool_destroy()
324 u32 c4iw_rqtpool_alloc(struct c4iw_rdev *rdev, int size) in c4iw_rqtpool_alloc() argument
326 unsigned long addr = gen_pool_alloc(rdev->rqt_pool, size << 6); in c4iw_rqtpool_alloc()
330 pci_name(rdev->lldi.pdev)); in c4iw_rqtpool_alloc()
331 mutex_lock(&rdev->stats.lock); in c4iw_rqtpool_alloc()
333 rdev->stats.rqt.cur += roundup(size << 6, 1 << MIN_RQT_SHIFT); in c4iw_rqtpool_alloc()
334 if (rdev->stats.rqt.cur > rdev->stats.rqt.max) in c4iw_rqtpool_alloc()
335 rdev->stats.rqt.max = rdev->stats.rqt.cur; in c4iw_rqtpool_alloc()
337 rdev->stats.rqt.fail++; in c4iw_rqtpool_alloc()
338 mutex_unlock(&rdev->stats.lock); in c4iw_rqtpool_alloc()
342 void c4iw_rqtpool_free(struct c4iw_rdev *rdev, u32 addr, int size) in c4iw_rqtpool_free() argument
345 mutex_lock(&rdev->stats.lock); in c4iw_rqtpool_free()
346 rdev->stats.rqt.cur -= roundup(size << 6, 1 << MIN_RQT_SHIFT); in c4iw_rqtpool_free()
347 mutex_unlock(&rdev->stats.lock); in c4iw_rqtpool_free()
348 gen_pool_free(rdev->rqt_pool, (unsigned long)addr, size << 6); in c4iw_rqtpool_free()
351 int c4iw_rqtpool_create(struct c4iw_rdev *rdev) in c4iw_rqtpool_create() argument
355 rdev->rqt_pool = gen_pool_create(MIN_RQT_SHIFT, -1); in c4iw_rqtpool_create()
356 if (!rdev->rqt_pool) in c4iw_rqtpool_create()
359 rqt_start = rdev->lldi.vr->rq.start; in c4iw_rqtpool_create()
360 rqt_chunk = rdev->lldi.vr->rq.size; in c4iw_rqtpool_create()
365 if (gen_pool_add(rdev->rqt_pool, rqt_start, rqt_chunk, -1)) { in c4iw_rqtpool_create()
384 void c4iw_rqtpool_destroy(struct c4iw_rdev *rdev) in c4iw_rqtpool_destroy() argument
386 gen_pool_destroy(rdev->rqt_pool); in c4iw_rqtpool_destroy()
394 u32 c4iw_ocqp_pool_alloc(struct c4iw_rdev *rdev, int size) in c4iw_ocqp_pool_alloc() argument
396 unsigned long addr = gen_pool_alloc(rdev->ocqp_pool, size); in c4iw_ocqp_pool_alloc()
399 mutex_lock(&rdev->stats.lock); in c4iw_ocqp_pool_alloc()
400 rdev->stats.ocqp.cur += roundup(size, 1 << MIN_OCQP_SHIFT); in c4iw_ocqp_pool_alloc()
401 if (rdev->stats.ocqp.cur > rdev->stats.ocqp.max) in c4iw_ocqp_pool_alloc()
402 rdev->stats.ocqp.max = rdev->stats.ocqp.cur; in c4iw_ocqp_pool_alloc()
403 mutex_unlock(&rdev->stats.lock); in c4iw_ocqp_pool_alloc()
408 void c4iw_ocqp_pool_free(struct c4iw_rdev *rdev, u32 addr, int size) in c4iw_ocqp_pool_free() argument
411 mutex_lock(&rdev->stats.lock); in c4iw_ocqp_pool_free()
412 rdev->stats.ocqp.cur -= roundup(size, 1 << MIN_OCQP_SHIFT); in c4iw_ocqp_pool_free()
413 mutex_unlock(&rdev->stats.lock); in c4iw_ocqp_pool_free()
414 gen_pool_free(rdev->ocqp_pool, (unsigned long)addr, size); in c4iw_ocqp_pool_free()
417 int c4iw_ocqp_pool_create(struct c4iw_rdev *rdev) in c4iw_ocqp_pool_create() argument
421 rdev->ocqp_pool = gen_pool_create(MIN_OCQP_SHIFT, -1); in c4iw_ocqp_pool_create()
422 if (!rdev->ocqp_pool) in c4iw_ocqp_pool_create()
425 start = rdev->lldi.vr->ocq.start; in c4iw_ocqp_pool_create()
426 chunk = rdev->lldi.vr->ocq.size; in c4iw_ocqp_pool_create()
431 if (gen_pool_add(rdev->ocqp_pool, start, chunk, -1)) { in c4iw_ocqp_pool_create()
450 void c4iw_ocqp_pool_destroy(struct c4iw_rdev *rdev) in c4iw_ocqp_pool_destroy() argument
452 gen_pool_destroy(rdev->ocqp_pool); in c4iw_ocqp_pool_destroy()