summaryrefslogtreecommitdiffstats
path: root/src/vcl/vppcom.c
AgeCommit message (Collapse)AuthorFilesLines
2020-10-12vcl svm: segments improvementsFlorin Coras1-15/+23
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I717c64666972bb4e440cb3d1180a5cb26ee25577
2020-09-29vcl svm: provide apps access to fifo chunksFlorin Coras1-18/+17
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I2191b8594b1e87ecc00f237316457db249f73603
2020-09-28vppinfra: don't call dlmalloc API directly from the codeDamjan Marion1-4/+2
- it is confusing from end consumer perspective that some thing is somewhere called heap and somewhere mspace - this is base for additional work where heap pointer is not the same thing like mspace Type: improvement Change-Id: I644d5a0de17690d65d164d8cec3c5654571629ef Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-16vcl: refactor bapi client index for sapi reuseFlorin Coras1-10/+10
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ibebb6f7d4e610570693e213acd2f6d9332c563c6
2020-09-14vcl: add support for app socket apiFlorin Coras1-4/+33
To enable add "app-socket-api /path/to/socket" to vcl.conf. On vpp side, add use-app-socket-api to session stanza in startup.conf VPP allocates a socket per application namespace which it places in the app_ns_sockets subfolder of the run folder (default /var/run/vpp). The socket used implicitly selects the app namespace for the vcl app. Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ifc14b93dcbf6ef9bed1852d46cd069f4855b92ef
2020-09-14vcl: cleanup bapi and wrk registrationFlorin Coras1-131/+14
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I0391db5c3ad038265cb8ebf9de02925653e35959
2020-09-14vcl: always fill buffer or drain rx fifoFlorin Coras1-4/+16
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ibbe438aa6f2fe6d9f55c56ca6d3aec1a29b32cad
2020-09-02vcl: handle svm fifo write failureFlorin Coras1-1/+3
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I4b132cad8ff906ef24846cc43935ccfd6aa7b4ec
2020-08-25vcl: cleanup non-blocking connectFlorin Coras1-2/+16
Make sure session is in non-closed state after non-blocking connect to ensure cleanup is performed, if needed. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ic1533b9864828f875c840dfdfeed08bf32d10651
2020-08-14vcl: rx dequeue notifications with epollFlorin Coras1-52/+57
Add deq request on ct fifo if present and clear event when session is removed from epoll group. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I8a20342879b3aac2f8fe8171556baaf9c992363b
2020-08-14vcl: minimize vpp to vcl rx eventsFlorin Coras1-1/+11
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I2015162bd315927e45b9fe583324b1458fe69d8f
2020-08-13vcl: clear ct rx event on right fifoFlorin Coras1-1/+1
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I70bab0d86287c108c6dffda5c5b2f29277c15de1
2020-08-12vcl: support multi-threads with session migrationhanlin1-5/+8
Currently, mutlti-threads only support one dispatch thread and multiple worker threads, eventually only dispatch thread is a vcl worker and can interact with epoll. This patch will register all threads as vcl worker, and then each thread can interact with epoll now. Moreover, session migration also supported, such as socket created in thread A and used (bind, connect and etc.) in thread B. Type: feature Signed-off-by: hanlin <hanlin_wang@163.com> Change-Id: Iab0b43a33466968c1423d7d20faf1460c8589d91
2020-08-11vcl: support inter worker rpcFlorin Coras1-0/+48
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I664cd14c84fc5cf2ffe61efce99c95219b44fad7
2020-08-09vcl: fix getting wrong non-blocking flags issue in VPPCOM_ATTR_GET_FLAGS actionSimon Zhang1-2/+4
Type: fix Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com> Change-Id: If4c700b59b8936a43d6a73ed75cc6fdaf6cf141d
2020-08-04vcl: fix epoll timeoutFlorin Coras1-1/+1
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I917158a62e5881b97917c3339527d3c34c37565a
2020-06-15vcl: move helper functions out of header fileFlorin Coras1-1/+90
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I3889fd80b145cf80f76f6054d63247e76bdf20ff
2020-05-26vcl: do not propagate epoll events if session closedFlorin Coras1-6/+11
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I1e9652b476bbc07852b4e701a948c36a0d8c67fa
2020-05-21vcl: support connected udp listensFlorin Coras1-0/+7
Request connected udp listener behavior by setting VPPCOM_ATTR_SET_CONNECTED attribute with vppcom_session_attr Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iba95155c0f41cea8c6e1a4263946270d49c213ac
2020-05-15vcl: remove udpc transportFlorin Coras1-4/+0
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I145ff3301f168973c4f7f32c337bbcac47900705
2020-05-14vcl svm: fix rx event losshanlin1-2/+5
When vcl_epoll_wait_handle_mq handles rx events exceeding maxevents, VPP will not signal because cursize > 0, and the remaining rx events cannot be triggered because the eventfd event has been read. Therefore, we should dequeue all events until cursize = 0. And then handle msg up to maxevents with vcl_epoll_wait_handle_mq_event and those beyond with vcl_handle_mq_event. Type: fix Signed-off-by: hanlin <hanlin_wang@163.com> Change-Id: I8a0c87cb41c837deb8284b40f668cc3c7d9d6e56 Signed-off-by: hanlin <hanlin_wang@163.com>
2020-05-12vcl: de-init vcl on destroyFlorin Coras1-0/+1
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: If3372e3edd403240c2c9da746246170549a3e644
2020-05-04vcl: allow vcl worker index to be set by applicationsPivo1-0/+6
When using vppcom_session* apis to setup TCP sessions in applications build outside of the VPP repository, it is necessary to set the worker_index explicitly when these apis are called from the none-VCL worker threads. An example is when data is to be sent to the TCP session that is originated from a different thread, like the main program thread or from the bin api thread. This change allows the application to set it. Type: fix Signed-off-by: IJsbrand Wijnands <ice@cisco.com> Change-Id: I37f3654a49ea9a8cf3a0d3d0e672583018c12299
2020-04-30vcl: disconnect both flavors of bapi transport on destroyFlorin Coras1-5/+8
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6697296b45c5816a31535b0cf44b8e726292b8bb
2020-04-25session vcl: propagate transport cleanup notificationsFlorin Coras1-0/+11
Type: improvement Can be used to force app to close a connection on which it still waits for data. Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I7c3a8245cbbc23728e4408feb63a659a11f718ed
2020-04-25vcl: generate select events on read/write errorsFlorin Coras1-8/+8
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I3429f9d0406b6d710846fc82d77400f26f77fdf4
2020-04-22vcl: fix use-after-freeBenoît Ganne1-1/+2
Make sure we disconnect from vlib prior to free-ing the last worker, as we'll need to access it. Type: fix Change-Id: Id5bdd17f0f5efa1ce52021b4270eb4f1e95cc61d Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-04-20vcl: ensure sessions are open on select eventsFlorin Coras1-7/+5
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I4d56b61af574dfdaf6028160ce331606bdf65609
2020-04-17vcl: fix app destroyFlorin Coras1-20/+19
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I21daa87b1a301142270a1bf20680dd9e9395aac9
2020-04-07udp session: jumbo frames and configurable mtuFlorin Coras1-1/+0
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6b750bef5df0f8544e05177ccd480f87a020832d
2020-04-06vcl session: enforce full dgram reads/writesFlorin Coras1-24/+44
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I4a3861e31ca42faf0b59f8f09393fb10413bf3af
2020-04-06session udp: shared local endpointsFlorin Coras1-1/+3
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ie7102355b95eefb233ec7d146e61819051a7bf07
2020-04-03session: improve error reportingFlorin Coras1-3/+3
Type: improvement Change-Id: I9dd850a1ce85b0adb5136233f176117e0ee38817 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-04-01session udp: support connect on listenersFlorin Coras1-4/+29
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6aaaec20a2b6d4c6ddfbe659d9402acc1be2f7e2
2020-04-01vcl: support sendto for dgramsFlorin Coras1-35/+26
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I2a0fdced6a3ae262b30cda6a51f1fa96c1d44665
2020-03-25session: api to add new transport typesFlorin Coras1-4/+0
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: If4dee6dba1ea942daa921d566b35cdecdda680ee
2020-02-25svm: refactor fifoFlorin Coras1-2/+4
Type: refactor Switch from a wrapped byte space to a "continuous" one wherein fifo chunks are appended to the fifo as more data is enqueued and chunks are removed as data is dequeued. The fifo is still subject to a maximum size, i.e., maximum number of bytes that can be enqueued, so the max number of chunks associated to the fifo is also constrained. When enqueueing data, which must fit within the available free space, if not enough "supporting" chunk memory is available, the fifo asks the fifo segment for enough chunk memory to ensure that the write can succeed. To avoid allocating large amounts of small chunks due to small writes, if possible, the size of the chunks requested is lower capped by min_alloc. When dequeuing data, all the chunks that have been completely drained, i.e., head moved beyond the chunks’ end bytes, are unlinked from the fifo and returned to the fifo segment. The one exception to this is the last chunk which is never unlinked. Change-Id: I98c1dbd9135fb79650365c7e40c29238b96cd4ee Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-02-13vcl: clear accept msg flagsFlorin Coras1-0/+1
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Idb513232e7b091c8f767726bfa1deb10a7e3b751
2020-02-13vcl: handle close after resetFlorin Coras1-9/+31
Can happen if a connection is reset before fully accepted. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I0ae68d71b66722dd19ca6f1cee44a080e5ff4447
2020-02-04vcl: switch to closed state after app closeFlorin Coras1-3/+5
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I851db474538de76d5f70dd6d6f83a6487a5a02bd
2020-01-30vcl session: propagate cleanup notifications to appsFlorin Coras1-40/+67
Type: feature Change-Id: I7f8e3763d7f8364563a25d0fcc782976b906b325 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-01-23vcl: always report EPOLLHUP/EPOLLRDHUP on closeFlorin Coras1-4/+0
Type: fix Change-Id: I3d24a7973c7113ffeb9109e89cda7fa960e73a5b Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-01-23vcl session: udp session migration notificationsFlorin Coras1-0/+39
Type: feature Change-Id: I402549818ba6e078802e914293304174dc6625c2 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-01-16vcl: add rx event on epoll ctl if neededFlorin Coras1-2/+10
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ib6d0387076a4bb0b52e4cdfdcd62b6060b704fe6
2019-12-27vcl: EPOLLOUT should be generated when epoll_ctl called with EPOLLOUThanlin1-0/+20
event Type: fix When we call epoll_ctl to add or mod fd with EPOLLOUT event, mostly to check if we can write. So we expect a EPOLLOUT event should be generated immediately unless tx queue is full. Signed-off-by: hanlin <hanlin_wang@163.com> Change-Id: Ie99986a44dbb07b6ff2fba6512171056f79e77bd
2019-12-21session: move add/del segment msg to mqFlorin Coras1-20/+74
Type: refactor Change-Id: I32234173ebd69f80acb1afa4039fffbd19157f6d Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-12-17vcl: RX event may lost when accept session repeatedlywanghanlin1-1/+1
Type: fix Some applications may call accept repeatedly to process all connect request until get EAGIAIN error. Subsequent call may get RX event of previous accepted session, then should process it rather than just discard it. Signed-off-by: wanghanlin <wanghanlin@corp.netease.com> Change-Id: Ice53442de66289a62591b79a9cc31e883e894c23
2019-12-12vcl: fix disconnect from binary apiFlorin Coras1-4/+0
Type: fix Change-Id: I4398d26879b5efd932fa1d9ae232aa918ec736d6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-12-11vcl: separate binary api connections per thread workerFlorin Coras1-3/+12
Type: fix Change-Id: I2d72efc74a3b0a5b9e4da265475b1b01bf361125 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-12-05vcl: resolve VCL part session cleanup issueYu Ping1-0/+2
In Nginx performance test, we notice that there are so many session kept open with the state of TRANSPORT_DELETE, and it is root caused that vppcom fails to return close state. Type: fix Change-Id: Ia30f959e0e5adb5b8bcfa13fb1dd7b2cb410a31b Signed-off-by: Yu Ping <ping.yu@intel.com>