Commit Graph

4647 Commits

Author SHA1 Message Date
Steven Luong
5dedae7291 devices: add null check after map_guest_mem calls
map_guest_mem may return null. Coverity complains about calls
without checking its return. Simple stuff.

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I0626115f4951a88f23d9792f0232fb57c132fbc2
2019-08-02 20:32:14 +00:00
Florin Coras
d2c9e70209 vcl: initialize worker thread index and heap map slot
Type: fix

Change-Id: I7e762b43a2a074dc81cb7b0f6446e315e63ecae5
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02 11:35:07 -07:00
Nathan Skrzypczak
d516ca42d3 vppinfra: Expose function setting __os_thread_index
Type: feature

This is needed when creating pthreads in client applications,
they need a way to set __os_thread_index per thread
that does not conflict with the binary API thread index.

If __os_thread_index is left to 0 in two client pthreads and
they call vl_msg_api_alloc and vec_resize at the same time
it can fail due to them sharing (and push/poping) the same
clib_per_cpu_mheaps slot.

Change-Id: I85d4248a39b641a4d3ad5a1c1bd6e0db5875fab6
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-02 16:49:01 +00:00
Florin Coras
edfe0eea7a tcp: add more connection stats
Type:feature

Change-Id: If02884d0f1f26bfe31ec609ea9611cb27b699868
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02 16:32:34 +00:00
Dave Barach
c62a83daea ethernet: fix ARP feature arc definition
This patch gets rid of an ugly warning during vpp startup:

"vnet_feature_init:143: WARNING: arp arc: last node is arp-disabled,
but expected error-drop!"

Type: fix
Fixes: 1ff56f00ca

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I80914a3c113c090a09bd5a5131e39f036871d92e
2019-08-02 14:14:03 +00:00
Steven Luong
678d64d0b2 vmxnet3: don't bypass ethernet_input
Queue everything to ethernet_input to not break pcap rx trace.
Fix a minor typo in vmxnet3_api.c

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I7df7b3e20b525e3d6f7421c8e213b6541cdd15b6
2019-08-02 13:40:11 +00:00
Florin Coras
23b26e71e7 lb: fix usage of lb_main in test
Type: fix

Change-Id: I9f8a8da31624637c060a9757256589c8f372f192
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02 11:33:43 +00:00
Neale Ranns
2be3eb6793 ipsec: FIx feature ordering
Type: fix
Fixes: 1404698df3

Change-Id: Ibb77d95bb5e862cf5d1cb65843c526fd2e225c62
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-08-02 10:38:49 +00:00
Chenmin Sun
7c615ae9bf virtio: add the display information in virtio cli
Type: fix

1. Add option '[gso-enabled]' in cli 'create interface virtio'
2. Add gso information in virtio_show()

Change-Id: I4eb58f4421325ef54a6a68c8341b3a6d3d68136a
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
2019-08-02 09:21:33 +00:00
Aloys Augustin
2253abad90 quic: fix connection move with multiple workers
Change-Id: Ibd1012c2c1382de442ed294dd9e8a0ec89349fa1
Type: fix
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-08-02 06:31:15 +00:00
John Lo
778ce57318 interface: fix pcap tx/rx trace cli handling
Provide default packet_to_capture value. Display interface name
correctly for "pcap tx/rx trace status".

Type: fix

Signed-off-by: John Lo <loj@cisco.com>
Change-Id: I7064d0dbea236a9aff68bba7fbaf2c4a73b16c6f
Signed-off-by: John Lo <loj@cisco.com>
2019-08-01 22:53:14 +00:00
Florin Coras
49568afd20 session: session pool migration notification
Type: feature

Change-Id: Ia9a5b1a6d85c7f3f2e6db583b33b5b20029a1e88
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-01 22:50:09 +00:00
Florin Coras
4f9446444d vppinfra: fix spinlock and rwlock tests
Type: fix

Change-Id: I67b72b5ad03b972198c27bc0d927867f41b0e20b
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-01 19:16:37 +00:00
Neale Ranns
3b9374fa57 ipsec: Redo the anit-replay check post decrypt
Type: fix

Change-Id: I1fa8c5326d6f22cfb8dd40e97d8a22d11a716922
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-08-01 18:04:42 +00:00
Nathan Skrzypczak
55c68c9521 docs: Small fixes and ordering
* deactivtates the TODOs on doxygen (were empty)
* This move punt.md to readthedocs (should be the new
place for dev doc ?)
* Makes Handoff queue demo plugin a child of dev doc
in doxygen

Type: fix

