IB/rdmavt: Add create queue pair functionality
Hello Dennis Dalessandro,
The patch 515667f8f8b4: "IB/rdmavt: Add create queue pair functionality" from Jan 22, 2016, leads to the following static checker warning:
drivers/infiniband/sw/rdmavt/qp.c:835 rvt_create_qp() warn: odd binop '0x4 & 0xe0'
drivers/infiniband/sw/rdmavt/qp.c
823 /*
824 * We have our QP and its good, now keep track of what types of opcodes
825 * can be processed on this QP. We do this by keeping track of what the
826 * 3 high order bits of the opcode are.
827 */
828 switch (init_attr->qp_type) {
829 case IB_QPT_SMI:
830 case IB_QPT_GSI:
831 case IB_QPT_UD:
832 qp->allowed_ops = IB_OPCODE_UD_SEND_ONLY & RVT_OPCODE_QP_MASK;
833 break;
834 case IB_QPT_RC:
835 qp->allowed_ops = IB_OPCODE_RC_SEND_ONLY & RVT_OPCODE_QP_MASK;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0x4 & 0xE0is zero. I couldn't figure out where IB_OPCODE_RC_SEND_ONLY is defined but presumably Smatch is correct that it's 4.
836 break; 837 case IB_QPT_UC: 838 qp->allowed_ops = IB_OPCODE_UC_SEND_ONLY & RVT_OPCODE_QP_MASK; 839 break; 840 default: 841 ret = ERR_PTR(-EINVAL); 842 goto bail_ip; 843 }
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 8 lines
The patch
515667f8f8b4: "IB/rdmavt: Add create queue pair functionality" from Jan 22, 2016, leads to the following static checker warning:drivers/infiniband/sw/rdmavt/qp.c:835 rvt_create_qp() warn: odd binop '0x4 & 0xe0'
drivers/infiniband/sw/rdmavt/qp.c
834 caseIB_QPT_RC:
Quoted 8 lines
835 qp->allowed_ops = IB_OPCODE_RC_SEND_ONLY &
RVT_OPCODE_QP_MASK;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0x4 & 0xE0is zero. I couldn't figure out where
IB_OPCODE_RC_SEND_ONLYis defined but presumably Smatch is correct that it's 4.
IB_OPCODE_RC_SEND_ONLY is prepared by:
#define IB_OPCODE(transport, op) \
IB_OPCODE_ ## transport ## _ ## op = \
IB_OPCODE_ ## transport + IB_OPCODE_ ## op
in include/rdma/ib_pack.h.
The intent of allowed_ops is to allow for quick validation of an opcode for a QP by a masked compare.
Perhaps a better coding would use these defines from the same file?:
IB_OPCODE_RC = 0x00,
IB_OPCODE_UC = 0x20,
IB_OPCODE_UD = 0x60,Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html