3436 Commits

Author SHA1 Message Date
Neale Ranns
46ee286753 IPSEC: crash on SA dump when SA are bound to tunnels
Change-Id: I1c8256af838e6d4f371549ca91b8b0a4c0c44c65
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-02-28 12:46:07 +00:00
Damjan Marion
bad0bcd442 Fix crash in barrier sync when vlib_worker_threads is zero
Change-Id: I6819dd9dbfc15c17740bdb98b51bdd639ef8c4d2
Signed-off-by: Damjan Marion <damarion@cisco.com>
(cherry picked from commit 8343ee5665942353e57ee074da62b9d07c1c510b)
2019-02-27 15:25:21 +00:00
Klement Sekera
372a33efe8 buffer chain linearization
Rewrite vlib_buffer_chain_linearize function so that it works as intended.
Linearize buffer chains coming out of reassembly to work around some
dpdk-tx issues. Note that this is not a complete workaround
as a sufficiently large packet will still cause the resulting chain to
be too long.

Drop features from reassembly code which relies on knowing which and how
many buffers were freed during linearization, buffer counts and tracing
capabilities for these cases.

Change-Id: Ic65de53ecb5c78cd96b178033f6a576ab4060ed1
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2019-02-27 12:48:13 +01:00
Steven Luong
5880ec02d6 vhost: VPP stalls with vhost performing control plane actions [VPP-1572]
Symptom
-------
With NDR traffic blasting at VPP, bringing up a new VM with vhost
connection to VPP causes packet drops. I am able to recreate this
problem easily using a simple setup like this.

TREX-------------- switch ---- VPP
    |---------------|  |-------|

Cause
-----
The reason for the packet drops is due to vhost holding onto the worker
barrier lock for too long in vhost_user_socket_read(). There are quite a
few of system calls inside the routine. At the end of the routine, it
unconditionally calls vhost_user_update_iface_state() for all message
types. vhost_user_update_iface_state() also unconditionally calls
vhost_user_rx_thread_placement() and vhost_user_tx_thread_placement().
vhost_user_rx_thread_placement scraps out all existing cpu/queue mappings
for the interface and creates brand new cpu/queue mappings for the
interface. This process is very disruptive and very expensive. In my
opinion, this area of code needs a makeover.

Fixes
-----
* vhost_user_socket_read() is rewritten that it should not hold
  onto the worker barrier lock for system calls, or at least minimize the
  need for doing it.
* Remove the call to vhost_user_update_iface_state as a default route at
  the end of vhost_user_socket_read(). There is only a couple of message
  types which really need to call vhost_user_update_iface_state(). We put
  the call to those message types which need it.
* Remove vhost_user_rx_thread_placement() and
  vhost_user_tx_thread_placement from vhost_user_update_iface_state().
  There is no need to repetatively change the cpu/queue mappings.
* vhost_user_rx_thread_placement() is actually quite expensive. It should
  be called only once per queue for the interface. There is no need to
  scrap the existing cpu/queue mappings and create new cpu/queue mappings
  when the additional queues becomes active/enable.
* Change to create the cpu/queue mappings for the first RX when the
  interface is created. Dont remove the cpu/queue mapping when the
  interface is disconnected. Remove the cpu/queue mapping only when the
  interface is deleted.

The create vhost user interface CLI also has some very expensive system
calls if the command is entered with the optional keyword "server"

As a bonus, This patch makes the create vhost user interface binary-api and
CLI thread safe. Do the protection for the small amount of code which is
thread unsafe.

Change-Id: I4a19cbf7e9cc37ea01286169882e5603e6d7eb77
Signed-off-by: Steven Luong <sluong@cisco.com>
(cherry picked from commit 67f935ec6eb9ec37b7d73029c5afa89cbf4a9aa2)
2019-02-22 23:41:14 +00:00
Florin Coras
d0f4dec52b tcp: free sack block list on connection cleanup
Change-Id: I7152b4ae64528082765726d5844580aad54c0c70
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-22 20:44:42 +00:00
Damjan Marion
be0e482019 avf: fix eat own tail issue on tx
Change-Id: Ie14ca18bab47ac6765ff0799475d0c2a4d936f90
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-02-22 17:15:43 +00:00
Damjan Marion
903c21b470 physmem: keep physmem VA in 39-bit address space on x86_64
Some x86 CPUs have IOMMU capable dealing only with 39-bit address space
This patch also adds option to specify physmem base address from
startup.conf

