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); }
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); } }
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; }