Example #1
0
static
void pscom_extoll_init(void)
{
	psex_debug = pscom.env.debug;
	psex_debug_stream = pscom_debug_stream();

	pscom_env_get_uint(&psex_recvq_size, ENV_EXTOLL_RECVQ_SIZE);

	pscom_env_get_int(&psex_global_sendq, ENV_EXTOLL_GLOBAL_SENDQ);

	if (psex_global_sendq) {
		// One sendq for all connection. Allocate buffers for 1024 connections
		psex_sendq_size = 1024 * pscom_min(psex_sendq_size, psex_recvq_size);
	} else {
		// One sendq for each connection. limit sendq to recvq size.
		psex_sendq_size = pscom_min(psex_sendq_size, psex_recvq_size);
	}
	pscom_env_get_uint(&psex_sendq_size, ENV_EXTOLL_SENDQ_SIZE);

	psex_pending_tokens = psex_pending_tokens_suggestion();
	pscom_env_get_uint(&psex_pending_tokens, ENV_EXTOLL_PENDING_TOKENS);

//	if (!psex_global_sendq && psex_sendq_size == psex_recvq_size) {
//		// Disable event counting:
//		psex_event_count = 0;
//	}
	pscom_env_get_int(&psex_event_count, ENV_EXTOLL_EVENT_CNT);
}
Example #2
0
static
void shm_do_write(pscom_con_t *con)
{
	unsigned int len;
	struct iovec iov[2];
	pscom_req_t *req;

	req = pscom_write_get_iov(con, iov);

	if (req && shm_cansend(&con->arch.shm)) {
		len = iov[0].iov_len + iov[1].iov_len;
		len = pscom_min(len, SHM_BUFLEN);

		shm_iovsend(&con->arch.shm, iov, len);

		pscom_write_done(con, req, len);
	}
}
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;

}