Commit ce1ab9ab authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker

xprtrdma: Take struct ib_qp_attr and ib_qp_init_attr off the stack

Reduce stack footprint of the connection upcall handler function.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 7bc7972c
...@@ -425,8 +425,8 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event) ...@@ -425,8 +425,8 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event)
#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
struct sockaddr_in *addr = (struct sockaddr_in *) &ep->rep_remote_addr; struct sockaddr_in *addr = (struct sockaddr_in *) &ep->rep_remote_addr;
#endif #endif
struct ib_qp_attr attr; struct ib_qp_attr *attr = &ia->ri_qp_attr;
struct ib_qp_init_attr iattr; struct ib_qp_init_attr *iattr = &ia->ri_qp_init_attr;
int connstate = 0; int connstate = 0;
switch (event->event) { switch (event->event) {
...@@ -449,12 +449,13 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event) ...@@ -449,12 +449,13 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event)
break; break;
case RDMA_CM_EVENT_ESTABLISHED: case RDMA_CM_EVENT_ESTABLISHED:
connstate = 1; connstate = 1;
ib_query_qp(ia->ri_id->qp, &attr, ib_query_qp(ia->ri_id->qp, attr,
IB_QP_MAX_QP_RD_ATOMIC | IB_QP_MAX_DEST_RD_ATOMIC, IB_QP_MAX_QP_RD_ATOMIC | IB_QP_MAX_DEST_RD_ATOMIC,
&iattr); iattr);
dprintk("RPC: %s: %d responder resources" dprintk("RPC: %s: %d responder resources"
" (%d initiator)\n", " (%d initiator)\n",
__func__, attr.max_dest_rd_atomic, attr.max_rd_atomic); __func__, attr->max_dest_rd_atomic,
attr->max_rd_atomic);
goto connected; goto connected;
case RDMA_CM_EVENT_CONNECT_ERROR: case RDMA_CM_EVENT_CONNECT_ERROR:
connstate = -ENOTCONN; connstate = -ENOTCONN;
...@@ -487,7 +488,7 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event) ...@@ -487,7 +488,7 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event)
#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
if (connstate == 1) { if (connstate == 1) {
int ird = attr.max_dest_rd_atomic; int ird = attr->max_dest_rd_atomic;
int tird = ep->rep_remote_cma.responder_resources; int tird = ep->rep_remote_cma.responder_resources;
printk(KERN_INFO "rpcrdma: connection to %pI4:%u " printk(KERN_INFO "rpcrdma: connection to %pI4:%u "
"on %s, memreg %d slots %d ird %d%s\n", "on %s, memreg %d slots %d ird %d%s\n",
......
...@@ -71,6 +71,8 @@ struct rpcrdma_ia { ...@@ -71,6 +71,8 @@ struct rpcrdma_ia {
enum rpcrdma_memreg ri_memreg_strategy; enum rpcrdma_memreg ri_memreg_strategy;
unsigned int ri_max_frmr_depth; unsigned int ri_max_frmr_depth;
struct ib_device_attr ri_devattr; struct ib_device_attr ri_devattr;
struct ib_qp_attr ri_qp_attr;
struct ib_qp_init_attr ri_qp_init_attr;
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment