Per the IB spec for create qp(spec 1.2.1 section 11.2.4.11)
The Signaling Type must be specified for the Send Queue on this QP.  The valid
types are:
* Non-selectable: All Work Requests submitted to the Send Queue always generate
  a completion entry.
* Selectable: Consumer must specify on each Work Request submitted to the Send
  Queue whether to generate a completion entry for successful completions.

The default for IB is non-selectable (.sq_sig_type set to 0).  In the
qp_init_attr structure the field .sq_sig_type needs to be set to
IB_SIGNAL_REQ_WR in order to set it as selecetable (ie controlled from the WR).

Signed-off-by: Jon Mason <[email protected]>
---
 krping.c |    7 +------
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/krping.c b/krping.c
index 095b556..85cb9f9 100644
--- a/krping.c
+++ b/krping.c
@@ -429,12 +429,6 @@ static void krping_cq_event_handler(struct ib_cq *cq, void 
*ctx)
                        wake_up_interruptible(&cb->sem);
                        break;
 
-               case IB_WC_LOCAL_INV:
-               case IB_WC_FAST_REG_MR:
-                       printk(KERN_ERR PFX
-                              "Unexpected opcode %d, most likely 
unsignalled\n",
-                              __func__, __LINE__, wc.opcode);
-                       break;
                default:
                        printk(KERN_ERR PFX
                               "Unexpected opcode %d, Shutting down\n",
@@ -779,6 +773,7 @@ static int krping_create_qp(struct krping_cb *cb)
        init_attr.qp_type = IB_QPT_RC;
        init_attr.send_cq = cb->cq;
        init_attr.recv_cq = cb->cq;
+       init_attr.sq_sig_type = IB_SIGNAL_REQ_WR;
 
        if (cb->server) {
                ret = rdma_create_qp(cb->child_cm_id, cb->pd, &init_attr);
-- 
1.6.0.4

_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to