summaryrefslogtreecommitdiffstats
path: root/src/plugins/memif/memif.c
AgeCommit message (Collapse)AuthorFilesLines
2023-02-01memif: improve error reportingDamjan Marion1-58/+47
Type: improvement Change-Id: I12b120d988347cced3df82810e86dc2fd5cfca80 Signed-off-by: Damjan Marion <dmarion@me.com>
2022-04-04vppinfra: make _vec_len() read-onlyDamjan Marion1-2/+0
Use of _vec_len() to set vector length breaks address sanitizer. Users should use vec_set_len(), vec_inc_len(), vec_dec_len () instead. Type: improvement Change-Id: I441ae948771eb21c23a61f3ff9163bdad74a2cb8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-03-18memif: fix rx/txqueue RC on connectedNathan Skrzypczak1-9/+12
Type: fix Calling vnet_hw_if_register_tx_queue should be done with the worker barrier held, as virtio-pre-input might be grabbing a queue while a memif connect event is triggered. Change-Id: Ie1272cdfd2477faf7a4e10f30778279872f04916 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2022-02-18vnet: add set_max_frame_size callbacks for several interfacesArtem Glazychev1-0/+9
This is required after distinguishing between max_frame_size and MTU Type: fix Signed-off-by: Artem Glazychev <artem.glazychev@xored.com> Change-Id: Ie642bee4e30ca76903bb8be5eeb6914c2c09bf35
2022-02-07memif: memory leak when deleting memif interfaceSteven Luong1-0/+1
When deleting a memif interface, there is a memory leak in mif->local_disc_string. The code that leads to memory leak is memif_delete_if -> memif_disconect -> vec_dup Type: fix Signed-off-by: Steven Luong <sluong@cisco.com> Change-Id: I579c743c3d47770131153e083e65f6cd899067b3
2022-01-07ethernet: new interface registration functionDamjan Marion1-4/+7
Prep for supporting multiple callbacks, optional args, etc. Type: improvement Change-Id: I96244c098712e8213374678623f12527b0e7f387 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-01-05interface: refactor interface capabilities codeDamjan Marion1-3/+1
Make it shorter to type, easier to debug, make adding callbacks in future simpler. Type: improvement Change-Id: I6cdd6375e36da23bd452a7c7273ff42789e94433 Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-12-22memif: refactor descriptor handling in the input nodeDamjan Marion1-0/+29
Type: improvement Change-Id: I06130447b4e6f4726c4f5bffbe606385c45b8bd4 Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-12-03interface: add multi tx-queues support for new tx infraMohsin Kazmi1-2/+2
Type: feature Change-Id: I231f782b3c56dc2b10321e4569ac7acdad1c11da Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-11-15memif: fix the coverity warningMohsin Kazmi1-5/+8
Type: fix Fixes: 2bae16b238bd ("memif: fix the default txq placement") Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com> Change-Id: I8fbb2aa92dc31d84a5cd0f7b9a3c7f39dfb064ee
2021-11-12memif: fix the default txq placementMohsin Kazmi1-3/+9
Type: fix Fixes: 3effb4e63068 ("memif: integrate with new tx infra") "memif: integrate with new tx infra" patch integrated memif with new tx infra. There might be scenarios when txqs were less than vpp threads, in which case, txqs should be shared among threads. This patch fixes it. Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com> Change-Id: I1c64a1370f5024240ab56311f75665db31714b60
2021-11-09memif: memif linkstate can't become upDaniel Béreš1-1/+8
Admin down implies Link down but nothing came with admin up. Ticket: VPP-1959 Type: fix Change-Id: I43725329ae7918659c73d703280c25de5f0b1d14 Signed-off-by: Daniel Béreš <daniel.beres@pantheon.tech>
2021-10-12memif: fix the memif crash when slave disconnectMohsin Kazmi1-1/+2
Type: fix Fixes: 3effb4e63068 ("memif: integrate with new tx infra") memif is recently integrated with new tx infra. But it introduces a crash when slave disconnect from master but interface is not deleted. Disconnect routine was missing unregister of all tx queues. This patch fixes it. Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com> Change-Id: I81c59cc1a03561248ec8595d5e3caa54f421833e
2021-10-04memif: integrate with new tx infraMohsin Kazmi1-4/+8
Type: improvement Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com> Change-Id: I7c2b9891e269f23c3aa2a0abfee3cf0a0f1e2135
2021-05-26vppinfra: explicit blocking mode for sock connectsFlorin Coras1-2/+3
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I3a33230de13fef613dc9523cf24a9968d200c2e5
2021-05-08memif: Fix delete on errorNathan Skrzypczak1-8/+0
Type: fix Change-Id: I3cc09630cae999cc194a0eedb4d2cfee7a826b76 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-04-18vppinfra: remove linux/syscall.hDamjan Marion1-1/+0
For portabiliy reasons it is better to have all wrapped in clib code. I.e. instead of using getcpu() we have clib_get_current_numa_node () and clib_get_current_cpu_id(). Type: refactor Change-Id: I29b52d7f29bc7f93873402c4070561f564b71c63 Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-26vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()Damjan Marion1-2/+2
Type: improvement Change-Id: If3da7d4338470912f37ff1794620418d928fb77f Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-19interface: add capabilities flagsMohsin Kazmi1-1/+1
Type: improvement This patch adds flags to represent the modern NICs capabilities. Change-Id: I96d38d9ab7eac55974d72795cd100d8337168e1e Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-01-21memif: adapt to new rxq frameworkMohammed Hawari1-18/+17
Change-Id: Ifa8bccd8a34ec1b14e772ee53757e9083373e3de Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: feature
2021-01-20memif: fix vpp to go link up immediately on admin upEd Warnicke1-0/+20
Type: improvement Previously, memif would check every 3 seconds to see if an interface had gone admin up. Now it does as soon as admin up occurs. Signed-off-by: Ed Warnicke <hagbard@gmail.com> Change-Id: I808699cd5980fa162c34ac977f43d00ed6b67115 Signed-off-by: Ed Warnicke <hagbard@gmail.com>
2020-12-14misc: move to new pool_foreach macrosDamjan Marion1-3/+3
Type: refactor Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-04libmemif: clean up typosPaul Vinciguerra1-1/+1
Type: style Change-Id: I0d25d922312dfd60a665916cf47c3d2faa29ea49 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-10-26memif: handle unexpected EPOLLOUT for RX queueSteven Luong1-0/+12
Getting an unexpected EPOLLOUT for RX queue and crashing due to missing callback function on write_function to handle EPOLLOUT. (gdb) f 5 f 5 node=<optimized out>, vm=0x7f948bbe4540 <vlib_global_main>) at /vpp/src/vlib/unix/input.c:325 325 errors[n_errors] = f->write_function (f); (gdb) p *e p *e $21 = {events = 4, data = {ptr = 0x23, fd = 35, u32 = 35, u64 = 35}} (gdb) p file_main.file_pool[e->data.fd] p file_main.file_pool[e->data.fd] $22 = {file_descriptor = 37, flags = 1, polling_thread_index = 0, private_data = 65536, read_function = 0x7f944a87b140 <memif_int_fd_read_ready>, write_function = 0x0, error_function = 0x0, description = 0x7f944be22400 "memif0/1 rx 0 int", read_events = 0, write_events = 1, error_events = 0} (gdb) File descriptors are recycled. It is likely that the EPOLLOUT is meant for the previous owner of the same file descriptor number which memif recycled and memif RX did not expect to receive an EPOLLOUT. For defensive play, we create a dummy callback function to ignore the EPOLLOUT instead of crashing. Type: fix Signed-off-by: Steven Luong <sluong@cisco.com> Change-Id: I535cadbb9b71d3db2995b118c59a12c71f10af09
2020-10-08interface: shorten vnet_hw_if_rx_modeDamjan Marion1-3/+3
This is part of bigger refactor. Type: refactor Change-Id: I6fc2c0a1e2d217a70952901bcf775b8485bd3c20 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-02memif: map shared memory with clib_mem_vm_map_shared(...)Damjan Marion1-10/+25
Type: improvement Change-Id: I91031d56aae884a0a42fca343a2fc24c442b1da8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-10-23memif: memif buffer leaks during disconnecting zero copy interface.Changqian Wang1-0/+36
code added to free the zero copy interface rx/tx queue buffers during disconnecting. As ddc9eb4 find the last official solution introduced core in ut. This does not. Type: fix Signed-off-by: Changqian Wang <changqwa@cisco.com> Change-Id: I971ee164e6d4331a85feb9e65d6702d771c86985
2019-10-14memif: Revert "memif buffer leaks during disconnect."Andrew Yourtchenko1-36/+2
This reverts commit d570c4d18df404cb59ef72d20d56f8e31418c8e9. That commit introduced crash into memif make test-debug. To reproduce: "TEST=memif make test-debug". With this commit reverted the make test-debug for memif passes. Type: fix Change-Id: Ic335359e2050bb8a5d530b01c595b081476fa197 Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2019-10-03memif: memif buffer leaks during disconnect.Padma Ram1-2/+36
- code added to release the mbuf's to main pool during memif disconnect. Type: fix Change-Id: I504dacc9a40bc1702831cf3208fd532d1ae68a6f Signed-off-by: Padma Ram <padmaram86.raja@gmail.com>
2019-05-03plugins: clean up plugin descriptionsDave Wallace1-1/+1
- Make plugin descriptions more consistent so the output of "show plugin" can be used in the wiki. Change-Id: I4c6feb11e7dcc5a4cf0848eed37f1d3b035c7dda Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-01-30buffers: major cleanup and improvementsDamjan Marion1-0/+5
This patch introduces following changes: - deprecated free lists which are not used and not compatible with external buffer managers (i.e. DPDK) - introduces native support for per-numa buffer pools - significantly improves performance of buffer alloc and free Change-Id: I4a8e723ae47056717afd6cac0efe87cb731b5be7 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-20buffers: keep buffer_main in vlib_main_tDamjan Marion1-1/+1
Change-Id: I3bb1d9f83dd08f4b93acd4a281bfec0674e39c2e Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-18deprecate clib_memcpy64_x4Damjan Marion1-4/+1
Storing buffer in local template seems to be better option.... Change-Id: I1a2fdd68cb956f99a5b36d2cd810fc623e089bcf Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-10-23Numa-aware, growable physical memory allocator (pmalloc)Damjan Marion1-5/+5
Change-Id: Ic4c46bc733afae8bf0d8146623ed15633928de30 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-10-23c11 safe string handling supportDave Barach1-7/+7
Change-Id: Ied34720ca5a6e6e717eea4e86003e854031b6eab Signed-off-by: Dave Barach <dave@barachs.net>
2018-10-09memif: coverity fixJakub Grajciar1-2/+4
Change-Id: I2b14e2a035a37b04816aac1e610146be58ad1e92 Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2018-10-08memif: socket filename add/del bugfixJakub Grajciar1-3/+3
Check access rights using effective user/group IDs Change-Id: I3683258c24bcd7817024bffbd56b54b2f596fdd7 Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2018-10-03memif: include interface name in logsJuraj Sloboda1-18/+15
Change-Id: I67f58aa93c721dbd518cc2ddcea330006693662f Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2018-10-03VPP-1440: clean up coverity warningsDave Barach1-2/+2
Change-Id: Ie315d4e83c0575d82aee0369ef50e8dd2dad6a2a Signed-off-by: Dave Barach <dave@barachs.net>
2018-09-24Trivial: Clean up some typos.Paul Vinciguerra1-1/+1
Change-Id: I085615fde1f966490f30ed5d32017b8b088cfd59 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2018-07-31memif: socket filename fixJakub Grajciar1-11/+19
create runtime dir when adding default socket filename. Change-Id: Iad7e751fcab7ce773e0907302414a06ea44dd6cd Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2018-07-25VPP-1332 memif: add/del socket filename bugfixJakub Grajciar1-1/+27
in case of relative path, create subdirs inside runtime dir. in case of absolute path, if folder does not exist return error. Change-Id: I01fe018102c69deb105160cfa18b741541d76c82 Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2018-05-25memif: Add support for loggingJakub Grajciar1-22/+61
Change-Id: I0fe60a639c7589dc842d85db092c81c1a7441cb7 Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2018-04-04memif: zero copy slaveDamjan Marion1-103/+157
Change-Id: I65306fb1f8e39221dd1d8c00737a7fb1c0129ba8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-03-22memif: version 2Damjan Marion1-6/+33
In version 1 of the protocol sender was always ring producer and receiver was consumer. In version 2 slave is always producer, and in case of master-to-slave rings, slave is responsible for populating ring with empty buffers. As this is major change, we need to bump version number. In addition, descriptor size is reduced to 16 bytes. This change allows zero-copy-slave operation (to be privided in the separate patch). Change-Id: I02115d232f455ffc05c0bd247f7d03f47252cfaf Signed-off-by: Damjan Marion <damarion@cisco.com> Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2018-02-09memif: fix crash caused by zero pkt len in memif and clear dirty cache while ↵Chun Li1-6/+11
interface reconnect. Change-Id: Ifc7eb2494a22c334d8899422545fca1a4bba4d05 Signed-off-by: Chun Li <chunl2@cisco.com>
2018-02-06vlib: epoll on worker threadsDamjan Marion1-0/+7
This patch teaches worer threads to sleep and to be waken up by kernel if there is activity on file desctiptors assigned to that thread. It also adds counters to epoll file descriptors and new debug cli 'show unix file'. Change-Id: Iaf67869f4aa88ff5b0a08982e1c08474013107c4 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-01-29memif: Add new API calls to manage memif socket names.Jon Loeliger1-43/+129
New API calls and corresponding CLI commands allow the user to manage the socket filenames for memif connections using: vppctl# create memif id <u32> filename <socket-filename> vppctl# delete memif id <u32> and then referencing it later in a memif interface: vppctl# create memif <u32> socket-id <id> mode <mode> <master|slave> ... Corresponding VAT cli entries have also been added. The default memif socket file at id 0 are still always present. The existing memif create/delete CLI commands have been slightly altered into the new syntax: vppctl# create interface memif ... vppctl# delete interface memif ... Change-Id: If2bdc7eac3d81e1d9011a5869747e52fc5e11639 Signed-off-by: Jon Loeliger <jdl@netgate.com> Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-11-09memif: use clib_socket_t for socket connectionsDamjan Marion1-70/+55
This reverts commit 590acf8fa7af6a8604edd72a32f9f087be52c767. new version includes minor fix for the crash when the interface is deleted. Change-Id: I8fc56eb9145e4d8e1d410206f84e705045898608 Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-10-04memif: crash on slave modeSteven1-0/+1
Crash was seen on recent image with this BT on top of the stack (gdb) bt full (mif=0x7fffb6226568) at /vpp/build-data/../src/plugins/memif/memif.c:297 ring = 0x0 <<<<<<<<<< i = 0 j = 0 buffer_offset = 65792 r = 0x7fffb5e59f80 alloc = {flags = 1, name = 0x7fffb449f965 "memif region", size = 4260096, numa_node = 0, addr = 0x7fff41dac000, fd = 11, log2_page_size = 12, n_pages = 1041} err = 0x0 __FUNCTION__ = "memif_init_regions_and_queues" The crash happened at this line. ring = memif_get_ring (mif, MEMIF_RING_S2M, i); ring=>head = ring->tail = 0; <===== Please note that the crash is caused by dereferencing NULL rinng. Put breakpoint into the function. I notice that mif->regions[0].shm is not initialized. (gdb) p mif->regions[0].shm $8 = (void *) 0x0 It looks like we forgot to set shm after clib_mem_vm_ext_alloc(). Add the missing cide and the crash is fixed. Change-Id: Ib722a6c241c77acfa8e33962106b57faa50e1ea7 Signed-off-by: Steven <sluong@cisco.com>