John Daley [Tue, 19 Jul 2016 22:43:45 +0000 (15:43 -0700)]
net/enic: heed VLAN strip flag
The configure function enicpmd_dev_configure() was not paying attention
to the rxmode VLAN strip bit. Set the VLAN strip mode according to the bit.
Fixes: fefed3d1e62c ("enic: new driver") Signed-off-by: John Daley <johndale@cisco.com> Reviewed-by: David Harton <dharton@cisco.com> Tested-by: David Harton <dharton@cisco.com>
John Daley [Tue, 19 Jul 2016 22:42:43 +0000 (15:42 -0700)]
net/enic: fix possible Rx corruption
Initialize the mbuf data offset to RTE_PKTMBUF_HEADROOM as the
enic takes ownership of them. If allocated mbufs had some offset
other than RTE_PKTMBUF_HEADROOM, the application would read mbuf
data starting at the wrong place and misinterpret the packet.
Fixes: 856d7ba7ed22 ("net/enic: support scattered Rx") Reviewed-by: Nelson Escobar <neescoba@cisco.com> Signed-off-by: John Daley <johndale@cisco.com>
drivers/net/ena/base/ena_com.c(346):
error #3656: variable "dev_node" may be used before its value is set
ENA_MEM_ALLOC_COHERENT_NODE(ena_dev->dmadev,
^
drivers/net/ena/base/ena_com.c(399):
error #3656: variable "prev_node" may be used before its value is set
ENA_MEM_ALLOC_COHERENT_NODE(ena_dev->dmadev,
^
Fixes: 3d3edc265fc8 ("net/ena: make coherent memory allocation NUMA-aware") Reported-by: Eoin Breen <eoin.breen@intel.com> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Jan Medala <jan@semihalf.com>
Disable fastpath interrupts and remove unneeded delay in
bnx2x_interrupt_action(). This patch fixes and prevents performance
degradation (upto 50% drop) for BNX2X PMD.
The support of virtio-user changed the way the mbuf dma address is
retrieved, using a physical address in case of virtio-pci and a virtual
address in case of virtio-user.
This change introduced some possible memory corruption in packets,
replacing:
m->buf_physaddr + RTE_PKTMBUF_HEADROOM
by:
m->buf_physaddr + m->data_off (through a macro)
This patch fixes this issue, restoring the original behavior.
By the way, it also rework the macros, adding a "VIRTIO_" prefix and
API comments.
Fixes: f24f8f9fee8a ("net/virtio: allow virtual address to fill vring descriptors") Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Currently while calling of 'rte_vhost_driver_unregister()' connection
to QEMU will not be closed. This leads to inability to register driver
again and reconnect to same virtual machine.
This scenario is reproducible with OVS. While executing of the following
command vhost port will be re-created (will be executed
'rte_vhost_driver_register()' followed by 'rte_vhost_driver_unregister()')
network will be broken and QEMU possibly will crash:
ovs-vsctl set Interface vhost1 ofport_request=15
Fix this by closing all established connections on driver unregister and
removing of pending connections from reconnection list.
If something abnormal happened to QEMU, 'connect()' can block calling
thread (e.g. main thread of OVS) forever or for a really long time.
This can break whole application or block the reconnection thread.
Example with OVS:
ovs_rcu(urcu2)|WARN|blocked 512000 ms waiting for main to quiesce
(gdb) bt
#0 connect () from /lib64/libpthread.so.0
#1 vhost_user_create_client (vsocket=0xa816e0)
#2 rte_vhost_driver_register
#3 netdev_dpdk_vhost_user_construct
#4 netdev_open (name=0xa664b0 "vhost1")
[...]
#11 main
Fix that by setting non-blocking mode for client sockets for connection.
After doing a driver callout to fill in the driver specific
parts of struct rte_eth_stats, rte_eth_stats_get() overwrites
the rx_nombuf member regardless of whether the driver itself
has assigned a value. Any driver-assigned value should take
priority.
Fixes: af75078fece3 ("first public release") Signed-off-by: Remy Horton <remy.horton@intel.com>
Thomas Monjalon [Tue, 19 Jul 2016 17:15:34 +0000 (19:15 +0200)]
app/test: increase memory allocated for greedy autotests
The autotest lists, requirements and distribution needs a big rework
to reduce the amount of cores and memory required.
The root cause is not addressed yet.
This patch just increase some memory allocation for some greedy tests
which often fail because of memory fragmentation:
LPM6 and reentrancy tests in groups 3 and 6 respectively.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Tested-by: Olivier Matz <olivier.matz@6wind.com>
Jerin Jacob [Mon, 18 Jul 2016 05:55:54 +0000 (11:25 +0530)]
app/test: fix ring size
rte_ring_create expects the size of the ring to
be a power of 2. REFCNT_RING_SIZE value is not
power of 2 in-case if RTE_MAX_LCORE == 96.
Fix it by aligning the size to next power of 2 value.
Fixes: af75078f ("first public release") Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
ring: guarantee dequeue ordering before tail update
Consumer queue dequeuing must be guaranteed to be done fully before
the tail is updated. This is not guaranteed with a read barrier,
changed to a write barrier just before tail update which in practice
guarantees correct order of reads and writes.
Signed-off-by: Juhamatti Kuusisaari <juhamatti.kuusisaari@coriant.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Zoltan Kiss [Wed, 20 Jul 2016 17:16:38 +0000 (18:16 +0100)]
mempool: adjust name size in related data types
A recent patch brought up an issue about the size of the 'name' fields:
85cf0079 mem: avoid memzone/mempool/ring name truncation
These relations should be observed:
1. Each ring creates a memzone with a prefixed name:
RTE_RING_NAMESIZE <= RTE_MEMZONE_NAMESIZE - strlen(RTE_RING_MZ_PREFIX)
2. There are some mempool handlers which create a ring with a prefixed
name:
RTE_MEMPOOL_NAMESIZE <= RTE_RING_NAMESIZE - strlen(RTE_MEMPOOL_MZ_PREFIX)
3. A mempool can create up to RTE_MAX_MEMZONE pre and postfixed memzones:
sprintf(postfix, "_%d", RTE_MAX_MEMZONE)
RTE_MEMPOOL_NAMESIZE <= RTE_MEMZONE_NAMESIZE -
strlen(RTE_MEMPOOL_MZ_PREFIX) - strlen(postfix)
Setting all of them to 32 hides this restriction from the application.
This patch decreases the mempool and ring string size to accommodate for
these prefixes, but it doesn't apply the 3rd constraint. Applications
relying on these constants need to be recompiled, otherwise they'll run
into ENAMETOOLONG issues.
The size of the arrays are kept 32 for ABI compatibility, it can be
decreased next time the ABI changes.
Signed-off-by: Zoltan Kiss <zoltan.kiss@schaman.hu> Acked-by: Olivier Matz <olivier.matz@6wind.com>
Zoltan Kiss [Wed, 20 Jul 2016 17:16:39 +0000 (18:16 +0100)]
mem: allow full length name
(strlen(name) == sizeof(mz->name) - 1) is a valid case, change the
condition to reflect that.
Move it earlier to avoid lookup with invalid name.
Change errno to ENAMETOOLONG.
Fixes: 85cf0079 ("mem: avoid memzone/mempool/ring name truncation") Signed-off-by: Zoltan Kiss <zoltan.kiss@schaman.hu> Acked-by: Olivier Matz <olivier.matz@6wind.com>
On weak memory order architecture like POWER, rte_smp_wmb/rte_smp_rmb
need to use CPU instructions, not compiler barrier. This patch fixes
this. Also, to improve performance on PPC64, use light weight sync
instruction instead of sync instruction.
Thomas Monjalon [Mon, 18 Jul 2016 09:33:52 +0000 (11:33 +0200)]
mk: fix static link with glibc < 2.17
There is an error when linking static EAL library with an application:
eal_alarm.c:(.text+0xd7): undefined reference to `clock_gettime'
eal_alarm.c:(.text+0x20f): undefined reference to `clock_gettime'
eal_timer.c:(.text+0x108): undefined reference to `clock_gettime'
eal_timer.c:(.text+0x146): undefined reference to `clock_gettime'
The function clock_gettime() is in librt for old glibc.
Jeff Shaw [Wed, 13 Jul 2016 11:51:02 +0000 (04:51 -0700)]
doc: fix mailing list address typo
The correct mailing list dev@dpdk.org, not dev@dpkg.org.
Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com> Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: John McNamara <john.mcnamara@intel.com>
app/pdump: add command line options for socket paths
Since users of the pdump library and tool can chose to have their own
server and client paths, it is must for the pdump tool to use the same
server socket path that was used by primary application while
initializing packet capture framework by rte_pdump_init() or
rte_pdump_set_socket_dir() APIs.
To pass the socket path info to pdump tool a new optional command
line options "server-socket-path" and "client-socket-path" are added.
"client-socket-path" is also added, if the users want to have client
sockets in their own defined paths.
Updated pdump tool guide with the new changes.
Fixes: caa7028276b8 ("app/pdump: add tool for packet capturing") Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
The changes include
1)If mkdir fails for user passed socket paths log error and return.
2)At some places return value was set to errno and that non-negative number
was returned, but the intention was to return negative value.
So now rte_errno was set to errno and returning the actual negative value
that the APIs has returned.
Fixes: 278f945402c5 ("pdump: add new library for packet capture") Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
When sending Inbound non IPSec traffic that matches an Inbound Security
Policy set to Protect, the code will check that the SPI of the packet
and the associated Security Association match.
That check should only be done for IPSec packets and results in SEGFAULT
when done on non IPSec packets.
Fixes: 906257e965b7 ("examples/ipsec-secgw: support IPv6") Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Piotr Azarewicz [Wed, 25 May 2016 13:34:52 +0000 (15:34 +0200)]
examples/l2fwd-crypto: improve random key generator
This patch improve generate_random_key() function by replacing rand()
function with reading from /dev/urandom.
CID 120136 : Calling risky function (DC.WEAK_CRYPTO)
dont_call: rand should not be used for security related applications, as
linear congruential algorithms are too easy to break
Coverity issue: 120136
Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com>
examples/distributor: fix Rx thread logic for zero packet
Zero packets can be returned by rte_eth_rx_burst() and
rte_distributor_returned_pkts() inside lcore_rx(), so
for zero packet scenario instead of proceeding to
next operations we should continue to the next iteration of the
loop to avoid unnecessary processing overhead which is causing
rx packets to be dropped and hence distributor failing to forward the
packets.
Fixes: 07db4a97 ("examples/distributor: new sample app") Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Nelson Escobar [Thu, 14 Jul 2016 01:09:17 +0000 (18:09 -0700)]
net/enic: fix crash on error interrupt
When enic's interrupt handler is called indicating an error, it scans
through the receive queues (RQs) on the adapter looking for errors.
But since the inclusion of rx scatter, some of the RQs may not be in
use, and you shouldn't check them for errors.
Fixes: 856d7ba7ed22 ("net/enic: support scattered Rx") Signed-off-by: Nelson Escobar <neescoba@cisco.com> Reviewed-by: John Daley <johndale@cisco.com>
Nelson Escobar [Wed, 13 Jul 2016 16:52:34 +0000 (09:52 -0700)]
net/enic: fix calculation of truncated packets
The calculation of truncated packets didn't take into account packet
errors due to the adapter not having buffers, causing both the
ipackets, and imissed counts to be wrong if such errors occurred. In
order to properly calculate the number of packets truncated, we need
to subtract the count of errors due to no buffers.
Fixes: c44d9f01adf3 ("net/enic: count truncated packets") Signed-off-by: Nelson Escobar <neescoba@cisco.com>
John Daley [Tue, 12 Jul 2016 19:24:47 +0000 (12:24 -0700)]
net/enic: fix queue stop and start
The exported device start and stop functions where not setting the queue
states to RTE_ETH_QUEUE_STATE_STARTED and RTE_ETH_QUEUE_STATE_STOPPED.
After starting the device, the RTE queue stop function would not call
the enic queue stop function since queue was already marked as stopped.
Put queue state updates in the lower level queue start/stop functions
which are called by both device and queue start/stop functions.
Fixes: fefed3d1e62c ("enic: new driver") Reviewed-by: Nelson Escobar <neescoba@cisco.com> Signed-off-by: John Daley <johndale@cisco.com>
John Daley [Sun, 10 Jul 2016 21:15:30 +0000 (14:15 -0700)]
net/enic: fix crash when changing number of queues
The check that all Tx and Rx queues were set up was not
adequate when reconfiguring with a different number of
queues. Only the number of completion queues (CQs) was
being used to make the determination, but the CQ array
is shared between the underlying Rx and Tx queues.
Check that the internal Rx, Tx and CQs are all set up
before completing port configuration.
Fixes: fefed3d1e62c ("enic: new driver") Signed-off-by: John Daley <johndale@cisco.com> Reviewed-by: Nelson Escobar <neescoba@cisco.com>
John Daley [Mon, 11 Jul 2016 19:45:01 +0000 (12:45 -0700)]
net/enic: decrement Tx mbuf reference count before recycling
In the burst Tx cleanup function, the reference count in mbufs
returned to the pool should to be decremented before they are
returned. Decrementing is not done by rte_mempool_put_bulk()
so it must be done separately using __rte_pktmbuf_prefree_seg().
Also when returning unsent buffers when the device is stopped
use rte_mbuf_free_seg() instead of rte_mempool_put() so that
reference counts are properly decremented.
Fixes: 36935afbc53c ("net/enic: refactor Tx mbuf recycling") Reviewed-by: Nelson Escobar <neescoba@cisco.com> Signed-off-by: John Daley <johndale@cisco.com>
John Daley [Fri, 15 Jul 2016 19:34:53 +0000 (12:34 -0700)]
net/enic: remove internal driver version
The enic PMD code has diverged from code that was once
shared with the enic kernel mode driver for performance
reasons. It is confusing and misleading to print the
internal version number. Remove it.
Fixes: fefed3d1e62c ("enic: new driver") Signed-off-by: John Daley <johndale@cisco.com>
Xiao Wang [Fri, 15 Jul 2016 10:38:40 +0000 (18:38 +0800)]
net/fm10k: fix FTAG mode with multiple queues
In multi-queue + FTAG use case, we need to turn tx_ftag_en on for all
the Tx queues.
Fixes: 7958b1310d5e ("fm10k: enable FTAG based forwarding") Reported-by: Ricky Li <ricky.li@intel.com> Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
This reverts commit 4761f57d58c6f52543738dbe299f846d62d75895.
Introducing VLAN table by adding VLAN adminq command will cause NIC's
throughput drop obviously. It's a hardware issue.
With this revert, VLAN filtering can only work when promiscuous mode
is disabled.
Reverts: 4761f57d58c6 ("net/i40e: fix VLAN filtering in promiscuous mode")
Maxime Coquelin [Tue, 12 Jul 2016 09:30:25 +0000 (11:30 +0200)]
net/virtio-user: fix build with gcc 6
The error is reported using test build script:
$ scripts/test-build.sh x86_64-native-linuxapp-gcc
...
drivers/net/virtio/virtio_user_ethdev.c:345:2: error:
this ‘if’ clause does not guard... [-Werror=misleading-indentation]
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_PATH) == 1)
^~
Fixes: 404bd6bfe360 ("net/virtio-user: fix return value not checked") Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Protect against DPDK crash when allocation of listen fd >= 1023.
For events on fd:s >1023, the current implementation will trigger
an abort due to access outside of allocated bit mask.
Corrections would include:
* Match fdset_add() signature in fd_man.c to fd_man.h
* Handling of return codes from fdset_add()
* Addition of check of fd number in fdset_add_fd()
The rationale behind the suggested code change is that,
fdset_event_dispatch() could attempt access outside of the FD_SET
bitmask if there is an event on a file descriptor that in turn
looks up a virtio file descriptor with a value > 1023.
Such an attempt will lead to an abort() and a restart of any
vswitch using DPDK.
A discussion topic exist in the ovs-discuss mailing list that can
provide a little more background:
http://openvswitch.org/pipermail/discuss/2016-February/020243.html
Fixes: 8f972312 ("vhost: support vhost-user") Signed-off-by: Patrik Andersson <patrik.r.andersson@ericsson.com> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
In current implementation vhost will crash with segmentation fault
if malicious or buggy virtio application breaks addresses of descriptors.
Before commit 0823c1cb0a73 ("vhost: workaround stale vring base")
this crash was reproducible even with normal DPDK application that tries
to change number of virtqueues dynamically inside VM.
Fix that by checking addresses of descriptors before using.
Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
vhost: fix used descriptors number of mergeable enqueue
Return value on error changed from '-1' to '0' because it returns
unsigned value and it means number of used descriptors.
Also fixed updating of 'last_used_idx' by using actual number of
used descriptors.
Fixes: 623bc47054d0 ("vhost: do sanity check for ring descriptor length") Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Yong Wang [Fri, 15 Jul 2016 00:15:10 +0000 (17:15 -0700)]
vfio: fix PCI resource mapping
The offset of the 2nd mmap() when mapping the region after msix_bar
needs to take region address into consideration as mmap() takes
address that is resource-relative instead of bar-relative. This is
exposed when binding vmxnet3 to vfio-pci.
Fixes: 90a1633b2347 ("eal/linux: allow to map BARs with MSI-X tables") Signed-off-by: Yong Wang <yongwang@vmware.com> Signed-off-by: Ronghua Zhang <rzhang@vmware.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Thomas Monjalon [Wed, 13 Jul 2016 16:41:12 +0000 (18:41 +0200)]
app/test: filter out unavailable tests
Some tests can fail to run because they are not compiled.
It has been more visible recently when the PCI test became disabled
in the default configuration because of dependency on libarchive:
PCI autotest: Fail [Not found]
The autotest script catch them and do not count them as an error anymore:
PCI autotest: Skipped [Not Available]
The commands dump_ring and dump_mempool are removed from the autotest list
because they are some internal commands but not some registered tests.
Thus they cannot be parsed as available test commands.
Suggested-by: David Marchand <david.marchand@6wind.com> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Wed, 13 Jul 2016 12:38:13 +0000 (14:38 +0200)]
app/test: rework command registration
The tests are registered with their command name by adding a structure
to a list. The structure of each test was declared in each test file
and passed to the register macro.
This rework generate the structure inside the register macro.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Reviewed-by: Jan Viktorin <viktorin@rehivetech.com>
Thomas Monjalon [Tue, 12 Jul 2016 10:11:06 +0000 (12:11 +0200)]
mk: fix default rule of test subdirectory
When using "make -C app/test" (with RTE_SDK/RTE_TARGET adjusted)
without specifying the rule (all), the build is not done.
Indeed the default rule is not "all" anymore since there are some
rules added for external resources link.
It is fixed by adding a reference to "all" at the top of the file
which makes it the default rule.
Note that make app/test_sub (without environment variable) is preffered.
Fixes: ab64f5df8004 ("app/test: support resources externally linked") Reported-by: Reshma Pattan <reshma.pattan@intel.com> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Reshma Pattan <reshma.pattan@intel.com>
Thomas Monjalon [Tue, 12 Jul 2016 13:00:13 +0000 (15:00 +0200)]
mk: fix dependency on toolchain libraries
The -l options specifying libraries to link with are in LDLIBS.
But it can happen to have some libraries in other variables.
In case of a low level dependency specified in some environments
via EXTRA_LDFLAGS, there can be an unresolved issue due to a
wrong linking order. Indeed the libraries must be specified from
the higher level (dependency consumers) to the lower level (dependencies).
It is fixed by moving LDLIBS before LDFLAGS variables in the link
command line.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Tested-by: Raslan Darawsheh <rasland@mellanox.com>
Thomas Monjalon [Mon, 11 Jul 2016 21:26:01 +0000 (23:26 +0200)]
scripts: fix libnuma dependency in build test
The option CONFIG_RTE_LIBRTE_VHOST_NUMA depends on availability of
libnuma in the system.
The configuration option DPDK_DEP_NUMA can be set if available for
the DPDK_TARGET being built.
Fixes: cd31ca579c0d ("scripts: add build tests") Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Fri, 15 Jul 2016 13:49:57 +0000 (15:49 +0200)]
scripts: print failed directory when testing build
The script test-build.sh can be used to test building several
targets with different configurations. The directory name reflects
the target and the customized configuration.
When there is a failure, it is convenient to print this build
directory to quickly know which case is failing without scrolling
the build log history.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
When using Xen Dom0, it looks that /proc/self/pagemap returns 0.
This breaks the creation of mbufs pool.
We can workaround this in rte_mem_virt2phy() by browsing the dpdk memory
segments. This only works for dpdk memory, but it's enough to fix the
mempool creation.
Fixes: c042ba20674a ("mempool: rework support of Xen dom0") Fixes: 3097de6e6bfb ("mem: get physical address of any pointer") Reported-by: Huilong Xu <huilongx.xu@intel.com> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This commit adds Python script for generating diagram of the application
configuration file. This script requires graphviz package to be installed
on the machine. The input config file is translated to an output file in
DOT syntax, which is then used to create the image file using graphviz.
Marvin Liu [Mon, 4 Jul 2016 08:57:59 +0000 (16:57 +0800)]
examples/vm_power_manager: remove dependency on internal header
Macro CHANNEL_CMDS_MAX_CPUS stand for the maximum number of cores
controlled by virtual channels. This macro only be used in the example,
so remove it from library to example header file.
Coverity reported lots of out-of-bounds in function
vxlan_link, these issues should happen when index
port_id evaluates to 2, cause size of arrays is
2 in structure.
Fix this issue by modifying judgement condition, make
sure port_id is less than 2.
crypto_statistics array was not big enough for storing
all the possible crypto device statistics, as its size was
RTE_MAX_ETHPORTS, but should be RTE_CRYPTO_MAX_DEVS, leading
this to a potential out-of-bounds issue.
Pablo de Lara [Wed, 6 Jul 2016 09:38:50 +0000 (10:38 +0100)]
examples/l2fwd-crypto: flush buffers
Crypto operations are enqueued in the crypto devices
when the crypto device buffers are full (MAX_PKT_BURST),
in order to be more efficient.
The problem is that operations might be stuck in those buffers,
if they never get full, and therefore, those operations
will never be performed.
Therefore, it is necessary to have a buffer flush mechanism,
similar to the one used for flush the TX buffers, so eventually,
all packets received are ciphered and sent out.
Fixes: 387259bd6c67 ("examples/l2fwd-crypto: add sample application") Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Sun, 10 Jul 2016 16:16:12 +0000 (17:16 +0100)]
app/test: fix hexdump length for crypto
Plaintexts and ciphertexts are dumped when debugging is enabled,
using TEST_HEXDUMP. For Snow3G and KASUMI, their lengths are in bits,
but TEST_HEXDUMP uses bytes, so lenghts are passed in bytes now.
Fixes: 47df73a1a62f ("app/test: use hexdump if debug log is enabled") Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Signed-off-by: Deepak Kumar Jain <deepak.k.jain@intel.com>
Testpmd can stuck inside do while loop of the flush_fwd_rx_queues()
function. As non-zero packets are returned always by rte_eth_rx_burst()
function when compiled with no optimizations and if input line rate is
high. "do while" loop must exit at one stage to proceed further to
enable packet forwarding and forward the packets. So timer is set to
exit the do while loop after 1 second.
Fixes: af75078f ("first public release") Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Wenzhuo Lu [Mon, 11 Jul 2016 08:29:18 +0000 (16:29 +0800)]
app/testpmd: remove ixgbe check for bypass
In testpmd code, device id is used directly to check if bypass
is supported. But APP should not know the details of HW, the NIC
specific info should not be exposed here.
As every bypass API does know if it's supported, no need to check
that at first. So, this patch removes the *bypass_is_supported*.
Suggested-by: Jingjing Wu <jingjing.wu@intel.com> Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
The older versions of rte_eth_bond_8023ad_conf_get and
rte_eth_bond_8023ad_setup were available in the old way since 2.0 - at
least according to the map file.
But versioning in the code was set to 16.04.
That breaks compatibility checks for 2.0 on that library.
For example with the dpdk abi checker:
http://people.canonical.com/~paelzer/compat_report.html
To fix, version the old symbols on the 2.0 version as they were
initially added to the map file.
See http://people.canonical.com/~paelzer/compat_report.html
Fixes: dc40f17a ("net/bonding: allow external state machine in mode 4") Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Due to the hierarchy and the demand to keep the base config showing all
options, some config keys end up multiple times in the .config file.
Due to the way the actual config is sourced only the last entry is
important. That can confuse people changing values in .config which
are then ignored.
A suggested solution was to filter for duplicates at the end of the
actual config step which is implemented here.
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Jan Viktorin [Mon, 4 Jul 2016 15:16:49 +0000 (17:16 +0200)]
vfio: generalize process synchronization
The module eal_pci_vfio_mp_sync is quite generic so it shouldn't contain the
"pci" string in its name. The internal functions don't need the pci_* prefix.
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Jan Viktorin [Mon, 4 Jul 2016 15:16:46 +0000 (17:16 +0200)]
vfio: move global config out of PCI files
The vfio_cfg is a module-global variable and so together with this
variable, it is necessary to move functions:
* pci_vfio_get_group_fd
- renamed to vfio_get_group_fd
- pci_* version removed (no other call in EAL)
* pci_vfio_setup_device
- renamed as vfio_setup_device
* pci_vfio_enable
- renamed as vfio_enable
- generalized to check for a specific vfio driver presence
- pci_* specialization preserved as a wrapper
* pci_vfio_is_enabled
- renamed as vfio_is_enabled
- generalized to check for a specific vfio driver presence
to preserve the semantics of VFIO + PCI
- pci_* specialization preserved as a wrapper
* clear_current_group
- private function, just moved
To stop GCC complaining about "defined but not used", the private
function pci_vfio_get_group_no has been removed entirely.
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Jan Viktorin [Mon, 4 Jul 2016 15:16:45 +0000 (17:16 +0200)]
vfio: extract setup logic out of resource mapping
The setup logic access the global vfio_cfg variable that will be moved in the
following commits. We need to separate all accesses to this variable to a
general code.
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Jan Viktorin [Mon, 4 Jul 2016 15:16:40 +0000 (17:16 +0200)]
vfio: generalize non PCI-specific functions
The pci_vfio_set_iommu_type is not PCI-specific and it is a private function
of the eal_pci_vfio.c. We just rename the function and make it available even
for non-PCI devices.
The pci_vfio_has_supported_extensions is not PCI-specific and it is a private
function of the eal_pci_vfio.c. We just rename the function and make it
available even for non-PCI devices.
The pci_vfio_get_container_fd is not PCI-specific. Move the implementation to
the eal_vfio.c as vfio_get_container_fd. No other code seems to call this
function.
Generalize the pci_vfio_get_group_no to not be PCI-specific. Move the general
implementation to the eal_vfio.c as vfio_get_group_no and leave the original
pci_vfio_get_group_no being a wrapper around this to preserve compilation
issues. The pci_vfio_get_group_no function will be removed later.
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>