Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stable/2001 #27

Closed
wants to merge 60 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
c7fe31c
misc: Initial changes for stable/2001 branch
ayourtch Jan 15, 2020
e3cabba
fib: Adjacency realloc during rewrite update walk (VPP-1822)
Jan 12, 2020
29acfa2
ipsec: re-enable DPDK IPSec for tunnel decap/encap (VPP-1823)
Jan 21, 2020
20398a3
fib: FIB crash removing labelled route (VPP-1818)
Jan 20, 2020
864af09
hsa: proxy app fixes
florincoras Jan 22, 2020
9af7a98
api: mark api_trace_command_fn thread-safe
Jan 23, 2020
abd9312
session: fix node runtime in pre-input queue handler
florincoras Dec 18, 2019
0c514f0
srv6-mobile: Update the document
matsusato3 Jan 16, 2020
664c961
nsim: enable output scheduling on main thread
dwallacelf Jan 21, 2020
7d3c2b7
fib: Reload the adj after possible realloc (VPP-1822)
Jan 23, 2020
fb15c0c
session tcp: fix packet tracing
florincoras Jan 28, 2020
a2c1951
devices: vhost: fix data offset on input
bganne Jan 24, 2020
fc98203
misc: Markdown cleanups for the 20.01 release
ayourtch Jan 27, 2020
fce3967
misc: VPP 20.01 Release Notes
ayourtch Jan 24, 2020
1934b13
fib: refresh adj pointer after fib_walk_sync due to possible realloc
Jan 30, 2020
7611d5d
virtio: vhost gso is broken in some topology
Jan 30, 2020
a4eac3f
vppinfra: fix typo in tw_timer_template.c
Feb 3, 2020
1d60927
ipsec: set l2_len for GRE-TEB tunnel decap
Feb 1, 2020
b01058c
classify: pcap / packet trace debug CLI bugs
Jan 27, 2020
af9c2a3
classify: fix "show classify filter" debug CLI
Feb 12, 2020
61b96ce
fib: Fix some more realloc errors
Feb 13, 2020
02d5a67
fib: fib path realloc during midchain stack
Feb 18, 2020
24064d0
fib: adjacency midchain teardown (VPP-1841)
Feb 18, 2020
cd88ca3
ip6: fix l4 checksum with hop-by-hop header
mgsmith1000 Feb 5, 2020
4056ed5
avf: Handle chain buffer in TX properly
Feb 13, 2020
6f171a7
dpdk: TSO does not work for Cisco VIC
Feb 13, 2020
8e50e48
rdma: fix bug related to ring buffer
Feb 18, 2020
ef678a4
vppapigen: fix options representation
Feb 4, 2020
042e8b0
nat: in2out/out2in handoff node index bugfix
Mar 13, 2020
f2e2dd3
ip: Adding IP tables is no MP safe
Mar 25, 2020
0dfc3af
classify: fix pcap filter set init
florincoras Jan 16, 2020
4f81e6f
virtio: fix the out of order descriptors in tx
mohsinkazmi Feb 27, 2020
d642045
virtio: fix link up/down flag
mohsinkazmi Mar 19, 2020
9bf616c
tap: fix the numa/queue for buffers
mohsinkazmi Mar 18, 2020
a8e2c58
tap: fix the default parameter for num_rx_queues
mohsinkazmi Feb 14, 2020
fd8da46
tap: fix host mtu configuration setting
mohsinkazmi Jan 30, 2020
247bbe2
tap: fix the host mac address
mohsinkazmi Jan 30, 2020
a42f9a5
ip-neighbor: fix ip6_ra_cmd
Feb 26, 2020
1453c47
vppinfra: correct fixed pool header size calculation
Feb 24, 2020
e9501c5
dhcp: update secondary radv_info structures
Feb 20, 2020
58d2ba3
vppinfra: fix typo in dlmalloc.c
Mar 21, 2020
121e5c1
docs: pin down sphinx to avoid crash with Sphinx 3.0.0
ayourtch Apr 6, 2020
5a4ee8d
tests: pin sphinx and sphinx-rtd-theme
AloysAugustin Apr 7, 2020
8c6efc0
geneve: Fix the byte swapping for the VNI
Apr 3, 2020
d55f62f
misc: check return values from vlib_buffer_copy(...)
Apr 8, 2020
4603e34
l2: handle complete clone fail in l2_flood
Apr 7, 2020
943fb15
ping: fix buffer allocator error handling
Apr 8, 2020
844ec17
dhcp: fix unicast pkts, clean up state machine
Apr 13, 2020
1a78a8d
build: building applications outside of vpp is missing header files
Mar 5, 2020
31325df
virtio: vhost checksum problem for ipv6
Apr 5, 2020
8da4a72
bonding: Add GSO support
Jan 6, 2020
03dd7c0
misc: 19.08.2 Release Notes
ayourtch Apr 30, 2020
9b5d0b7
vlib: add ASSERT to vlib_time_now(...)
Apr 28, 2020
08f8d3d
ipsec: Add/Del SA not MP safe
Apr 30, 2020
aefcd1a
interface: fix interface rx mode config API
May 5, 2020
1140266
gso: fix the gso segmentation
mohsinkazmi May 12, 2020
e4f0020
bonding: fix the gso flags
mohsinkazmi May 12, 2020
a54a9ef
ipsec: DES/3DES fixing the iv_len for openssl crypto
rajeshgoel9 May 26, 2020
7a071e3
misc: fix the MAKE_PARALLEL_JOBS for 'make verify' target
ayourtch Feb 7, 2020
7006026
fib: IPv6 lookup data structure MP safe when prefixes change (VPP-1881)
May 26, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitreview
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
host=gerrit.fd.io
port=29418
project=vpp
defaultbranch=stable/2001
1,424 changes: 1,423 additions & 1 deletion RELEASE.md

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions build-root/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -653,12 +653,10 @@ configure_check_timestamp = \
# NB: GNU Make 4.2 will let us use '$(file </proc/cpuinfo)' to both test
# for file presence and content; for now this will have to do.
ifndef MAKE_PARALLEL_JOBS
MAKE_PARALLEL_JOBS = -j $(if $(shell [ -f /proc/cpuinfo ] && head /proc/cpuinfo), \
MAKE_PARALLEL_JOBS = $(if $(shell [ -f /proc/cpuinfo ] && head /proc/cpuinfo), \
$(shell grep -c ^processor /proc/cpuinfo), 2)
else
MAKE_PARALLEL_JOBS := -j $(MAKE_PARALLEL_JOBS)
endif
MAKE_PARALLEL_FLAGS ?= $(if $($(PACKAGE)_make_parallel_fails),,$(MAKE_PARALLEL_JOBS))
MAKE_PARALLEL_FLAGS ?= $(if $($(PACKAGE)_make_parallel_fails),,-j $(MAKE_PARALLEL_JOBS))

# Make command shorthand for packages & tools.
PACKAGE_MAKE = \
Expand Down
5 changes: 4 additions & 1 deletion doxygen/dev_doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ Programming notes for developers.
- @subpage stats_doc
- @subpage if_stats_client_doc
- @subpage api_lang_doc
- @subpage handoff_queue_demo_plugin
- @subpage handoff_queue_demo_plugin
- @subpage lcov_code_coverage
- @subpage mdata_doc

1 change: 1 addition & 0 deletions doxygen/user_doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Several modules provide operational, dataplane-user focused documentation.
- @subpage lldp_doc
- @subpage map_doc
- @subpage marvel_plugin_doc
- @subpage srv6_mobile_plugin
- @subpage mtu_doc
- @subpage nat64_doc
- @subpage nat_ha_doc
Expand Down
File renamed without changes.
2 changes: 2 additions & 0 deletions extras/lcov/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Code coverage analysis with lcov {#lcov_code_coverage}

## Prerequisites

The Linux gcov and lcov tools are fussy about gcc / g++ compiler
Expand Down
4 changes: 3 additions & 1 deletion extras/pcapcli/setup.tracefilter
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ packet-generator new {
}
}

classify filter trace mask l3 ip4 src match l3 ip4 src 192.168.1.15
comment { Pick one, uncomment, and "pcap rx ..." or "trace add pg-input ..." }
comment { classify filter trace mask l3 ip4 src match l3 ip4 src 192.168.1.15 }
comment { classify filter pcap mask l3 ip4 src match l3 ip4 src 192.168.1.15 }
3 changes: 2 additions & 1 deletion src/plugins/avf/avf.h
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,8 @@ typedef struct
} avf_input_trace_t;

