Lines Matching full:mca

11  * struct rxe_mca ('mca'). An mcg is allocated each time a qp is
17 * mca is created. It holds a pointer to the qp and is added to a list
284 * __rxe_init_mca - initialize a new mca holding lock
287 * @mca: empty space for new mca
290 * and pass memory for new mca
295 struct rxe_mca *mca) in __rxe_init_mca() argument
316 mca->qp = qp; in __rxe_init_mca()
318 list_add_tail(&mca->qp_list, &mcg->qp_list); in __rxe_init_mca()
334 struct rxe_mca *mca, *tmp; in rxe_attach_mcg() local
339 list_for_each_entry(mca, &mcg->qp_list, qp_list) { in rxe_attach_mcg()
340 if (mca->qp == qp) { in rxe_attach_mcg()
347 /* speculative alloc new mca without using GFP_ATOMIC */ in rxe_attach_mcg()
348 mca = kzalloc(sizeof(*mca), GFP_KERNEL); in rxe_attach_mcg()
349 if (!mca) in rxe_attach_mcg()
356 kfree(mca); in rxe_attach_mcg()
362 err = __rxe_init_mca(qp, mcg, mca); in rxe_attach_mcg()
364 kfree(mca); in rxe_attach_mcg()
371 * __rxe_cleanup_mca - cleanup mca object holding lock
372 * @mca: mca object
377 static void __rxe_cleanup_mca(struct rxe_mca *mca, struct rxe_mcg *mcg) in __rxe_cleanup_mca() argument
379 list_del(&mca->qp_list); in __rxe_cleanup_mca()
383 atomic_dec(&mca->qp->mcg_num); in __rxe_cleanup_mca()
384 rxe_put(mca->qp); in __rxe_cleanup_mca()
386 kfree(mca); in __rxe_cleanup_mca()
399 struct rxe_mca *mca, *tmp; in rxe_detach_mcg() local
402 list_for_each_entry_safe(mca, tmp, &mcg->qp_list, qp_list) { in rxe_detach_mcg()
403 if (mca->qp == qp) { in rxe_detach_mcg()
404 __rxe_cleanup_mca(mca, mcg); in rxe_detach_mcg()