Example #1
0
static
int psdapl_ia_open(DAT_IA_HANDLE *ia_handlep)
{
	char *dapl_provider = "<query>";
	DAT_RETURN dat_rc;
	int ret;

	static int get_called = 0;
	if (!get_called) {
		get_called = 1;
		pscom_env_get_str(&dapl_provider, ENV_DAPL_PROVIDER);
	}

	if (strcmp(dapl_provider, "<query>")) {
		ret = psdapl_ia_open_name(ia_handlep, dapl_provider);
	} else {
		const unsigned max_providers = 64;
		DAT_PROVIDER_INFO _providers[max_providers];
		DAT_PROVIDER_INFO *providers[max_providers];
		DAT_COUNT i, n;
		unsigned j;

		/* Who wrote this stupid stupid DAT API? */
		for (j = 0; j < max_providers; j++) {
			providers[j] = _providers + j;
		}
		/* query the names from dat.conf: */
		dat_rc = dat_registry_list_providers(max_providers,
						     &n, providers);

		if (dat_rc != DAT_SUCCESS) goto err_list_providers;
		if (n == 0) goto err_no_result;

		ret = -1;
		for (i = 0; i < n; i++) {
			ret = psdapl_ia_open_name(ia_handlep, providers[i]->ia_name);
			if (!ret) break; /* found working provider */
		}
	}

	return ret;
err_list_providers:
	psdapl_dprint_dat_err(1, dat_rc, "dat_registry_list_providers() failed. Use env "
			      "%s={provider}", ENV_DAPL_PROVIDER);
	return -1;
err_no_result:
	psdapl_dprint(1, "dat_registry_list_providers() without results. Use env "
		      ENV_DAPL_PROVIDER "={provider}");
	return -1;
}
Example #2
0
static
void pscom_openib_init(FILE *peer)
{
	psoib_info_msg_t lmsg, rmsg;
	int rc;
	pscom.env.debug = arg_verbose;
	pscom_env_get_int(&pscom.env.debug, ENV_DEBUG);
	psoib_debug = pscom.env.debug;

	pscom_env_get_str(&psoib_hca, ENV_OPENIB_HCA);
	pscom_env_get_uint(&psoib_port, ENV_OPENIB_PORT);
	pscom_env_get_uint(&psoib_path_mtu, ENV_OPENIB_PATH_MTU);
	pscom_env_get_uint(&psoib_sendq_size, ENV_OPENIB_SENDQ_SIZE);
	pscom_env_get_uint(&psoib_recvq_size, ENV_OPENIB_RECVQ_SIZE);
	pscom_env_get_uint(&psoib_compq_size, ENV_OPENIB_COMPQ_SIZE);
	psoib_pending_tokens = psoib_pending_tokens_suggestion();
	pscom_env_get_uint(&psoib_pending_tokens, ENV_OPENIB_PENDING_TOKENS);

	rc = psoib_init();
	psoib_rc_check("psoib_init()", rc);

	mcon = psoib_con_create();
	assert(mcon);

	rc = psoib_con_init(mcon, NULL, NULL);
	psoib_rc_check("psoib_con_init()", rc);

	psoib_con_get_info_msg(mcon, &lmsg);

	if (is_client) {
		info_write(peer, &lmsg);
		info_read(peer, &rmsg);
	} else {
		info_read(peer, &rmsg);
		info_write(peer, &lmsg);
	}

	rc = psoib_con_connect(mcon, &rmsg);
	psoib_rc_check("psoib_con_connect()", rc);
}
Example #3
0
static
void pscom_openib_init(void)
{
	psoib_debug = pscom.env.debug;
	psoib_debug_stream = pscom_debug_stream();
	pscom_env_get_str(&psoib_hca, ENV_OPENIB_HCA);
	pscom_env_get_uint(&psoib_port, ENV_OPENIB_PORT);
	pscom_env_get_uint(&psoib_path_mtu, ENV_OPENIB_PATH_MTU);

	pscom_env_get_uint(&psoib_recvq_size, ENV_OPENIB_RECVQ_SIZE);

	pscom_env_get_int(&psoib_global_sendq, ENV_OPENIB_GLOBAL_SENDQ);
	pscom_env_get_uint(&psoib_compq_size, ENV_OPENIB_COMPQ_SIZE);
	if (psoib_global_sendq) {
		// One sendq for all connection. limit sendq to compq size.
		psoib_sendq_size = psoib_compq_size;
	} else {
		// One sendq for each connection. limit sendq to recvq size.
		psoib_sendq_size = pscom_min(psoib_sendq_size, psoib_recvq_size);
	}
	pscom_env_get_uint(&psoib_sendq_size, ENV_OPENIB_SENDQ_SIZE);

	psoib_pending_tokens = psoib_pending_tokens_suggestion();
	pscom_env_get_uint(&psoib_pending_tokens, ENV_OPENIB_PENDING_TOKENS);

//	if (!psoib_global_sendq && psoib_sendq_size == psoib_recvq_size) {
//		// Disable event counting:
//		psoib_event_count = 0;
//	}
	pscom_env_get_int(&psoib_event_count, ENV_OPENIB_EVENT_CNT);
	pscom_env_get_int(&psoib_ignore_wrong_opcodes, ENV_OPENIB_IGNORE_WRONG_OPCODES);
	pscom_env_get_int(&psoib_lid_offset, ENV_OPENIB_LID_OFFSET);

	INIT_LIST_HEAD(&pscom_cq_poll.next);
	pscom_cq_poll.do_read = pscom_poll_cq;

}
Example #4
0
void pscom_env_init(void)
{
	pscom_pslib_read_config(ENV_CONFIG_FILES);

	pscom_debug_set_filename(pscom_env_get(ENV_DEBUG_OUT), 1);
	if (!pscom.env.debug) { // only set debug once!
		pscom_env_get_int(&pscom.env.debug, ENV_DEBUG);
	}

	if (pscom_pslib_available) {
		pscom_env_get_str(&pscom.env.info, ENV_INFO);
		if (pscom.env.info) pscom_info_connect(pscom.env.info);
	}

	DPRINT(1,"# Version(PSCOM): %s (%s)", __DATE__, VC_VERSION);
	pscom_env_get_uint(&pscom.env.so_sndbuf, ENV_SO_SNDBUF);
	pscom_env_get_uint(&pscom.env.so_rcvbuf, ENV_SO_RCVBUF);
	pscom_env_get_int(&pscom.env.tcp_nodelay, ENV_TCP_NODELAY);
	pscom_env_get_uint(&pscom.env.tcp_backlog, ENV_TCP_BACKLOG);

	// pscom_env_get_int(&env.nobgthread, ENV_NOBGTHREAD);
	pscom_env_get_int(&pscom.env.sched_yield, ENV_SCHED_YIELD);
	pscom_env_get_int(&pscom.env.unexpected_receives, ENV_UNEXPECTED_RECEIVES);
	pscom_env_get_uint(&pscom.env.rendezvous_size, ENV_RENDEZVOUS);

	if (pscom.env.rendezvous_size != (unsigned)~0)
		pscom.env.rendezvous_size_shm = pscom.env.rendezvous_size;
	pscom_env_get_uint(&pscom.env.rendezvous_size_shm, ENV_RENDEZVOUS_SHM);

	if (pscom.env.rendezvous_size != (unsigned)~0)
		pscom.env.rendezvous_size_dapl = pscom.env.rendezvous_size;
	pscom_env_get_uint(&pscom.env.rendezvous_size_dapl, ENV_RENDEZVOUS_DAPL);

	if (pscom.env.rendezvous_size != (unsigned)~0)
		pscom.env.rendezvous_size_elan = pscom.env.rendezvous_size;
	pscom_env_get_uint(&pscom.env.rendezvous_size_elan, ENV_RENDEZVOUS_ELAN);

	if (pscom.env.rendezvous_size != (unsigned)~0)
		pscom.env.rendezvous_size_extoll = pscom.env.rendezvous_size;
	pscom_env_get_uint(&pscom.env.rendezvous_size_extoll, ENV_RENDEZVOUS_EXTOLL);

	if (pscom.env.rendezvous_size != (unsigned)~0)
		pscom.env.rendezvous_size_velo = pscom.env.rendezvous_size;
	pscom_env_get_uint(&pscom.env.rendezvous_size_velo, ENV_RENDEZVOUS_VELO);

	if (pscom.env.rendezvous_size != (unsigned)~0)
		pscom.env.rendezvous_size_openib = pscom.env.rendezvous_size;
	pscom_env_get_uint(&pscom.env.rendezvous_size_openib, ENV_RENDEZVOUS_OPENIB);

	pscom_env_get_int(&pscom.env.sigquit, ENV_SIGQUIT);
	pscom_env_get_uint(&pscom.env.readahead, ENV_READAHEAD);
	pscom_env_get_uint(&pscom.env.retry, ENV_RETRY);
	pscom.env.readahead = pscom_max(pscom.env.readahead, sizeof(pscom_header_net_t));

	pscom_env_get_str(&pscom.env.network, ENV_NETWORK);
	pscom_env_get_dir(&pscom.env.plugindir, ENV_PLUGINDIR);

	pscom_env_get_int(&pscom.env.debug_req, ENV_DEBUG_REQ);

	if (pscom.env.debug >= 2) pscom.env.debug_stats = 1;
	pscom_env_get_int(&pscom.env.debug_stats, ENV_DEBUG_STATS);
	pscom_env_get_uint(&pscom.env.iprobe_count, ENV_IPROBE_COUNT);
}