int mcm_rep_ms = 4000;
int mcm_rtu_ms = 2000;
int mcm_dreq_ms = 1000;
+int mcm_proxy_in = 1;
extern int mcm_rx_entries;
extern uint64_t system_guid;
strerror(errno));
return -1;
}
- /* endpoint mapping hint for MIC to HCA communication, backward compatible */
- if ((md->numa_node == md->mc->numa_node) || (md->mc->ver == MIX_COMP))
+ /* EP mapping hint for MIC to HCA, set MSS if compat or PI disabled */
+ if ((md->numa_node == md->mc->numa_node) ||
+ (md->mc->ver == MIX_COMP) || (mcm_proxy_in == 0))
md->addr.ep_map = MIC_SSOCK_DEV;
else
md->addr.ep_map = MIC_XSOCK_DEV;
mlog(1, " MIC client: open mdev[%d] %p smd %p mic%d[%d] -> %s[%d] port %d - %s\n",
md->smd_list.tid, md, smd, mc->scif_id-1, mc->numa_node, msg->name,
- md->numa_node, msg->port, md->numa_node == mc->numa_node ? "MSS":"MXS" );
+ md->numa_node, msg->port, md->addr.ep_map == MIC_SSOCK_DEV ? "MSS":"MXS");
bail:
mpxy_unlock(&mc->oplock);
mpxy_unlock(&mc->cmlock);
extern int mcm_rep_ms;
extern int mcm_rtu_ms;
extern int mcm_dreq_ms;
+extern int mcm_proxy_in;
/* mix.c */
extern int mix_align;
mix_eager_completion = atoi(value);
else if (!strcasecmp("mcm_counters", opt))
mcm_counters = atoi(value);
+ else if (!strcasecmp("mcm_proxy_in", opt))
+ mcm_proxy_in = atoi(value);
else if (!strcasecmp("proxy_tx_depth", opt))
{
int tsize = atoi(value); /* power of 2 */
mlog(0, "RDMA IB inline threshold %d\n", mcm_ib_inline);
mlog(0, "RDMA eager completion %d\n", mix_eager_completion);
mlog(0, "RDMA proxy-out signal rate %d\n", mcm_rw_signal);
- mlog(0, "RDMA proxy-in signal rate %d\n", mcm_rr_signal);
- mlog(0, "RDMA proxy-in max reads outstanding %d\n", mcm_rr_max);
+ mlog(0, "RDMA proxy-in %s\n", mcm_proxy_in ? "enabled":"disabled");
+ if (mcm_proxy_in) {
+ mlog(0, "RDMA proxy-in signal rate %d\n", mcm_rr_signal);
+ mlog(0, "RDMA proxy-in max reads outstanding %d\n", mcm_rr_max);
+ }
mlog(0, "Maximum message size %d MB\n", mix_max_msg_mb);
mlog(0, "CM msg queue depth %d\n", mcm_depth);
mlog(0, "CM msg completion signal rate %d\n", mcm_signal);