Skip to contentSkip to conversation

IB/rdmavt: Add create queue pair functionality

DISCUSSION Dan Carpenter 2 participants 2 messages Mar 22, 2016 – Mar 23, 2016 InfiniBand

lore
Share & tools
lore
#0 lore raw

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                    & 0xE0

is 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

#1 lore raw
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 case IB_QPT_RC:

Quoted 8 lines
   835                  qp->allowed_ops = IB_OPCODE_RC_SEND_ONLY &

RVT_OPCODE_QP_MASK;

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

                                          0x4                    & 0xE0

is zero. I couldn't figure out where IB_OPCODE_RC_SEND_ONLY is 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