Change-Id: I9e8abd26efb60e9c4ad54c035fb1751a4a61f4dc
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-02-22 16:46:08 +00:00
Damjan Marion
c41559afe5 Add no-append flag to vlib_frame_t
Change-Id: I01c4f5755d579282773ac227b0bc24f8ddbb2bd1
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-02-22 11:31:43 +01:00
Neale Ranns
dc2a250f06 IP route local and connected
allow routes that are local and connected to be added via the API.
this emulates the addition of a second address in the same subnet
added to an interface.

Change-Id: Ib18a08c26956be9a07b3360664210c8cf6734c84
Signed-off-by: Neale Ranns <nranns@cisco.com>
(cherry picked from commit 7425f9289bdc17d330044b0df0fc31cdeeca626b)
2019-02-20 14:40:52 +00:00
Neale Ranns
4c696abc8c FIB: pass a copy the walk context
since it can realloc when new ctx are added. If
not we can get some nasty memory corruption.

Change-Id: I617709c3013acbcb8aee07dc147894f0de896555
Signed-off-by: Neale Ranns <nranns@cisco.com>
(cherry picked from commit 58085f2f6757e464196b283cc8335ab5cf34a012)
2019-02-20 08:53:15 +00:00
Peter Mikus
c01d7488f2 Revert "bond: problem switching from l2 to l3"
During CSIT testing we discovered that LACP tests were failing and
producing coredumps. Reverting this patch fix the problem with VPP
crashing.

This reverts commit f23890138e02d4218c828c427f687f8ecdb0e165.

Change-Id: Icf97053ce1473350add885cbebe591f7f3efcbea
Signed-off-by: Peter Mikus <pmikus@cisco.com>
2019-02-19 16:32:38 +00:00
Florin Coras
cd56f69af9 tcp: fix reset sending in syn-sent
Change-Id: I468b1015bca5f95b162fb49e904aa4e4d38db75e
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit d4c49be5e20406220cf89083c9df86c3c0761a81)
2019-02-07 16:53:01 +00:00
Klement Sekera
827d4e568b ipsec: fix check support functions
Change-Id: If94c57fbb07a7376a9f2873e1489c00b28152620
Signed-off-by: Klement Sekera <ksekera@cisco.com>
(cherry picked from commit 4fd5a9d3e6abdf61f266da8400a299fe5b0eb0ed)
2019-01-30 20:36:33 +00:00
Damjan Marion
9124874e2e avf: fix queue enable issue
It is actually a bitmap....

Change-Id: Ie359e085df3f371512f773600f8d7460b2232b3e
Signed-off-by: Damjan Marion <damjan.marion@gmail.com>
2019-01-28 15:53:34 +01:00
Neale Ranns
b2962715e6 IP6 FIB: walk table for dump (VPP-1553)
Change-Id: Iaa57ace6df96bfacd1235c80ec7bb08e5f335530
Signed-off-by: Neale Ranns <nranns@cisco.com>
(cherry picked from commit 5c1f559b1bf32acd528664e7674a2d46f2aed947)
2019-01-25 15:49:05 +00:00
Steven
38befb3a53 bond: packet drops on VPP bond interface [VPP-1544]
We register callback for VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION and
VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION to add and remove the slave
interface from the bond interface accordingly. For static bonding without
lacp, one would think that it is good enough to put the slave interface into
the ective slave set as soon as it is configured. Wrong, sometimes the slave
interface is configured to be part of the bonding without ever bringing up the
hardware carrier or setting the admin state to up. In that case, we send
traffic to the "dead" slave interface.

