Commit Graph

138 Commits

Author SHA1 Message Date
Mohsin Kazmi
a7e830ed46 vlib: move offload flags to 1st cacheline in vlib_buffer_t
Type: improvement

Some tests i.e. ipsec see performance regression when offload flags
are moved to 2nd cacheline. This patch moves them back to 1st cacheline.

Change-Id: I6ead45ff6d2c467b0d248f409e27c2ba31758741
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-05-05 11:10:51 +00:00
Mohammed Hawari
5a504b04fc avf: fix simultaneous txq wrap and tx retry
Change-Id: Ic2b853cda98c3010d2abb5c7ada1b1f6c5bc9f74
Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
Type: fix
Fixes: ca1812dbe7
Ticket: VPP-1980
2021-05-04 10:15:32 +02:00
Benoît Ganne
f89bbbe300 vlib: refactor trajectory trace debug feature
trajectory trace has been broken for a while because we used to save the
buffer trajectory in a vector pointed to in opaque2. This does not work
well when opaque2 is copied (eg. because of a clone) as 2 buffers end up
sharing the same vector.
This dedicates a full cacheline in the buffer metadata instead when
trajectory is compiled in. No dynamic allocation, no sharing, no tears.

Type: refactor

Change-Id: I6a028ca1b48d38f393a36979e5e452c2dd48ad3f
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2021-05-01 11:42:37 +00:00
Radu Nicolau
746ca3a2d4 avf: fix tx path segfault
Type: fix
Fixes: ca1812dbe7
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Change-Id: I657be40689caa0c9e202fb411da6323aafeab57e
2021-04-15 15:24:06 +00:00
Chenmin Sun
fa551b889a avf: remove the vxlan flow support
This patch fixes a vxlan flow type checking bug which is introduced in
commit 7a016e87e4.
It is the native avf instead of dpdk that doesn't support vxlan flow offloading.
So this patch removes Vxlan flow supporting in native avf_plugin and adds
the vxlan flow back to dpdk_plugin.

Type: fix

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I1a72629cee462b890327c589c846f6d532b2d61d
2021-04-15 18:51:24 +08:00
Damjan Marion
6e9b0030d7 avf: rework TX one-by-one loop
Type: improvement
Change-Id: I466fd0324d53e8d68b53a2c84d97a722be90f4a0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-04-13 20:22:42 +00:00
Damjan Marion
6dca02092e avf: avoid placeholder buffer alloc in datapath
Type: improvement
Change-Id: I0ad0fa42f056b5797ba71d6972a44273c13bb97e
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-04-13 13:09:58 +00:00
Damjan Marion
ca1812dbe7 avf: avoid ring wrap in the tx path
Type: improvement
Change-Id: I91ecf0bff2ddd43ab5cf0f03ed2882882154557b
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-04-13 12:37:31 +00:00
Chenmin Sun
7a016e87e4 avf: avf flow bug fix
This patch fixes the below bugs in avf flow:
  1. remove the VXLAN flow as it is not yet supported
  2. fix a typo in IPv6 flow
  3. fix the wrong type of the AH flows

Also did some cleanup in this patch

Type: fix

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I5eae131f1e89071364a41b7006a00e8425089a4f
2021-04-12 20:19:18 +00:00
Steven Luong
5d46e52fd2 avf: correctly set VL_API_AVF_DELETE is_mp_safe
Need to add msg_id_base with VL_API_AVF_DELETE to properly set the
correct is_mp_safe variable.

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I20f6e9441727fb7ffc132965b93c0a90482e1a52
2021-04-08 18:51:02 +00:00
Steven Luong
89ca7df0de avf: crash on avf interface delete
When deleting an avf interface which is not the very first interface
that was created (dev_instance == 0), VPP crashes.

The reason is every avf interface delete always removes the very first
device instance due to ad->dev_instance was wiped out prior to the
statement pool_put_index (am->devices, ad->dev_instance)

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I69bd1588aab9a176f8eef46be7aa5063f5d29482
2021-04-08 09:39:26 -07:00
Damjan Marion
a1510f592b avf: disable VLAN stripping on E810 using V2 VLAN APIs
Type: fix
Change-Id: I9bb19a5c9b5b48825f19a4ac124a3628ceaa081d
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-04-01 13:51:35 +00:00
Damjan Marion
6b88aa2871 avf: improve capabilities handling
Type: improvement
Change-Id: If35b40168414807e928cb3026633ae9d2fa703ed
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-31 15:10:12 +00:00
Chenmin Sun
0b37034fef avf: fix coverity issues
CID #220403 ~ 220406

