|
@@ -1601,6 +1601,7 @@ static int srpt_create_ch_ib(struct srpt_rdma_ch *ch)
|
|
struct ib_qp_init_attr *qp_init;
|
|
struct ib_qp_init_attr *qp_init;
|
|
struct srpt_port *sport = ch->sport;
|
|
struct srpt_port *sport = ch->sport;
|
|
struct srpt_device *sdev = sport->sdev;
|
|
struct srpt_device *sdev = sport->sdev;
|
|
|
|
+ const struct ib_device_attr *attrs = &sdev->device->attrs;
|
|
u32 srp_sq_size = sport->port_attrib.srp_sq_size;
|
|
u32 srp_sq_size = sport->port_attrib.srp_sq_size;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
@@ -1638,7 +1639,7 @@ retry:
|
|
*/
|
|
*/
|
|
qp_init->cap.max_send_wr = srp_sq_size / 2;
|
|
qp_init->cap.max_send_wr = srp_sq_size / 2;
|
|
qp_init->cap.max_rdma_ctxs = srp_sq_size / 2;
|
|
qp_init->cap.max_rdma_ctxs = srp_sq_size / 2;
|
|
- qp_init->cap.max_send_sge = SRPT_DEF_SG_PER_WQE;
|
|
|
|
|
|
+ qp_init->cap.max_send_sge = min(attrs->max_sge, SRPT_MAX_SG_PER_WQE);
|
|
qp_init->port_num = ch->sport->port;
|
|
qp_init->port_num = ch->sport->port;
|
|
|
|
|
|
ch->qp = ib_create_qp(sdev->pd, qp_init);
|
|
ch->qp = ib_create_qp(sdev->pd, qp_init);
|