Change-Id: I1f0476a911b35208212af8dd608bc76160efd22a
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-01 18:01:57 +00:00
jaszha03
30aaf97a90 vppinfra: refactor clib_rwlock_t to use single condition variable
Previous implementation of clib_rwlock_t used two spinlocks: one
writer lock, and one to guard the counter for the number of readers.
This implementation uses a single condition variable rw_cnt which
has the following properties:

if a writer has the rwlock, rw_cnt = -1
if the rwlock is free, rw_cnt = 0
otherwise, rw_cnt > 0 and rw_cnt = number of readers
rw_cnt will never be less than -1

Benchmarking:
The results below are the cycle counts from test_rwlock.c, configured so
that for 10000 iterations, 6 reader and 6 writer threads on separate cores
are spawned such that each writer thread increments a global counter
10000 times in each iteration. For Taishan, 4 reader and 4 writer
threads are spawned in each test.

x86 Xeon old rwlock: 12.473e8, 11.655e8, 13.201e8, 11.347e8, 13.182e8
x86 Xeon new rwlock: 5.881e8, 5.796e8, 6.536e8, 5.540e8, 5.890e8
Aarch64 ThX2* old rwlock: 9.263e7, 8.933e7, 9.074e7, 8.979e7, 9.378e7
Aarch64 ThX2* new rwlock: 7.221e7, 8.107e7, 7.515e7, 7.672e7, 7.386e7
A72 old rwlock: 3.268e6, 3.200e6, 3.086e6, 3.176e6, 3.170e6
A72 new rwlock: 1.261e6, 1.288e6, 1.251e6, 1.229e6, 1.234e6

*ThunderX2 used additional gcc options "-march=armv8.1-a+crc+crypto+lse"

Type: refactor

Change-Id: I7c347d3037b36205ab532cbcb52a374c846eb275
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-08-01 18:01:33 +00:00
Dave Barach
691a3b7f11 vppinfra: remove unused historical code
"timer.[ch]" used a signal handler to deliver timer callbacks. Without
indulging in a set of sigprocmask(...) system calls, it would be
unsafe to use the mechanism.

Rather than wait for another developer to accidentally open this
particular can of worms, best to remove the code. It's nothing more
than an attractive nuisance at this point.

Type: refactor
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ia3e7b00a389c302b466605dff0c1bf3566b8dbbd
2019-08-01 18:00:54 +00:00
Dave Barach
67d09e05d0 vppinfra: make first bihash add thread-safe
Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ie37ff66faba79e3b8f46c7a704137f9ef2acc773
2019-08-01 16:04:06 +00:00
Nathan Skrzypczak
797848d42a quic: Improve quicly_ctx handling & crypto ctx
Type: fix

Change-Id: I898de67c017c3a45bed123d81041b32b43f749d0
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-01 15:34:24 +00:00
Neale Ranns
1ff56f00ca ethernet: Fix node ordering on ARP feautre ARC
Type: fix
Fixes: fe2fff37

this improves the tracing for dropped ARP packets

Change-Id: Iefd0391e349fc54f1beebda403b2349534b20c48
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-08-01 13:09:46 +00:00
Filip Varga
67eb4bb477 nat: handoff rewrite & fixes for multi-worker
Type: fix

Change-Id: Ib9164d8f6c681e8900e645306f3a2dc0ac0e40a8
Signed-off-by: Filip Varga <filipvarga89@gmail.com>
2019-08-01 12:53:06 +00:00
jaszha03
fb1ccc7c36 vppinfra: refactor clib_spinlock_t to use compare and swap
Tested performance of a CAS implementation (using __atomic_compare_exchange)
against a TAS implementation (using __atomic_exchange) using test_spinlock.c
and found some performance improvement.

Generated assembly for CAS and TAS implementations show that TAS always
executes with a load-store dependency, but CAS moves a branch condition
between the load and store so that only a load occurs when the lock is free.

Benchmarking:
The results below are the cycle counts from test_spinlock.c, configured so
that for 10000 iterations, 12 threads on separate cores are spawned, each of
which increments a global counter 10000 times in each iteration. For
A72, 8 threads are spawned in each test.

x86 Xeon TAS: 7.333e8, 7.605e8, 7.535e8, 7.485e8, 7.321e8
x86 Xeon CAS: 5.842e8, 5.433e8, 5.389e8, 5.983e8, 5.552e8
Aarch64 ThX2* TAS: 9.852e7, 10.209e7, 9.190e7, 9.600e7, 9.224e7
Aarch64 ThX2* CAS: 7.640e7, 7.486e7, 7.425e7, 7.269e7, 7.534e7
A72 TAS: 7.289e6, 6.963e6, 7.208e6, 6.976e6, 7.200e6
A72 CAS: 1.695e6, 1.608e6, 1.600e6, 1.634e6, 1.746e6

*ThunderX2 used additional gcc options "-march=armv8.1-a+crc+crypto+lse"