Type: fix

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Ibb65f9f2b17b9a9d45c077933b033ca3a65ae42f
2021-03-30 09:40:03 +00:00
Damjan Marion
f553a2cbbb vlib: introduce vlib_get_elog_main()
Type: improvement
Change-Id: I73383eb15186021cd6527d112da8443a0082f129
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-26 16:33:42 +01:00
Chenmin Sun
043f0b0ebf avf: flow support enhancement
This patch enables ip4, ip6, ip6-n-tuple, l2tpv3 esp ah flows in avf plugin

Type: improvement

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I92c6d4217a6cce4085ee83e8beb4b037c8d7da5f
2021-03-26 08:30:54 +00:00
Chenmin Sun
245fb34b33 avf: handle flow id in data path
Type: improvement

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I24fa52fee88dabad8f0b84446f796ee055819617
2021-03-26 08:30:54 +00:00
Chenmin Sun
ffe9a54894 avf: add avf flow framework
This patch adds the flow support to VPP avf_plugin.
Currently only IP4-N-TUPLE and GTPU flow are supported as
a reference. More flows will be added later.

Type: feature

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I563dbfacecd3eba31e8c3c7769142ea6adba54b6
2021-03-26 08:30:54 +00:00
Chenmin Sun
c2d30ade27 avf: introduce program flow event
This patch introduces a 'program flow' virtchannel event.
The parameter is_add is used to identify adding or deleting the rule from avf

Type: improvement

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I1f5545ddc23e4494a25afa36ff601607405a8c3d
2021-03-25 15:56:59 +00:00
Mohsin Kazmi
5b3f523918 interface: add capabilities flags
Type: improvement

This patch adds flags to represent the modern NICs capabilities.

Change-Id: I96d38d9ab7eac55974d72795cd100d8337168e1e
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-03-19 14:30:50 +00:00
Damjan Marion
9cc765559c avf: don't memcpy if adminq output buffer size is 0
Type: fix
Change-Id: I0df14ff87d0bf51eeb392f72434febf6c4a2957a
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-05 14:27:58 +00:00
Mohsin Kazmi
6809538e64 vlib: refactor checksum offload support
Type: refactor

This patch refactors the offload flags in vlib_buffer_t.
There are two main reasons behind this refactoring.
First, offload flags are insufficient to represent outer
and inner headers offloads. Second, room for these flags
in first cacheline of vlib_buffer_t is also limited.

This patch introduces a generic offload flag in first
cacheline. And detailed offload flags in 2nd cacheline
of the structure for performance optimization.

Change-Id: Icc363a142fb9208ec7113ab5bbfc8230181f6004
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-02-15 20:32:56 +00:00
Radu Nicolau
e1480a2c12 avf: use write combining store for queues tail update
Performance improvement: on supported platforms, currently only Intel Tremont,
use a write combining store to update the tail pointers.
Also, Tremont node variant is added for all.

Type: improvement

Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Change-Id: Ie9606e403b7d9655184f778e3ffee3027c8c9edd
2021-01-21 13:39:12 +00:00
Damjan Marion
941005336e interface: rx queue infra rework, part one
Type: improvement
Change-Id: I4008cadfd5141f921afbdc09a3ebcd1dcf88eb29
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-01-21 13:20:10 +00:00
Mohammed Hawari
533ac64330 avf: fix l2_len for csum offload
Use vlib_buffer_t::current_data instead of
vnet_buffer_opaque_t::l2_hdr_offset to compute l2_len for checksum
offload (l2_hdr_offset might be invalid if packet originates from an L3
interface)

Change-Id: I2031ea6fd6a7af4b6e186751e119ebd6161641b5
Type: fix
Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
2021-01-19 15:17:26 +00:00
Jieqiang Wang
3daf1f5d3a avf: fix gcc compiling warning on Arm
Initializing struct avf_ip6_psh by {0} using gcc with O2 optimize option
will trigger the -Werror=maybe-uninitialized compiling warning on Arm
because gcc compiler will think some members of the struct avf_ip6_psh
may not be initialized, which probably is a false positive in this case.
The compiling error log is shown as below. Avoid this compiling warning
by explicitly declaring the IPv6 src and dst ip in avf_ip6_psh as
ip6_address_t.

