Lines Matching full:mbox
341 static int mbox_alloc(struct mbox_info *mbox, int inlen, int outlen) in mbox_alloc() argument
343 mbox->inlen = inlen; in mbox_alloc()
344 mbox->outlen = outlen; in mbox_alloc()
345 mbox->in = kzalloc(mbox->inlen, GFP_KERNEL); in mbox_alloc()
346 mbox->out = kzalloc(mbox->outlen, GFP_KERNEL); in mbox_alloc()
347 if (!mbox->in || !mbox->out) { in mbox_alloc()
348 kfree(mbox->in); in mbox_alloc()
349 kfree(mbox->out); in mbox_alloc()
356 static void mbox_free(struct mbox_info *mbox) in mbox_free() argument
358 kfree(mbox->in); in mbox_free()
359 kfree(mbox->out); in mbox_free()
391 struct mbox_info *mbox, u16 uid, u32 ece) in modify_qp_mbox_alloc() argument
393 mbox->out = NULL; in modify_qp_mbox_alloc()
394 mbox->in = NULL; in modify_qp_mbox_alloc()
396 #define MBOX_ALLOC(mbox, typ) \ in modify_qp_mbox_alloc() argument
397 mbox_alloc(mbox, MLX5_ST_SZ_BYTES(typ##_in), MLX5_ST_SZ_BYTES(typ##_out)) in modify_qp_mbox_alloc()
417 if (MBOX_ALLOC(mbox, qp_2rst)) in modify_qp_mbox_alloc()
419 MOD_QP_IN_SET(qp_2rst, mbox->in, opcode, qpn, uid); in modify_qp_mbox_alloc()
422 if (MBOX_ALLOC(mbox, qp_2err)) in modify_qp_mbox_alloc()
424 MOD_QP_IN_SET(qp_2err, mbox->in, opcode, qpn, uid); in modify_qp_mbox_alloc()
429 if (MBOX_ALLOC(mbox, rst2init_qp)) in modify_qp_mbox_alloc()
431 MOD_QP_IN_SET_QPC(rst2init_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
433 MLX5_SET(rst2init_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
436 if (MBOX_ALLOC(mbox, init2rtr_qp)) in modify_qp_mbox_alloc()
438 MOD_QP_IN_SET_QPC(init2rtr_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
440 MLX5_SET(init2rtr_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
443 if (MBOX_ALLOC(mbox, rtr2rts_qp)) in modify_qp_mbox_alloc()
445 MOD_QP_IN_SET_QPC(rtr2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
447 MLX5_SET(rtr2rts_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
450 if (MBOX_ALLOC(mbox, rts2rts_qp)) in modify_qp_mbox_alloc()
452 MOD_QP_IN_SET_QPC(rts2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
454 MLX5_SET(rts2rts_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
457 if (MBOX_ALLOC(mbox, sqerr2rts_qp)) in modify_qp_mbox_alloc()
459 MOD_QP_IN_SET_QPC(sqerr2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
463 if (MBOX_ALLOC(mbox, sqd2rts_qp)) in modify_qp_mbox_alloc()
465 MOD_QP_IN_SET_QPC(sqd2rts_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
469 if (MBOX_ALLOC(mbox, init2init_qp)) in modify_qp_mbox_alloc()
471 MOD_QP_IN_SET_QPC(init2init_qp, mbox->in, opcode, qpn, in modify_qp_mbox_alloc()
473 MLX5_SET(init2init_qp_in, mbox->in, ece, ece); in modify_qp_mbox_alloc()
484 struct mbox_info mbox; in mlx5_core_qp_modify() local
488 qpc, &mbox, qp->uid, (ece) ? *ece : 0); in mlx5_core_qp_modify()
492 err = mlx5_cmd_exec(dev->mdev, mbox.in, mbox.inlen, mbox.out, in mlx5_core_qp_modify()
493 mbox.outlen); in mlx5_core_qp_modify()
496 *ece = get_ece_from_mbox(mbox.out, opcode); in mlx5_core_qp_modify()
498 mbox_free(&mbox); in mlx5_core_qp_modify()