Listing 1. IPoIB Driver Initialization struct ib_qp_init_attr init_attr = { .cap = { .max_send_wr = IPOIB_TX_RING_SIZE, .max_recv_wr = IPOIB_RX_RING_SIZE, .max_send_sge = 1, .max_recv_sge = 1 }, .sq_sig_type = IB_SIGNAL_ALL_WR, .rq_sig_type = IB_SIGNAL_ALL_WR, .qp_type = IB_QPT_UD }; priv->pd = ib_alloc_pd(priv->ca); priv->cq = ib_create_cq(priv->ca, ipoib_ib_completion, NULL, dev, IPOIB_TX_RING_SIZE + IPOIB_RX_RING_SIZE + 1); if (ib_req_notify_cq(priv->cq, IB_CQ_NEXT_COMP)) goto out_free_cq; priv->mr = ib_get_dma_mr(priv->pd, IB_ACCESS_LOCAL_WRITE); init_attr.send_cq = priv->cq; init_attr.recv_cq = priv->cq, priv->qp = ib_create_qp(priv->pd, &init_attr);