Lines Matching refs:rdev
42 static int c4iw_init_qid_table(struct c4iw_rdev *rdev) in c4iw_init_qid_table() argument
46 if (c4iw_id_table_alloc(&rdev->resource.qid_table, in c4iw_init_qid_table()
47 rdev->adap->vres.qp.start, in c4iw_init_qid_table()
48 rdev->adap->vres.qp.size, in c4iw_init_qid_table()
49 rdev->adap->vres.qp.size, 0)) { in c4iw_init_qid_table()
54 for (i = rdev->adap->vres.qp.start; in c4iw_init_qid_table()
55 i < rdev->adap->vres.qp.start + rdev->adap->vres.qp.size; i++) in c4iw_init_qid_table()
56 if (!(i & rdev->qpmask)) in c4iw_init_qid_table()
57 c4iw_id_free(&rdev->resource.qid_table, i); in c4iw_init_qid_table()
62 int c4iw_init_resource(struct c4iw_rdev *rdev, u32 nr_tpt, u32 nr_pdid) in c4iw_init_resource() argument
65 err = c4iw_id_table_alloc(&rdev->resource.tpt_table, 0, nr_tpt, 1, in c4iw_init_resource()
69 err = c4iw_init_qid_table(rdev); in c4iw_init_resource()
72 err = c4iw_id_table_alloc(&rdev->resource.pdid_table, 0, in c4iw_init_resource()
78 c4iw_id_table_free(&rdev->resource.qid_table); in c4iw_init_resource()
80 c4iw_id_table_free(&rdev->resource.tpt_table); in c4iw_init_resource()
104 u32 c4iw_get_cqid(struct c4iw_rdev *rdev, struct c4iw_dev_ucontext *uctx) in c4iw_get_cqid() argument
118 qid = c4iw_get_resource(&rdev->resource.qid_table); in c4iw_get_cqid()
121 mutex_lock(&rdev->stats.lock); in c4iw_get_cqid()
122 rdev->stats.qid.cur += rdev->qpmask + 1; in c4iw_get_cqid()
123 mutex_unlock(&rdev->stats.lock); in c4iw_get_cqid()
124 for (i = qid+1; i & rdev->qpmask; i++) { in c4iw_get_cqid()
141 for (i = qid+1; i & rdev->qpmask; i++) { in c4iw_get_cqid()
152 mutex_lock(&rdev->stats.lock); in c4iw_get_cqid()
153 if (rdev->stats.qid.cur > rdev->stats.qid.max) in c4iw_get_cqid()
154 rdev->stats.qid.max = rdev->stats.qid.cur; in c4iw_get_cqid()
155 mutex_unlock(&rdev->stats.lock); in c4iw_get_cqid()
159 void c4iw_put_cqid(struct c4iw_rdev *rdev, u32 qid, in c4iw_put_cqid() argument
174 u32 c4iw_get_qpid(struct c4iw_rdev *rdev, struct c4iw_dev_ucontext *uctx) in c4iw_get_qpid() argument
188 qid = c4iw_get_resource(&rdev->resource.qid_table); in c4iw_get_qpid()
191 mutex_lock(&rdev->stats.lock); in c4iw_get_qpid()
192 rdev->stats.qid.cur += rdev->qpmask + 1; in c4iw_get_qpid()
193 mutex_unlock(&rdev->stats.lock); in c4iw_get_qpid()
194 for (i = qid+1; i & rdev->qpmask; i++) { in c4iw_get_qpid()
211 for (i = qid; i & rdev->qpmask; i++) { in c4iw_get_qpid()
222 mutex_lock(&rdev->stats.lock); in c4iw_get_qpid()
223 if (rdev->stats.qid.cur > rdev->stats.qid.max) in c4iw_get_qpid()
224 rdev->stats.qid.max = rdev->stats.qid.cur; in c4iw_get_qpid()
225 mutex_unlock(&rdev->stats.lock); in c4iw_get_qpid()
229 void c4iw_put_qpid(struct c4iw_rdev *rdev, u32 qid, in c4iw_put_qpid() argument
255 u32 c4iw_pblpool_alloc(struct c4iw_rdev *rdev, int size) in c4iw_pblpool_alloc() argument
259 vmem_xalloc(rdev->pbl_arena, roundup(size, (1 << MIN_PBL_SHIFT)), in c4iw_pblpool_alloc()
263 mutex_lock(&rdev->stats.lock); in c4iw_pblpool_alloc()
265 rdev->stats.pbl.cur += roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_alloc()
266 if (rdev->stats.pbl.cur > rdev->stats.pbl.max) in c4iw_pblpool_alloc()
267 rdev->stats.pbl.max = rdev->stats.pbl.cur; in c4iw_pblpool_alloc()
269 rdev->stats.pbl.fail++; in c4iw_pblpool_alloc()
270 mutex_unlock(&rdev->stats.lock); in c4iw_pblpool_alloc()
274 void c4iw_pblpool_free(struct c4iw_rdev *rdev, u32 addr, int size) in c4iw_pblpool_free() argument
277 mutex_lock(&rdev->stats.lock); in c4iw_pblpool_free()
278 rdev->stats.pbl.cur -= roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_free()
279 mutex_unlock(&rdev->stats.lock); in c4iw_pblpool_free()
280 vmem_xfree(rdev->pbl_arena, addr, roundup(size,(1 << MIN_PBL_SHIFT))); in c4iw_pblpool_free()
283 int c4iw_pblpool_create(struct c4iw_rdev *rdev) in c4iw_pblpool_create() argument
285 rdev->pbl_arena = vmem_create("PBL_MEM_POOL", in c4iw_pblpool_create()
286 rdev->adap->vres.pbl.start, in c4iw_pblpool_create()
287 rdev->adap->vres.pbl.size, in c4iw_pblpool_create()
289 if (!rdev->pbl_arena) in c4iw_pblpool_create()
295 void c4iw_pblpool_destroy(struct c4iw_rdev *rdev) in c4iw_pblpool_destroy() argument
297 vmem_destroy(rdev->pbl_arena); in c4iw_pblpool_destroy()
304 u32 c4iw_rqtpool_alloc(struct c4iw_rdev *rdev, int size) in c4iw_rqtpool_alloc() argument
308 vmem_xalloc(rdev->rqt_arena, in c4iw_rqtpool_alloc()
316 device_get_nameunit(rdev->adap->dev)); in c4iw_rqtpool_alloc()
317 mutex_lock(&rdev->stats.lock); in c4iw_rqtpool_alloc()
319 rdev->stats.rqt.cur += roundup(size << 6, 1 << MIN_RQT_SHIFT); in c4iw_rqtpool_alloc()
320 if (rdev->stats.rqt.cur > rdev->stats.rqt.max) in c4iw_rqtpool_alloc()
321 rdev->stats.rqt.max = rdev->stats.rqt.cur; in c4iw_rqtpool_alloc()
323 rdev->stats.rqt.fail++; in c4iw_rqtpool_alloc()
324 mutex_unlock(&rdev->stats.lock); in c4iw_rqtpool_alloc()
328 void c4iw_rqtpool_free(struct c4iw_rdev *rdev, u32 addr, int size) in c4iw_rqtpool_free() argument
331 mutex_lock(&rdev->stats.lock); in c4iw_rqtpool_free()
332 rdev->stats.rqt.cur -= roundup(size << 6, 1 << MIN_RQT_SHIFT); in c4iw_rqtpool_free()
333 mutex_unlock(&rdev->stats.lock); in c4iw_rqtpool_free()
334 vmem_xfree(rdev->rqt_arena, addr, in c4iw_rqtpool_free()
338 int c4iw_rqtpool_create(struct c4iw_rdev *rdev) in c4iw_rqtpool_create() argument
340 rdev->rqt_arena = vmem_create("RQT_MEM_POOL", in c4iw_rqtpool_create()
341 rdev->adap->vres.rq.start, in c4iw_rqtpool_create()
342 rdev->adap->vres.rq.size, in c4iw_rqtpool_create()
344 if (!rdev->rqt_arena) in c4iw_rqtpool_create()
350 void c4iw_rqtpool_destroy(struct c4iw_rdev *rdev) in c4iw_rqtpool_destroy() argument
352 vmem_destroy(rdev->rqt_arena); in c4iw_rqtpool_destroy()