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
302 * __rxe_init_mca - initialize a new mca holding lock
305 * @mca: empty space for new mca
308 * and pass memory for new mca
313 struct rxe_mca *mca) in __rxe_init_mca() argument
334 mca->qp = qp; in __rxe_init_mca()
336 list_add_tail(&mca->qp_list, &mcg->qp_list); in __rxe_init_mca()
352 struct rxe_mca *mca, *tmp; in rxe_attach_mcg() local
357 list_for_each_entry(mca, &mcg->qp_list, qp_list) { in rxe_attach_mcg()
358 if (mca->qp == qp) { in rxe_attach_mcg()
365 /* speculative alloc new mca without using GFP_ATOMIC */ in rxe_attach_mcg()
366 mca = kzalloc(sizeof(*mca), GFP_KERNEL); in rxe_attach_mcg()
367 if (!mca) in rxe_attach_mcg()
374 kfree(mca); in rxe_attach_mcg()
380 err = __rxe_init_mca(qp, mcg, mca); in rxe_attach_mcg()
382 kfree(mca); in rxe_attach_mcg()
389 * __rxe_cleanup_mca - cleanup mca object holding lock
390 * @mca: mca object
395 static void __rxe_cleanup_mca(struct rxe_mca *mca, struct rxe_mcg *mcg) in __rxe_cleanup_mca() argument
397 list_del(&mca->qp_list); in __rxe_cleanup_mca()
401 atomic_dec(&mca->qp->mcg_num); in __rxe_cleanup_mca()
402 rxe_put(mca->qp); in __rxe_cleanup_mca()
404 kfree(mca); in __rxe_cleanup_mca()
417 struct rxe_mca *mca, *tmp; in rxe_detach_mcg() local
420 list_for_each_entry_safe(mca, tmp, &mcg->qp_list, qp_list) { in rxe_detach_mcg()
421 if (mca->qp == qp) { in rxe_detach_mcg()
422 __rxe_cleanup_mca(mca, mcg); in rxe_detach_mcg()