X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fapplication_worker.c;h=1db6baab74ec7372578357a5ab1b0c83e1aeb55b;hb=de7fcacb35423d22960a84168ca40ef7c13b21a9;hp=28793681afb4e0268d81c3c757cef28ba9a225a0;hpb=49568afd2096600f5d6745385d81d873c8893e29;p=vpp.git diff --git a/src/vnet/session/application_worker.c b/src/vnet/session/application_worker.c index 28793681afb..1db6baab74e 100644 --- a/src/vnet/session/application_worker.c +++ b/src/vnet/session/application_worker.c @@ -109,9 +109,9 @@ app_worker_free (app_worker_t * app_wrk) segment_manager_free (sm); } - pool_put (app_workers, app_wrk); if (CLIB_DEBUG) clib_memset (app_wrk, 0xfe, sizeof (*app_wrk)); + pool_put (app_workers, app_wrk); } application_t * @@ -150,7 +150,8 @@ app_worker_alloc_session_fifos (segment_manager_t * sm, session_t * s) svm_fifo_t *rx_fifo = 0, *tx_fifo = 0; int rv; - if ((rv = segment_manager_alloc_session_fifos (sm, &rx_fifo, &tx_fifo))) + if ((rv = segment_manager_alloc_session_fifos (sm, s->thread_index, + &rx_fifo, &tx_fifo))) return rv; rx_fifo->master_session_index = s->session_index; @@ -525,7 +526,8 @@ int app_worker_add_segment_notify (app_worker_t * app_wrk, u64 segment_handle) { application_t *app = application_get (app_wrk->app_index); - return app->cb_fns.add_segment_callback (app_wrk->api_client_index, + + return app->cb_fns.add_segment_callback (app_wrk->wrk_index, segment_handle); } @@ -533,7 +535,7 @@ int app_worker_del_segment_notify (app_worker_t * app_wrk, u64 segment_handle) { application_t *app = application_get (app_wrk->app_index); - return app->cb_fns.del_segment_callback (app_wrk->api_client_index, + return app->cb_fns.del_segment_callback (app_wrk->wrk_index, segment_handle); } @@ -550,13 +552,15 @@ app_send_io_evt_rx (app_worker_t * app_wrk, session_t * s) svm_msg_q_msg_t msg; svm_msg_q_t *mq; + if (app_worker_application_is_builtin (app_wrk)) + return app_worker_builtin_rx (app_wrk, s); + + /* Make sure the session is in established state within external apps. + * Should be removed once we confirm closes to apps */ if (PREDICT_FALSE (s->session_state != SESSION_STATE_READY && s->session_state != SESSION_STATE_LISTENING)) return 0; - if (app_worker_application_is_builtin (app_wrk)) - return app_worker_builtin_rx (app_wrk, s); - if (svm_fifo_has_event (s->rx_fifo)) return 0;