Type: refactor

Change-Id: Ic5cd97991804f6b012707fad1a5d1a6edb96cd3d
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-08-01 11:54:17 +00:00
Florin Coras
635acbf4b7 tcp: honor snd_wnd in fast rxt
Type:fix

Change-Id: I2f4224a53360f533c086ebde6a3056e60431da87
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-01 11:52:51 +00:00
Neale Ranns
0bff37f74e qos: Uninitialised variable (coverity)
Type: fix
Fixes: 83832e7ced

Change-Id: I63130c442f71d1aef0d389ab00bac8092224bec2
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-08-01 11:51:26 +00:00
Vratko Polak
7520e17bfa vppapigen: revert "implement reversible repr's"
The previous change seems to affect all CRCs.

Type: fix
Fixes: b504777e7f.

Change-Id: I65e27ce22020e5ebc764b5a51b5fc84992ddb40a
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2019-08-01 10:31:49 +02:00
Hongjun Ni
3efcd0d7c3 lb: vip and as dump/detail api's
- lb_vip_dump/lb_vip_details - get all vip.
- lb_as_dump/lb_as_details - get all as list per vip.
- adds api unit test.
- adds vpp_lb to test framework.

Ticket:
Type: feature

Change-Id: I24be50d62c5234f3535cc840603ddd9df7eb3f07
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-07-31 19:35:13 +00:00
Paul Vinciguerra
515eed4258 api: add prefix matcher typedef
There is a need to be able to specifiy whether a prefix in
a request is to match exactly or if more specific
prefixes are also desired.

Todo: Uncomment defaults, once supported in vppapigen.

Type: feature

Change-Id: I74fdef0e89e3aefda822c7c0a477e22479297a90
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-31 19:33:52 +00:00
Filip Varga
e6e09a4ace nat: elog rewrite for multi-worker support
Type: fix

Change-Id: I04f136a04bc022d223e4bcb5c59920bd1f1fd560
Signed-off-by: Filip Varga <filipvarga89@gmail.com>
2019-07-31 17:43:33 +00:00
Steven Luong
4208a4ce8d devices interface tests: vhosst GSO support
Add gso option in create vhost interface to support gso and checksum
offload.

Tested with the following startup options in qemu:
csum=on,gso=on,guest_csum=on,guest_tso4=on,guest_tso6=on,guest_ufo=on,
host_tso4=on,host_tso6=on,host_ufo=on

Type: feature

Change-Id: I9ba1ee33677a694c4a0dfe66e745b098995902b8
Signed-off-by: Steven Luong <sluong@cisco.com>
2019-07-31 16:33:15 +00:00
Neale Ranns
83832e7ced qos: Store function
Type: feature

store: write a QoS value into the buffer meta-data
record: Extract a QoS value from a packet header and store it.
mark: Make a change to the content of a packet header by writing a stored
      QoS value

Change-Id: I07d1e87dd1ca90d40ac1ae1774fee1b272cab83f
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-31 16:17:36 +00:00
Paul Vinciguerra
b504777e7f vppapigen: implement reversible repr's
Type: feature

Change-Id: I92757f041cde399229c42e34515ace0fcd37908b
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-31 16:14:23 +00:00
YohanPipereau
093dd7fe5a build: Append build number for cpack packages
add_vpp_packaging maccro was circumventing scripts/version causing:
1. build number not being appended to the package
2. invalid package name format (due to cmake cpack module)

Change-Id: I2b9a985357a3f3bd501be6db6ca638d4430f4bbb
Type: make
Fixes: def35a2352
Signed-off-by: YohanPipereau <ypiperea@cisco.com>
2019-07-31 16:02:50 +00:00
Andrew Yourtchenko
e3cb1f94ba pg: clarify the text of error message
Enabling capture on pg with the file already existing
results in a misleading error message. Fix the text.

Change-Id: I1aea49cfeda3b4bfe6ed7b18fd543948a078508a
Type: fix
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2019-07-31 15:04:09 +00:00
Dave Barach
baba24e136 vlib: fix format_error_trace
Error index calculation is error_code + error_node->error_heap_index.

Type: fix
Fixes: gerrit 20802

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I66cf05a29b3cfd9ef9c5468e399290e862b784af
2019-07-31 14:30:12 +00:00
jaszha03
25ab6cfed6 vppinfra: added performance test for clib_rwlock_t (test_rwlock.c)
Spawns a uniform number of writer and reader threads across a number of
cores where each writer thread increments a global variable a specified
number of times, and the reader threads continually poll the global's
value until the writers complete.

Type: test

