Lines Matching full:mbox

355 static int mbox_alloc(struct mbox_info *mbox, int inlen, int outlen)  in mbox_alloc()  argument
357 mbox->inlen = inlen; in mbox_alloc()
358 mbox->outlen = outlen; in mbox_alloc()
359 mbox->in = kzalloc(mbox->inlen, GFP_KERNEL); in mbox_alloc()
360 mbox->out = kzalloc(mbox->outlen, GFP_KERNEL); in mbox_alloc()
361 if (!mbox->in || !mbox->out) { in mbox_alloc()
362 kfree(mbox->in); in mbox_alloc()
363 kfree(mbox->out); in mbox_alloc()
370 static void mbox_free(struct mbox_info *mbox) in mbox_free() argument
372 kfree(mbox->in); in mbox_free()
373 kfree(mbox->out); in mbox_free()
405 struct mbox_info *mbox, u16 uid, u32 ece) in modify_qp_mbox_alloc() argument
407 mbox->out = NULL; in modify_qp_mbox_alloc()
408 mbox->in = NULL; in modify_qp_mbox_alloc()
410 #define MBOX_ALLOC(mbox, typ) \ in modify_qp_mbox_alloc() argument
411 mbox_alloc(mbox, MLX5_ST_SZ_BYTES(typ##_in), MLX5_ST_SZ_BYTES(typ##_out)) in modify_qp_mbox_alloc()
431 if (MBOX_ALLOC(mbox, qp_2rst)) in modify_qp_mbox_alloc()
433 MOD_QP_IN_SET(qp_2rst, mbox->in, opcode, qpn, uid); in modify_qp_mbox_alloc()
436 if (MBOX_ALLOC(mbox, qp_2err)) in modify_qp_mbox_alloc()
438 MOD_QP_IN_SET(qp_2err, mbox->in, opcode, qpn, uid); in modify_qp_mbox_alloc()
443 if (MBOX_ALLOC(mbox, rst2init_qp)) in modify_qp_mbox_alloc()
445 MOD_QP_IN_SET_QPC(rst2init_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
447 MLX5_SET(rst2init_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
450 if (MBOX_ALLOC(mbox, init2rtr_qp)) in modify_qp_mbox_alloc()
452 MOD_QP_IN_SET_QPC(init2rtr_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
454 MLX5_SET(init2rtr_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
457 if (MBOX_ALLOC(mbox, rtr2rts_qp)) in modify_qp_mbox_alloc()
459 MOD_QP_IN_SET_QPC(rtr2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
461 MLX5_SET(rtr2rts_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
464 if (MBOX_ALLOC(mbox, rts2rts_qp)) in modify_qp_mbox_alloc()
466 MOD_QP_IN_SET_QPC(rts2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
468 MLX5_SET(rts2rts_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
471 if (MBOX_ALLOC(mbox, sqerr2rts_qp)) in modify_qp_mbox_alloc()
473 MOD_QP_IN_SET_QPC(sqerr2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
477 if (MBOX_ALLOC(mbox, sqd2rts_qp)) in modify_qp_mbox_alloc()
479 MOD_QP_IN_SET_QPC(sqd2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
483 if (MBOX_ALLOC(mbox, init2init_qp)) in modify_qp_mbox_alloc()
485 MOD_QP_IN_SET_QPC(init2init_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
487 MLX5_SET(init2init_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
498 struct mbox_info mbox; in mlx5_core_qp_modify() local
502 qpc, &mbox, qp->uid, (ece) ? *ece : 0); in mlx5_core_qp_modify()
506 err = mlx5_cmd_exec(dev->mdev, mbox.in, mbox.inlen, mbox.out, in mlx5_core_qp_modify()
507 mbox.outlen); in mlx5_core_qp_modify()
510 *ece = get_ece_from_mbox(mbox.out, opcode); in mlx5_core_qp_modify()
512 mbox_free(&mbox); in mlx5_core_qp_modify()