X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvcl%2Fvppcom.c;h=7edb69c4c73c37507eb3679787e1d74593d3ec18;hb=c04cbf16ccfd9ef142937e4684af6093d812a866;hp=3ba94be4895986fa9515f5ffa7b13e6146cccaf4;hpb=4e578068fc3fe8ba176d211123ddd88962dab315;p=vpp.git diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index 3ba94be4895..7edb69c4c73 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -157,7 +157,6 @@ typedef struct u32 wait_cont_idx; vppcom_epoll_t vep; int libc_epfd; - u32 vrf; vppcom_ip46_t lcl_addr; vppcom_ip46_t peer_addr; u16 lcl_port; // network order @@ -1043,7 +1042,6 @@ vppcom_send_connect_sock (session_t * session, u32 session_index) cmp->client_index = vcm->my_client_index; cmp->context = session_index; - cmp->vrf = session->vrf; cmp->is_ip4 = session->peer_addr.is_ip4; clib_memcpy (cmp->ip, &session->peer_addr.ip46, sizeof (cmp->ip)); cmp->port = session->peer_port; @@ -1488,7 +1486,6 @@ vppcom_send_bind_sock (session_t * session, u32 session_index) bmp->_vl_msg_id = ntohs (VL_API_BIND_SOCK); bmp->client_index = vcm->my_client_index; bmp->context = session_index; - bmp->vrf = session->vrf; bmp->is_ip4 = session->lcl_addr.is_ip4; clib_memcpy (bmp->ip, &session->lcl_addr.ip46, sizeof (bmp->ip)); bmp->port = session->lcl_port; @@ -1633,7 +1630,6 @@ vppcom_session_disconnect (u32 session_index) { if (is_server) { - svm_fifo_segment_main_t *sm = &svm_fifo_segment_main; svm_fifo_segment_private_t *seg; VCL_LOCK_AND_GET_SESSION (session_index, &session); @@ -1649,7 +1645,7 @@ vppcom_session_disconnect (u32 session_index) session->server_tx_fifo, session->server_tx_fifo->refcnt); - seg = vec_elt_at_index (sm->segments, session->sm_seg_index); + seg = svm_fifo_segment_get_segment (session->sm_seg_index); svm_fifo_segment_free_fifo (seg, session->server_rx_fifo, FIFO_SEGMENT_RX_FREELIST); svm_fifo_segment_free_fifo (seg, session->server_tx_fifo, @@ -2305,8 +2301,8 @@ vppcom_app_create (char *app_name) clib_time_init (&vcm->clib_time); vppcom_init_error_string_table (); - svm_fifo_segment_init (vcl_cfg->segment_baseva, - 20 /* timeout in secs */ ); + svm_fifo_segment_main_init (vcl_cfg->segment_baseva, + 20 /* timeout in secs */ ); clib_spinlock_init (&vcm->sessions_lockp); } @@ -2403,7 +2399,7 @@ vppcom_app_destroy (void) } int -vppcom_session_create (u32 vrf, u8 proto, u8 is_nonblocking) +vppcom_session_create (u8 proto, u8 is_nonblocking) { session_t *session; u32 session_index; @@ -2413,7 +2409,6 @@ vppcom_session_create (u32 vrf, u8 proto, u8 is_nonblocking) memset (session, 0, sizeof (*session)); session_index = session - vcm->sessions; - session->vrf = vrf; session->proto = proto; session->state = STATE_START; session->is_nonblocking = is_nonblocking ? 1 : 0; @@ -2433,20 +2428,19 @@ vppcom_session_create (u32 vrf, u8 proto, u8 is_nonblocking) /* *INDENT-OFF* */ ELOG_TYPE_DECLARE (e) = { - .format = "session_create:vrf:%d proto:%d state:%d is_nonblocking:%d", - .format_args = "i4i4i4i4", + .format = "session_create:proto:%d state:%d is_nonblocking:%d", + .format_args = "i4i4i4", }; struct { - u32 data[4]; + u32 data[3]; } *ed; ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track); - ed->data[0] = session->vrf; - ed->data[1] = session->proto; - ed->data[2] = session->state; - ed->data[3] = session->is_nonblocking; + ed->data[0] = session->proto; + ed->data[1] = session->state; + ed->data[2] = session->is_nonblocking; /* *INDENT-ON* */ } @@ -2608,7 +2602,6 @@ vppcom_session_bind (uint32_t session_index, vppcom_endpt_t * ep) goto done; } - session->vrf = ep->vrf; session->lcl_addr.is_ip4 = ep->is_ip4; session->lcl_addr.ip46 = to_ip46 (!ep->is_ip4, ep->ip); session->lcl_port = ep->port; @@ -2723,7 +2716,7 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep, { session_t *listen_session = 0; session_t *client_session = 0; - u32 client_session_index = ~0; + u32 client_session_index = ~0, n_fifos; int rv; f64 wait_for; char *cut_thru_str; @@ -2796,7 +2789,6 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep, if (ep) { - ep->vrf = client_session->vrf; ep->is_cut_thru = client_session->is_cut_thru; ep->is_ip4 = client_session->peer_addr.is_ip4; ep->port = client_session->peer_port; @@ -2822,9 +2814,6 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep, format ((u8 *) a->segment_name, "%d:segment%d%c", getpid (), vcm->unique_segment_index++, 0); a->segment_size = vcm->cfg.segment_size; - a->preallocated_fifo_pairs = vcm->cfg.preallocated_fifo_pairs; - a->rx_fifo_size = vcm->cfg.rx_fifo_size; - a->tx_fifo_size = vcm->cfg.tx_fifo_size; rv = svm_fifo_segment_create (a); if (PREDICT_FALSE (rv)) @@ -2851,6 +2840,14 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep, vec_free (a->new_segment_indices); seg = svm_fifo_segment_get_segment (client_session->sm_seg_index); + if (vcm->cfg.preallocated_fifo_pairs) + { + n_fifos = vcm->cfg.preallocated_fifo_pairs; + svm_fifo_segment_preallocate_fifo_pairs (seg, vcm->cfg.rx_fifo_size, + vcm->cfg.tx_fifo_size, + &n_fifos); + } + client_session->server_rx_fifo = svm_fifo_segment_alloc_fifo (seg, vcm->cfg.rx_fifo_size, FIFO_SEGMENT_RX_FREELIST); @@ -3050,7 +3047,6 @@ vppcom_session_connect (uint32_t session_index, vppcom_endpt_t * server_ep) goto done; } - session->vrf = server_ep->vrf; session->peer_addr.is_ip4 = server_ep->is_ip4; session->peer_addr.ip46 = to_ip46 (!server_ep->is_ip4, server_ep->ip); session->peer_port = server_ep->port; @@ -4419,7 +4415,6 @@ vppcom_session_attr (uint32_t session_index, uint32_t op, if (PREDICT_TRUE (buffer && buflen && (*buflen >= sizeof (*ep)) && ep->ip)) { - ep->vrf = session->vrf; ep->is_ip4 = session->peer_addr.is_ip4; ep->port = session->peer_port; if (session->peer_addr.is_ip4) @@ -4486,7 +4481,6 @@ vppcom_session_attr (uint32_t session_index, uint32_t op, if (PREDICT_TRUE (buffer && buflen && (*buflen >= sizeof (*ep)) && ep->ip)) { - ep->vrf = session->vrf; ep->is_ip4 = session->lcl_addr.is_ip4; ep->port = session->lcl_port; if (session->lcl_addr.is_ip4) @@ -4559,21 +4553,15 @@ vppcom_session_attr (uint32_t session_index, uint32_t op, /* *INDENT-OFF* */ ELOG_TYPE_DECLARE (e) = { - .format = "VPPCOM_ATTR_GET_LIBC_EPFD: libc_epfd=%s%d buflen=%d", - .format_args = "t1i4i4", - .n_enum_strings = 2, - .enum_strings = {"", "-",}, + .format = "VPPCOM_ATTR_GET_LIBC_EPFD: libc_epfd=%d", + .format_args = "i4", }; CLIB_PACKED (struct { - u8 sign; - u32 data[2]; + i32 data; }) * ed; ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track); - - ed->sign = (session->libc_epfd < 0); - ed->data[0] = abs(session->libc_epfd); - ed->data[1] = *buflen; + ed->data = session->libc_epfd; /* *INDENT-ON* */ } @@ -4840,7 +4828,7 @@ vppcom_session_attr (uint32_t session_index, uint32_t op, /* VPP-TBD */ session->rcvbuf_size = *(u32 *) buffer; if (VPPCOM_DEBUG > 2) - clib_warning ("VCL<%d>: VPPCOM_ATTR_SET_TX_FIFO_LEN: %u (0x%x), " + clib_warning ("VCL<%d>: VPPCOM_ATTR_SET_RX_FIFO_LEN: %u (0x%x), " "buflen %d, #VPP-TBD#", getpid (), session->sndbuf_size, session->sndbuf_size, *buflen); @@ -4849,7 +4837,7 @@ vppcom_session_attr (uint32_t session_index, uint32_t op, /* *INDENT-OFF* */ ELOG_TYPE_DECLARE (e) = { - .format = "VPPCOM_ATTR_SET_TX_FIFO_LEN: 0x%x buflen=%d", + .format = "VPPCOM_ATTR_SET_RX_FIFO_LEN: 0x%x buflen=%d", .format_args = "i4i4", }; @@ -5576,7 +5564,6 @@ vppcom_session_recvfrom (uint32_t session_index, void *buffer, clib_spinlock_unlock (&vcm->sessions_lockp); goto done; } - ep->vrf = session->vrf; ep->is_ip4 = session->peer_addr.is_ip4; ep->port = session->peer_port; if (session->peer_addr.is_ip4)