ccache /usr/lib/ccache/gcc-10 -DHAVE_FCNTL64 -DHAVE_GETCPU -DHAVE_MEMFD_CREATE -I/home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src -I. -Iinclude -I/home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/plugins -Iplugins -Iplugins/avf -Wno-address-of-packed-member -g -fPIC -Werror -Wall -march=armv8-a+crc  -O2 -fstack-protector -DFORTIFY_SOURCE=2 -fno-common  -fPIC   -DCLIB_MARCH_VARIANT=cortexa72 -march=armv8-a+crc+crypto -mtune=cortex-a72 -DCLIB_N_PREFETCHES=6 -MD -MT plugins/avf/CMakeFiles/avf_plugin_cortexa72.dir/output.c.o -MF plugins/avf/CMakeFiles/avf_plugin_cortexa72.dir/output.c.o.d -o plugins/avf/CMakeFiles/avf_plugin_cortexa72.dir/output.c.o   -c /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/plugins/avf/output.c
In file included from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/vector_funcs.h:41,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/vector.h:196,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/string.h:48,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/mem.h:49,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/vec.h:42,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/format.h:44,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/elf.h:41,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/elf_clib.h:41,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vlib/vlib.h:44,
                 from /home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/plugins/avf/output.c:18:
/home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/plugins/avf/output.c: In function ‘avf_device_class_tx_fn_cortexa72’:
/home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/vppinfra/byte_order.h:59:10: error: ‘*((void *)&psh+32)’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
   59 |   return __builtin_bswap16 (x);
      |          ^~~~~~~~~~~~~~~~~~~~~
/home/snowball/tasks/test_vpp_build/test-patch-9/vpp/src/plugins/avf/output.c:115:23: note: ‘*((void *)&psh+32)’ was declared here
  115 |    struct avf_ip6_psh psh = { 0 };
      |                       ^~~

Type: fix

Change-Id: I2684b101b07823dfacc4a56cc29d152828d0cf37
Signed-off-by: Jieqiang Wang <jieqiang.wang@arm.com>
2020-12-19 09:59:25 +00:00
Lijian.Zhang
e3e1617207 avf: optimized with NEON SIMD instruction
Optimize avf-input node processing function with NEON SIMD instruction.

Type: improvement

Change-Id: I3dd76ac659686209dda9b176fc426aeae639e99b
Signed-off-by: Lijian Zhang <Lijian.Zhang@arm.com>
2020-12-18 11:26:53 +01:00
Damjan Marion
b2c31b685f misc: move to new pool_foreach macros
Type: refactor
Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-14 12:14:21 +00:00
Mohammed Hawari
2b29c9494e avf: fix coverity issue
Change-Id: I1b589c924326a98c4cabe5496ce72b20673b5153
Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
Type: fix
2020-12-04 22:47:08 +00:00
Mohammed Hawari
bb7991a037 avf: add TSO support
Change-Id: Ica663e1d07225acf53fd74b0051a5a2a34174960
Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
Type: improvement
2020-12-01 08:00:27 +00:00
Mohammed Hawari
80ac72894c avf: add L4 checksum offload support
Change-Id: Ie90437cf597c5d53ab1cc41ea7db15b97614e2fc
Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
Type: improvement
2020-11-15 08:52:15 +00:00
Andrew Yourtchenko
fba2732ec8 avf: actually delete ethernet address if deletion was requested
fixes the coverity issue 214893.

Type: fix
Fixes: 1ab533cba2
Change-Id: I1159f5e23d1cdfcf6575c29d11e884703afee20f
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2020-11-13 15:49:50 +00:00
Damjan Marion
ccbb0665ae avf: don't switch process if already running process node
Type: fix
Change-Id: I82b11339402b5848b27c600f6484aaeee66cc888
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-11-12 16:39:38 +00:00
Benoît Ganne
9a3973e3a3 vlib: fix trace number accounting
When using classifier to filter traces, not all packets will be traced.
In that case, we should only count traced packets.

Type: fix

Change-Id: I87d1e217b580ebff8c6ade7860eb43950420ae78
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-11-09 11:51:34 +00:00
Damjan Marion
bcaa44ced6 avf: use atomic store instead of barrier
Type: improvement
Change-Id: Ifea5f0c2fecb99fd320a2e1141f4b4f0d6a793ca
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-26 14:16:59 +00:00
Damjan Marion
4d7ad4a6cc vlib: add VLIB_REGISTER_LOG_CLASS macro
Type: improvement
Change-Id: Iafcaeb88fa3569e042fb9cb270cf062b145416e2
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-26 10:45:49 +00:00
Damjan Marion
1ab533cba2 avf: add add_del_mac_address handler
Type: improvement
Change-Id: I4d0b1cd87cf2f58a653f40a300da4b7a43348a06
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-09 19:27:24 +00:00
Damjan Marion
eabd424982 interface: shorten vnet_hw_if_rx_mode
This is part of bigger refactor.

Type: refactor
Change-Id: I6fc2c0a1e2d217a70952901bcf775b8485bd3c20
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-08 10:21:54 +00:00
Steven Luong
5aa34d54de avf: check duplicate pci address upon create interface
Entering duplicate pci address when creating an avf interface causes
crash in register_node

