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: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
7bc7972cdd
commit
ce1ab9ab47
@ -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)
|
|||||||
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 @@ connected:
|
|||||||
|
|
||||||
#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 {
|
|||||||
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user