Change-Id: I979c3734c6d03139d0802bff1846875d226f6fbb
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-07-31 13:55:12 +00:00
jaszha03
5cdde5c25a vppinfra: refactor test_and_set spinlocks to use clib_spinlock_t
Spinlock performance improved when implemented with compare_and_exchange
instead of test_and_set. All instances of test_and_set locks were refactored
to use clib_spinlock_t when possible. Some locks e.g. ssvm synchronize
between processes rather than threads, so they cannot directly use
clib_spinlock_t.

Type: refactor

Change-Id: Ia16b5d4cd49209b2b57b8df6c94615c28b11bb60
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-07-31 13:53:55 +00:00
jaszha03
9a4e631890 vppinfra: added lock performance test for clib_spinlock_t (test_spinlock.c)
Spawns a uniform number of threads across a number of cores where each
thread increments a global variable a specified number of times.

Type: test

Change-Id: I12b3a37708a199c297d022348d99dbb0e8349a9f
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-07-31 13:47:53 +00:00
Florin Coras
7e5e62bbcb vcl: fix epoll chain validation
Type:fix

Change-Id: I91dfe7e0ae2e632022fbf639ca16c93f570849de
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-31 13:44:34 +00:00
Paul Vinciguerra
a47a5f20a3 api papi: add alias for timestamp(datetime)/timedelta
Now that we have support for f64:
- create explicit types for timestamp(datetime)/timedelta
- update log_details to use timestamp and remove redundant string representation.
  If you need the string representation, in python do str(timestamp).
  If you prefer the raw f64 value, the client can pass in the
  _no_type_conversion option.

Type: feature

Change-Id: I547b5fa7122d2afa12628b7db0192c23babbbae8
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-31 13:20:52 +00:00
Paul Vinciguerra
07f87546c2 vppapigen: add endian_string for f64
Type: fix

Change-Id: I35838baea21ead4a3f45d998ff225a513781d7ee
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-31 13:20:18 +00:00
Neale Ranns
1404698df3 ip: Ensure reassembly runs before IPSec decrypt.
Type: fix

Change-Id: I01eeedf8d5015b07b9422c65afe78bfe8177c22c
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-31 10:12:14 +00:00
Neale Ranns
513582c96a fib: Add some path-list flags to its key
Type: fix
Ticket: 1729

The flags that are permanently set on a path-list should form part of
its key in the path-list DB. Otherwise, if shared, they will not behave
as expected.

Change-Id: I0aa7c7c5d270c97b08014e4a47ddbdcee2358706
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-31 10:08:40 +00:00
Neale Ranns
5ca2a8ae19 fib: fix calls to unformat_fib_path
Type: fix
Ticket: 1728

Change-Id: I679c2b8c5b0f751c9476db3669ab3f6c26dcdd28
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-31 10:08:05 +00:00
Neale Ranns
6b43ce57cb ipsec: Typo in flag name
Type: fix

Change-Id: I0c9353598d3c9b7ea587ea8a2b6e1faa5454843d
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-31 01:04:43 -07:00
Nathan Skrzypczak
874a31ea0b quic: fix cert loading
Type: fix

Change-Id: I29d24c8ec7b8e0613d4fbf5eedc72384326dc284
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-30 16:29:24 +00:00
Aloys Augustin
1c2af06852 quic: cleanup and refactorisation
Change-Id: I031a60ac010b55110f32f0a08e19b1156aeda268
Type: refactor
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-07-30 16:29:05 +00:00
jaszha03
f25e7cfa5c vppinfra: refactor use of CLIB_MEMORY_BARRIER ()
All instances of test_and_set locks used the following sequence
to release the locks:

CLIB_MEMORY_BARRIER ();
p->lock = 0; // p is a generic struct with a TAS lock

Use clib_atomic_release to generate more efficient assembly code.

Type: refactor

Change-Id: Idca3a38b1cf43578108bdd1afe83b6ebc17a4c68
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-07-30 16:22:03 +00:00
Neale Ranns
6b03ab7311 vlib: Fix packet tracing
Type: fix
Fixes: 99536f4

Change-Id: Ica230ec9fa7f6fd36e2754e8b0b9db555460ca55
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-30 15:15:37 +00:00
Mohsin Kazmi
19b697f307 tap: fix segv when host-if-name is not given
Type: fix
Fixes: c30d87e613

Change-Id: I86b606b18ff6a30709b7aff089fd5dd00103bd7f
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2019-07-30 14:46:11 +00:00
jaszha03
0455c435af vppinfra: conformed spinlocks to use CLIB_PAUSE
Modified test-and-set spin locks to call CLIB_PAUSE () when spinning
for code consistency. Decreases the memory bandwidth consumed.

Type: fix

Change-Id: I1cca4f87f44f23f257c7a35466cd2e7767072f51
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-07-30 11:46:19 +00:00