diff options
Diffstat (limited to 'rpc/rpc-transport/rdma/src')
| -rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.c | 42 | ||||
| -rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.h | 8 | 
2 files changed, 43 insertions, 7 deletions
diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c index 43175af4809..d3a8e9c8d97 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -299,7 +299,6 @@ __gf_rdma_ioq_entry_free (gf_rdma_ioq_t *entry)                  iobref_unref (entry->msg.request.rsp_iobref);                  entry->msg.request.rsp_iobref = NULL;          } -        /* TODO: use mem-pool */          mem_put (entry);  } @@ -1788,7 +1787,7 @@ gf_rdma_ioq_new (rpc_transport_t *this, rpc_transport_data_t *data)          }          priv = this->private; -        /* TODO: use mem-pool */ +          entry = mem_get (priv->device->ioq_pool);          if (entry == NULL) {                  goto out; @@ -2426,11 +2425,10 @@ gf_rdma_connect_qp (rpc_transport_t *this)                  return -1;          } -        /* TODO: make timeout and retry_cnt configurable from options */          attr.qp_state       = IBV_QPS_RTS; -        attr.timeout        = 14; -        attr.retry_cnt      = 7; -        attr.rnr_retry      = 7; +        attr.timeout        = options->attr_timeout; +        attr.retry_cnt      = options->attr_retry_cnt; +        attr.rnr_retry      = options->attr_rnr_retry;          attr.sq_psn         = priv->peer.local_psn;          attr.max_rd_atomic  = 1;          if (ibv_modify_qp (priv->peer.qp, &attr, @@ -3615,6 +3613,9 @@ gf_rdma_options_init (rpc_transport_t *this)          options->recv_size = GLUSTERFS_RDMA_INLINE_THRESHOLD;/*this->ctx->page_size * 4;  512 KB*/          options->send_count = 4096;          options->recv_count = 4096; +	options->attr_timeout = GF_RDMA_TIMEOUT; +	options->attr_retry_cnt = GF_RDMA_RETRY_CNT; +	options->attr_rnr_retry = GF_RDMA_RNR_RETRY;          temp = dict_get (this->options,                           "transport.rdma.work-request-send-count"); @@ -3624,7 +3625,22 @@ gf_rdma_options_init (rpc_transport_t *this)          temp = dict_get (this->options,                           "transport.rdma.work-request-recv-count");          if (temp) -                options->recv_count = data_to_int32 (temp); +		options->recv_count = data_to_int32 (temp); + +	temp = dict_get (this->options, "transport.rdma.attr-timeout"); + +	if (temp) +		options->attr_timeout = data_to_uint8 (temp); + +	temp = dict_get (this->options, "transport.rdma.attr-retry-cnt"); + +	if (temp) +		options->attr_retry_cnt = data_to_uint8 (temp); + +	temp = dict_get (this->options, "transport.rdma.attr-rnr-retry"); + +	if (temp) +		options->attr_rnr_retry = data_to_uint8 (temp);          options->port = 1;          temp = dict_get (this->options, @@ -4905,6 +4921,18 @@ struct volume_options options[] = {                      "transport.rdma.remote-port"},            .type  = GF_OPTION_TYPE_INT          }, +	{ .key   = {"transport.rdma.attr-timeout", +		    "rdma-attr-timeout"}, +          .type  = GF_OPTION_TYPE_INT +        }, +	{ .key   = {"transport.rdma.attr-retry-cnt", +		    "rdma-attr-retry-cnt"}, +          .type  = GF_OPTION_TYPE_INT +        }, +	{ .key   = {"transport.rdma.attr-rnr-retry", +		    "rdma-attr-rnr-retry"}, +          .type  = GF_OPTION_TYPE_INT +        },          { .key   = {"transport.rdma.listen-port", "listen-port"},            .type  = GF_OPTION_TYPE_INT          }, diff --git a/rpc/rpc-transport/rdma/src/rdma.h b/rpc/rpc-transport/rdma/src/rdma.h index 16149ef967e..34293859112 100644 --- a/rpc/rpc-transport/rdma/src/rdma.h +++ b/rpc/rpc-transport/rdma/src/rdma.h @@ -50,6 +50,11 @@  #define GF_RDMA_VERSION                1  #define GF_RDMA_POOL_SIZE              512 +/* Additional attributes */ +#define GF_RDMA_TIMEOUT                14 +#define GF_RDMA_RETRY_CNT              7 +#define GF_RDMA_RNR_RETRY              7 +  typedef enum gf_rdma_errcode {          ERR_VERS = 1,          ERR_CHUNK = 2 @@ -148,6 +153,9 @@ struct __gf_rdma_options {          int32_t  recv_count;          uint64_t recv_size;          uint64_t send_size; +	uint8_t  attr_timeout; +	uint8_t  attr_retry_cnt; +	uint8_t  attr_rnr_retry;  };  typedef struct __gf_rdma_options gf_rdma_options_t;  | 