The fix is to make sure both the carrier and admin state are up before we put
the slave into the active set for forwarding traffic.

Change-Id: I93b1c36d5481ca76cc8b87e8ca1b375ca3bd453b
Signed-off-by: Steven <sluong@cisco.com>
(cherry picked from commit e43278f75fe3188551580c7d7991958805756e2f)
2019-01-23 22:40:17 +00:00
Florin Coras
0cb68778ec ldp: add support for TCP_CONGESTION sockopts (VPP-1550)
Change-Id: I0fcf3385cc4fb96f000b84d5f880f74131c0d60f
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit 0ed24e93b207850078ca7f58cd4106cc4a906952)
2019-01-21 19:34:15 +00:00
Andrew Yourtchenko
1705599efe doxygen formatting fix: prevent stray examples appearing in the docs
The 'example' keyword triggers the creation of very out-of-context
example in the "Examples" top level of documentation. Rename the
keyword in the comment so the comment is still readable, but
does not trigger the doxygen.

Change-Id: Iecbdc236918f9178a034817aa6cea7ab6b2c1654
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2019-01-21 16:05:28 +01:00
Florin Coras
6e5f93e70d session: add support for vrf in session unformat (VPP-1546)
Change-Id: Ic5ba751c2bd2db9af4a21d3db40cc305d1208c30
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit baee8d498830bbbf54ec76e7c0c887c6373fe985)
2019-01-20 22:57:38 +00:00
Florin Coras
a74ae5886f tcp: fix debugging without cc stats (VPP-1547)
Change-Id: I376856fcadce570bb555064435f5876eefb2befa
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit 0702554639e5149d9012cc196aa43c3c8d0d7f9b)
2019-01-20 19:21:55 +00:00
Michal Cmarada
af429cb381 fix data_length in IpSec API call (VPP-1548)
Change-Id: Idb2839f6082bd2e052be2bc5417f0ebb43d1c0a6
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
2019-01-20 15:21:48 +00:00
Florin Coras
cbb4565c88 tcp: allow data in passive open ack (VPP-1545)
Change-Id: Iceb99d3f8b7029bd1b1e9ebafb1e0b3790c573e4
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit 865872ebdb2bbaf3f157e2a9889405b84114d2eb)
2019-01-18 22:10:24 +00:00
Steven
31fe7aa355 vmxnet3: add numa support and link speed
Allocate physmem on the same numa
set link speed
cap vmxnet3 support version to 3 if the device supports higher version

Change-Id: Id47dd83b0da53e623fd6cf3ad010e58158b1ab15
Signed-off-by: Steven <sluong@cisco.com>
2019-01-15 09:30:10 -08:00
Ole Troan
32ef1376d0 api_helper_macro mp->pid is network endian
Change-Id: I7d2385b9e9bf5a62f3e9382ca2627a74a4e30785
Signed-off-by: Ole Troan <ot@cisco.com>
2019-01-14 16:54:57 +00:00
Simon Zhang
0a9dd3cab7 remove useless line in dpdk cryptodev
Change-Id: I2ef33c7c15b3eb1f55bbfd5cbdd230d6a4d58936
Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-01-13 13:41:19 +00:00
Alexander Chernavin
ad9d528314 bonding: support custom interface IDs
Change-Id: I78fe58144fa3ba2e1c7135897a13a2541f235c91
Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
2019-01-13 13:36:22 +00:00
Steven
e589b38f98 dpdk: show hardware may display the wrong information for rss active
Some dpdk driver does not support rte_eth_dev_rss_hash_conf_get. When that
happens, we display whatever that was in the stack variable for rss_hf which
is confusing.

The fix is to clear rss_hf prior to the call.

Before the fix
--------------
DBGvpp# sh hard
              Name                Idx   Link  Hardware