#define foreach_avf_tx_func_error \
_(NO_FREE_SLOTS, "no free tx slots")
_(SEGMENT_SIZE_EXCEEDED, "segment size exceeded") \
_(NO_FREE_SLOTS, "no free tx slots")

typedef enum
{
Expand Down
144 changes: 138 additions & 6 deletions src/plugins/avf/output.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ avf_tx_desc_get_dtyp (avf_tx_desc_t * d)
}

static_always_inline u16
avf_tx_enqueue (vlib_main_t * vm, avf_txq_t * txq, u32 * buffers,
u32 n_packets, int use_va_dma)
avf_tx_enqueue (vlib_main_t * vm, vlib_node_runtime_t * node, avf_txq_t * txq,
u32 * buffers, u32 n_packets, int use_va_dma)
{
u16 next = txq->next;
u64 bits = AVF_TXD_CMD_EOP | AVF_TXD_CMD_RSV;
Expand All @@ -41,13 +41,16 @@ avf_tx_enqueue (vlib_main_t * vm, avf_txq_t * txq, u32 * buffers,
u16 mask = txq->size - 1;
vlib_buffer_t *b[4];
avf_tx_desc_t *d = txq->descs + next;
u16 n_desc_needed;
vlib_buffer_t *b0;

/* avoid ring wrap */
n_desc_left = txq->size - clib_max (txq->next, txq->n_enqueued + 8);

if (n_desc_left == 0)
return 0;

/* Fast path, no ring wrap */
while (n_packets_left && n_desc_left)
{
u32 or_flags;
Expand Down Expand Up @@ -103,6 +106,57 @@ avf_tx_enqueue (vlib_main_t * vm, avf_txq_t * txq, u32 * buffers,
txq->bufs[next] = buffers[0];
b[0] = vlib_get_buffer (vm, buffers[0]);

/* Deal with chain buffer if present */
if (b[0]->flags & VLIB_BUFFER_NEXT_PRESENT)
{
n_desc_needed = 1;
b0 = b[0];

/* Wish there were a buffer count for chain buffer */
while (b0->flags & VLIB_BUFFER_NEXT_PRESENT)
{
b0 = vlib_get_buffer (vm, b0->next_buffer);
n_desc_needed++;
}

/* spec says data descriptor is limited to 8 segments */
if (PREDICT_FALSE (n_desc_needed > 8))
{
vlib_buffer_free_one (vm, buffers[0]);
vlib_error_count (vm, node->node_index,
AVF_TX_ERROR_SEGMENT_SIZE_EXCEEDED, 1);
n_packets_left -= 1;
buffers += 1;
continue;
}

if (PREDICT_FALSE (n_desc_left < n_desc_needed))
/*
* Slow path may be able to to deal with this since it can handle
* ring wrap
*/
break;

while (b[0]->flags & VLIB_BUFFER_NEXT_PRESENT)
{
if (use_va_dma)
d[0].qword[0] = vlib_buffer_get_current_va (b[0]);
else
d[0].qword[0] = vlib_buffer_get_current_pa (vm, b[0]);

d[0].qword[1] = (((u64) b[0]->current_length) << 34) |
AVF_TXD_CMD_RSV;

next += 1;
n_desc += 1;
n_desc_left -= 1;
d += 1;

txq->bufs[next] = b[0]->next_buffer;
b[0] = vlib_get_buffer (vm, b[0]->next_buffer);
}
}

if (use_va_dma)
d[0].qword[0] = vlib_buffer_get_current_va (b[0]);
else
Expand All @@ -118,6 +172,84 @@ avf_tx_enqueue (vlib_main_t * vm, avf_txq_t * txq, u32 * buffers,
d += 1;
}

/* Slow path to support ring wrap */
if (PREDICT_FALSE (n_packets_left))
{
txq->n_enqueued += n_desc;

n_desc = 0;
d = txq->descs + (next & mask);

/* +8 to be consistent with fast path */
n_desc_left = txq->size - (txq->n_enqueued + 8);

while (n_packets_left && n_desc_left)
{
txq->bufs[next & mask] = buffers[0];
b[0] = vlib_get_buffer (vm, buffers[0]);

/* Deal with chain buffer if present */
if (b[0]->flags & VLIB_BUFFER_NEXT_PRESENT)
{
n_desc_needed = 1;
b0 = b[0];

while (b0->flags & VLIB_BUFFER_NEXT_PRESENT)
{
b0 = vlib_get_buffer (vm, b0->next_buffer);
n_desc_needed++;
}

/* Spec says data descriptor is limited to 8 segments */
if (PREDICT_FALSE (n_desc_needed > 8))
{
vlib_buffer_free_one (vm, buffers[0]);
vlib_error_count (vm, node->node_index,
AVF_TX_ERROR_SEGMENT_SIZE_EXCEEDED, 1);
n_packets_left -= 1;
buffers += 1;
continue;
}

if (PREDICT_FALSE (n_desc_left < n_desc_needed))
break;

while (b[0]->flags & VLIB_BUFFER_NEXT_PRESENT)
{
if (use_va_dma)
d[0].qword[0] = vlib_buffer_get_current_va (b[0]);
else
d[0].qword[0] = vlib_buffer_get_current_pa (vm, b[0]);

d[0].qword[1] = (((u64) b[0]->current_length) << 34) |
AVF_TXD_CMD_RSV;

next += 1;
n_desc += 1;
n_desc_left -= 1;
d = txq->descs + (next & mask);

txq->bufs[next & mask] = b[0]->next_buffer;
b[0] = vlib_get_buffer (vm, b[0]->next_buffer);
}
}

if (use_va_dma)
d[0].qword[0] = vlib_buffer_get_current_va (b[0]);
else
d[0].qword[0] = vlib_buffer_get_current_pa (vm, b[0]);

d[0].qword[1] = (((u64) b[0]->current_length) << 34) | bits;

next += 1;
n_desc += 1;
buffers += 1;
n_packets_left -= 1;
n_desc_left -= 1;
d = txq->descs + (next & mask);
}
}

if ((slot = clib_ring_enq (txq->rs_slots)))
{
u16 rs_slot = slot[0] = (next - 1) & mask;
Expand Down Expand Up @@ -177,15 +309,15 @@ VNET_DEVICE_CLASS_TX_FN (avf_device_class) (vlib_main_t * vm,
n_free = (complete_slot + 1 - first) & mask;

txq->n_enqueued -= n_free;
vlib_buffer_free_from_ring (vm, txq->bufs, first, txq->size,
n_free);
vlib_buffer_free_from_ring_no_next (vm, txq->bufs, first, txq->size,
n_free);
}
}

if (ad->flags & AVF_DEVICE_F_VA_DMA)
n_enq = avf_tx_enqueue (vm, txq, buffers, n_left, 1);
n_enq = avf_tx_enqueue (vm, node, txq, buffers, n_left, 1);
else
n_enq = avf_tx_enqueue (vm, txq, buffers, n_left, 0);
n_enq = avf_tx_enqueue (vm, node, txq, buffers, n_left, 0);

n_left -= n_enq;

Expand Down
3 changes: 2 additions & 1 deletion src/plugins/crypto_openssl/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ openssl_ops_enc_cbc (vlib_main_t * vm, vnet_crypto_op_t * ops[], u32 n_ops,
int out_len;
int iv_len;

if (op->op == VNET_CRYPTO_OP_3DES_CBC_ENC)
if (op->op == VNET_CRYPTO_OP_3DES_CBC_ENC
|| op->op == VNET_CRYPTO_OP_DES_CBC_ENC)
iv_len = 8;
else
iv_len = 16;
Expand Down
Loading