(gdb) f 4
145	    error_exit (1);
(gdb) up
354	      clib_error ("more than one node named `%v'", n->name);
(gdb) p n
$1 = (vlib_node_t *) 0x7fffbbe55de4
(gdb) p n->name
$2 = (u8 *) 0x7fffbc410b10 "avf-0/4/a/0-tx"
(gdb)

The fix is to loop through the pci addresses in the avf interface pool
and to reject the duplicate.

Type: improvement

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I4ed6fb630fb11982d85c5bb325d9f0d6beeaf023
2020-09-30 10:10:57 +00:00
Steven Luong
8b388e35b2 avf: validate queue size config
Check CLI queue size is within the range of 64 and 4096
Enhance show hardware to display queue size and number of queues.

Type: improvement

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I360e3cdb2e69e4ea7380ed924e71a5ae84ed4b64
2020-09-29 09:00:26 +00:00
Steven Luong
ba3a20082d avf: wrong argument passed to avf_log_err
Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: Ica4601c9d17e182cbc348989a9f75ab1cb18b78a
2020-09-16 23:17:11 +00:00
Damjan Marion
698eeb126d avf: add assert to ensure that adminq is used only from avf process
Type: improvement
Change-Id: Ib64c9b8207776986656e5a26c13a221edc6cc950
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-11 13:56:10 +00:00
Damjan Marion
160a2a9a8c avf: change promisc mode from the avf process node
Avoid situations where promisc mode is chaged while avf process
is suspended in the middle of adminq operation.

Type: fix
Change-Id: Ia1fc6551e83218b5938630ad3a15d4f3f0ceceff
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-11 13:55:51 +00:00
Damjan Marion
171d6aceb0 avf: fix race between avf and cli/api process
device pool my grow during suspemd which will cause crash in avf process
after it exits from suspend.

Type: fix

Change-Id: I51fec90088c909cfbaaca6c245272a28c0827ca0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-11 11:11:02 +00:00
Damjan Marion
66bb7dd64e avf: fix race between avf process node and avf_delete_if(...)
It may happen that process node is suspended while it waits for response
from adminq and during that time CLI or API process can call
avf_delete_if. When avf process node resumes, it may happen that device
is not there anymeore.

This patch delegates interface deletion to process node, so CLI/API
process just sends signal instead of deleting device instance itself.

Type: fix

Change-Id: I7f12e12df3071650f6e60ad7eb5af23b7acfe335
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-11 07:49:45 +00:00
John Lo
4a302ee7c7 ethernet: fix DMAC check and skip unnecessary ones (VPP-1868)
Fix and optimize DMAC check in ethernet-input node to utilize NIC or
driver which support L3 DMAC-filtering mode so that DMAC check can be
bypassed safely for interfaces/sub-interfaces in L3 mode.
Checking of interface in L3-DMAC-filtering state to avoid DMAC check
require the following:
a) Fix interface driver init sequence for devices which supports L3
   DMAC-filtering to indicate its capability and initialize interface
   to L3 DMAC-filtering state.
b) Fix ethernet_set_flags() function and its associated callback
   flags_change() functions registered by various drivers in interface
   infra to provide proper L3 DMAC filtering status.
Maintain interface/sub-interface L3 config count so DMAC checks can be
bypassed if L3 forwarding is not setup on any main/sub-interfaces.

Type: fix
Ticket: VPP-1868

Signed-off-by: John Lo <loj@cisco.com>
Change-Id: I204d90459c13e9e486cfcba4e64e3d479bc9f2ae
2020-05-27 17:27:27 +00:00
Damjan Marion
d4d2e59d0d avf: interrupt mode, support for WB_ON_ITR
Type: improvement
Change-Id: I5c944c3f82e0f278b64f28e09a74f24514c029f0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-05-22 17:53:49 +02:00
Damjan Marion
5a47b43a39 avf: improve link speed handling
Support VIRTCHNL_VF_CAP_ADV_LINK_SPEED.

Type: improvement
Change-Id: Ie45c9d557d0369464cbb6881ee1259ef3807d7d5
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-05-22 17:22:41 +02:00
Damjan Marion
e7f7190381 avf: fix rx queue refill on buffer alloc failure
If buffer alloc fails, it may happend that rx queue will be stuck
as old code only refills if at least one packet is received.

Type: fix
Change-Id: I388c4f8a9fb2c208bdc222e31b443cbe6b94af82
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-25 11:53:20 +00:00
Damjan Marion
1839fe165c avf: proper promisc handling
Type: fix
Change-Id: Id20a0fe77372602fd211156ccee01c18d829d8df
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-24 13:51:13 +01:00