format_dpdk_device:599: rte_eth_dev_rss_hash_conf_get returned -95
GigabitEthernet13/0/0              2     up   GigabitEthernet13/0/0
  Link speed: 10 Gbps
  Ethernet address 00:0c:29:c4:8c:eb
  VMware VMXNET3
  ...
    rss avail:         ipv4 ipv4-tcp ipv6 ipv6-tcp
    rss active:        ipv4 ipv4-frag ipv4-tcp ipv4-udp ipv4-other

After the fix
-------------
DBGvpp# sh hard
              Name                Idx   Link  Hardware
format_dpdk_device:600: rte_eth_dev_rss_hash_conf_get returned -95
GigabitEthernet13/0/0              2     up   GigabitEthernet13/0/0
  Link speed: 10 Gbps
  Ethernet address 00:0c:29:c4:8c:eb
  VMware VMXNET3
  ..
    rss avail:         ipv4 ipv4-tcp ipv6 ipv6-tcp
    rss active:        none

Change-Id: If8f8327f0012eecc8d23cd7f3f9cc581ca025654
Signed-off-by: Steven <sluong@cisco.com>
2019-01-13 13:35:55 +00:00
Florin Coras
b5e55a27a4 session: generate wrong thread errors instead of crashing
Change-Id: I7e59ae718d2722c49d42b22a0874e1645a191e89
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-12 01:18:03 +00:00
Igor Mikhailov (imichail)
eab857fa32 Fix custom-dump for gre_add_del_tunnel: src and dst IPs
Change-Id: I747ca01dc8df9fb5e11168ec46979c4a1f1baa7c
Signed-off-by: Igor Mikhailov (imichail) <imichail@cisco.com>
2019-01-11 23:14:33 +00:00
Igor Mikhailov (imichail)
0ac827e15c Fix 'show interface span' field length
Allow to display longer interface names, e.g. VirtualEthernet0/0/0.102
The field length (32) is now the same as for 'show interface'.

Change-Id: I1cb1efd459acb800bfaeeec40b672c8b17cd8c3d
Signed-off-by: Igor Mikhailov (imichail) <imichail@cisco.com>
2019-01-11 14:03:53 -08:00
Mohsin Kazmi
14fa5c2a89 gbp2: Fix typo in condition
Change-Id: I1b327309586c9234a22cda011953a1940d31e1ba
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2019-01-11 15:21:43 +01:00
Steven
f09179f91a strncpy_s_inline copies more bytes than necessary
Given n equals to the maximum number of bytes to copy from src in the API,
or the rough estimate strlen of src, strncpy_s_inline should not copy more
than the number of bytes, computed by strlen(src), to dst if n is greater than
strlen(src). The number of bytes to copy is computed by strnlen(src,n), not n.

Change-Id: I088b46125d9776962750e121f1fbf441952efc2b
Signed-off-by: Steven <sluong@cisco.com>
2019-01-10 22:18:40 +00:00
Florin Coras
1bcad5cdb7 session/vcl: improve fifo tx notifications
Change-Id: Ied476c417c8ba5b4d7c615125c36eecd9ca64fbc
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-10 21:01:05 +00:00
Neale Ranns
45db885a6a ARP/ND: copy opaque2 persistent fields to new packet
Change-Id: Ic65f686aaccaf8450732d88d7471b587faccaa9d
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-01-10 13:29:33 +00:00
Dave Barach
7b01e9e897 Use the official libpcap file type
Change-Id: Ia34a4278eedc8cf450688b1fa0291e1f976868d3
Signed-off-by: Dave Barach <dave@barachs.net>
2019-01-09 10:23:16 -05:00
Mohsin Kazmi
5f4eb24287 gbp: Fix coverity warnings
Change-Id: Iea64d246008b298edeeae338d781b79362f42046
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2019-01-09 06:10:08 +00:00
Jon Loeliger
e3034cdc74 VXLAN: Prevent duplicate bypass graph nodes.
Change-Id: I68cc509b594b09751ff5e0e09bbca187a4a88edd
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2019-01-09 04:13:15 +00:00
Hongjun Ni
95eec06e9d Fix name of ipv6-n-tuple
Change-Id: Ia95a75295e4865b4720573f164ccba8bcc7679ae
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-01-08 21:21:14 +00:00
Damjan Marion
e40231b1ec virtio: fix kick race issue
Change-Id: I25b2a28513821bc5eab9ac6890a3964d412b0399
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-08 17:03:56 +00:00
Florin Coras
294afe297c vcl/ldp: select cleanup/improvements
Change-Id: I640e69388f2ab0f66ad60c5165c749f5a5a9f525
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-08 00:45:21 -08:00
Steven
98311da8b4 string_test: coverity woe
Remove the needless tests and checks which coverity complains about in
string_test.c

Change-Id: I971650cada77136f06528a65625ef99bd3d7e915
Signed-off-by: Steven <sluong@cisco.com>
2019-01-07 22:38:39 +00:00
Andrew Yourtchenko
754f24b359 tapv2: add "tap_flags" field to the TAPv2 interface API
Change-Id: I26f99d95f52c9fe107d17dcbbf5c6185523beade
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2019-01-07 21:59:10 +00:00
Damjan Marion
d2bfb78f4f avf: allocate descriptor memory from local numa
Change-Id: Ic56ee4ce83b282a5f0f5aed500721fe639b941b3
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-07 21:57:17 +00:00
Neale Ranns
7c03ed47d5 VOM: mroutes
- fixes in ip.api for dumping mroute path flags

Change-Id: I13b0cfb15d374250ed71bd4e13dda9b798c18204
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-01-07 21:56:08 +00:00
John Lo
e26c81fc80 L2 BD API to flush all IP-MAC entries in the specified BD
Implement API/CLI to clear IP-MAC tables used for ARP-termination
in the specified bridge domain.
The CLI to flush MAC IP tables for a BD is:
 set bridge-domain arp entry <bd-id> del-all
The API added is bd_ip_mac_flush.

Change-Id: I34ceb87c0f480c7102f6559312c24081ed485af8
Signed-off-by: John Lo <loj@cisco.com>
2019-01-07 21:55:28 +00:00
Jon Loeliger
2500c79423 MAP: Prevent duplicate MAP-E/T graph nodes.
Change-Id: I6031f3f9cfa048a901a8424d33d47679115c2eb3
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2019-01-07 21:30:11 +00:00
Ping Yu
ceebc1e715 Change vpp code to align with openssl interface change
PR in openssl community is almost done, and need to change some code in VPP
to align with the openssl interface.

Change-Id: Ic7da53e507b67b53958760d07738dd774b1c526d
Signed-off-by: Ping Yu <ping.yu@intel.com>
2019-01-07 21:21:25 +00:00
Dave Barach
3a63fc5470 Handle buffer alloc failure in vlib_buffer_add_data
It's not OK to crash due to a transient buffer allocation failure.

Return 1 if the requested operation failed, otherwise 0.

Buffer index parameter change to a value-result, so the caller can
differentiate between partial and complete allocation failure: callers
which request an initial allocation (inbound bi = ~0) need to check
the (out) value to decide whether or not to call vlib_buffer_free(...).

Change-Id: I03029d7f2714c17dca4630dfd95a1eb578b68384
Signed-off-by: Dave Barach <dave@barachs.net>
2019-01-07 16:47:09 +00:00
Andrej Kozemcak
9d7570ccde Fix TCP checksum.
Set TCP checksum to zero, before calculate the TCP checksum.

Change-Id: Id96743334481804b8ebb74afef2f1dbfed29e0cb
Signed-off-by: Andrej Kozemcak <andrej.kozemcak@pantheon.tech>
2019-01-07 16:43:37 +00:00
Florin Coras
7baeb71f92 vcl/ldp: add locked sessions shim layer
Moves LDP logic that allows sharing of sessions between multi-process
app workers into a separate VCL shim layer. Also refactors LDP to use
the new layer.

Change-Id: I8198b51eae7d099a8c486e36b29e3a0cb8cee8e9
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-07 16:37:55 +00:00