Keith Wiles [Sun, 29 Jan 2017 02:12:05 +0000 (20:12 -0600)]
net/tap: fix invalid queue file descriptor
Rx and Tx queues share the common tap file descriptor, but save this
value separately.
Setting up Rx/Tx queue sets up both queues, release_queue close the
tap file but update file descriptor only for that queue.
This makes other queue's file descriptor invalid.
As a workaround, prevent release_queue callback to be called by default.
This is done by separating Rx/Tx setup functions, so that each only
setup its own queue, this prevents rte_eth_rx/tx_queue_setup() calling
release_queue before setup_queue.
Nélio Laranjeiro [Fri, 27 Jan 2017 15:35:19 +0000 (16:35 +0100)]
net/mlx5: fix flow pattern VLAN validation
TCI field is read from the wrong place due to an invalid cast. Moreover
there is no need to limit matching to VID since PCP and DEI bits can be
matched as well.
Ferruh Yigit [Fri, 27 Jan 2017 12:27:19 +0000 (12:27 +0000)]
net/i40e: fix API comments for doxygen
Fixes: a541407fe4bc ("net/i40e: set VF MAC anti-spoofing from PF") Fixes: 4cbc41efcbb2 ("net/i40e: set VF VLAN anti-spoofing from PF") Fixes: c0ec14757c5f ("net/i40e: set VF unicast promiscuous mode from PF") Fixes: ae57070ca8b7 ("net/i40e: set VF multicast promiscuous mode from PF") Fixes: 83bb95e3fefc ("net/i40e: set VF VLAN insertion from PF") Fixes: 61fff9b4c68b ("net/i40e: set VF broadcast mode from PF") Fixes: c33abbc1440e ("net/i40e: set VF VLAN tag from PF") Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
John Daley [Thu, 26 Jan 2017 20:12:12 +0000 (12:12 -0800)]
net/enic: fix MAC address add and remove
The mac_addr_add callback function was simply replacing the primary MAC
address instead of adding new ones and the mac_addr_remove callback would
only remove the primary MAC form the adapter. Fix the functions to add or
remove new address. Allow up to 64 MAC addresses per port.
Fixes: fefed3d1e62c ("enic: new driver") Signed-off-by: John Daley <johndale@cisco.com> Reviewed-by: Nelson Escobar <neescoba@cisco.com>
Yi Zhang [Wed, 14 Dec 2016 18:50:19 +0000 (02:50 +0800)]
net/ixgbevf: fix max packet length
Current ixgbevf driver get max_rx_pktlen = 15872, but in fact PF
supports 15872-byte jumbo frame and VF only supports 9728-byte jumbo
frame. If VF is running DPDK driver and set frame_size > 9728 ,PF
running kernel ixgbe driver will report an error and set VF failed.
This patch fixs DPDK ixgbevf driver to get correct jumbo frame size
of VF.
More datasheet references from Wei Dai:
In 82599 datasheet, there is an annotation in the chapter 1.3 Features
Summary (page 29)
The 82599 supports full-size 15.5 KB (15872-byte) jumbo packets while
in a basic mode of operation. When DCB mode is enabled,
or security engines enabled or virtualization is enabled, the 82599
supports 9.5 KB (9728-byte) jumbo packets.
In x540 datasheet, there is also an annotation in the chapter 1.3
Features Summary (page 13)
The X540 and 82599 support full-size 15.5 KB jumbo packets while in a
basic mode of operation. When DCB mode is enabled,
or security engines enabled, or virtualization is enabled, or OS2BMC is
enabled, then the X540 supports 9.5 KB jumbo packets.
Packets to/from MC longer than 2KB are filtered out.
In x550 datasheet, there is still also an annotation in the chapter 1.4
Feature Summary (page 23)
All the products support full-size 15.5 KB jumbo packets while in a
basic mode of operation. When DCB mode is enabled, or security
engines enabled, or virtualization is enabled, or OS2BMC is enabled,
then only 9.5 KB jumbo packets are supported. Packets to/
from the MC longer than 2 KB are filtered out.
Fixes: 2144f6630fca ("ixgbe: add redirection table size in device info") Cc: stable@dpdk.org Signed-off-by: Yi Zhang <zhang.yi75@zte.com.cn> Acked-by: Wei Dai <wei.dai@intel.com>
Emmanuel Roullit [Tue, 24 Jan 2017 21:15:55 +0000 (22:15 +0100)]
net/bonding: remove useless assignment
Found with clang static analysis:
drivers/net/bonding/rte_eth_bond_pmd.c:903:3:
warning: Value stored to 'num_not_send' is never read
num_not_send += slave_bufs_pkts[RTE_MAX_ETHPORTS] - num_send;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Emmanuel Roullit [Tue, 24 Jan 2017 20:48:57 +0000 (21:48 +0100)]
net/cxgbe/base: initialize variable before reading EEPROM
data value could have been garbage if VPD access timed out for VPD read
request could not been issued.
Found with clang static analysis:
drivers/net/cxgbe/base/t4_hw.c:1577:22:
warning: The left operand of '&' is a garbage value
} while ((stats_reg & 0x1) && --max_poll);
~~~~~~~~~ ^
Jakub Palider [Tue, 24 Jan 2017 14:22:53 +0000 (15:22 +0100)]
net/ena: prepare TSO offload calculation
While ENA can handle checksum calculations in almost all cases,
it cannot do so when DF bit in IPv4 header is not set,
that is DF=0, and TSO is requested. For that situation pseudo
header must be prepared manually.
Wei Dai [Tue, 24 Jan 2017 08:14:20 +0000 (16:14 +0800)]
net/ixgbe: return success when SFP is not present
Ignore the error=IXGBE_ERR_SFP_NOT_PRESENT when SFP is not present.
If it is not ignored, testpmd will fail during the NIC initialization
process.
Ixgbe kernel driver ignores this error and works well. So DPDK
does same thing.
Signed-off-by: Wei Dai <wei.dai@intel.com> Signed-off-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Yuan Peng <yuan.peng@intel.com> Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Rasesh Mody [Tue, 24 Jan 2017 05:38:33 +0000 (21:38 -0800)]
net/bnx2x: fix Rx mode configuration
Check if promisc mode was set when setting allmulti mode and vice-versa.
Introduced BNX2X_RX_MODE_ALLMULTI_PROMISC for the same. If check is
absent the filter configuration gets over written.
Fixes: 540a211084a7 ("bnx2x: driver core") Fixes: 5dbc53d7e5a2 ("net/bnx2x: restrict Rx mask flags sent to the PF") Cc: stable@dpdk.org Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
Jingjing Wu [Mon, 23 Jan 2017 09:42:44 +0000 (17:42 +0800)]
net/i40e: fix validation when deleting MAC address
When VF sends request to remove MAC address, PF host will check
if it is a non-zero or unicast address. When VF remove a multicast
address, it will report error.
This patch fixes this issue.
Ivan Malov [Mon, 23 Jan 2017 11:06:15 +0000 (11:06 +0000)]
net/sfc: fix TSO limits imposed to the number of Tx queues
The number of Tx queues requested by the user must not be overridden;
instead, the limits imposed by TSO must be applied to the advertised
maximum
Fixes: fec33d5bb3eb ("net/sfc: support firmware-assisted TSO") Cc: stable@dpdk.org Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Andrew Rybchenko [Fri, 20 Jan 2017 15:22:56 +0000 (15:22 +0000)]
net/sfc: enable TSO by default
Remove RTE_LIBRTE_SFC_EFX_TSO config option since it is not
required any more:
- unreasonable limit on number of Tx queues when TSO is not
actually required should be solved using per-device parameter
- performance difference with and without TSO compiled in is small
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Andrew Rybchenko [Thu, 19 Jan 2017 11:12:20 +0000 (11:12 +0000)]
net/sfc: do not panic if alarms are not supported
Alarms are not supported on the FreeBSD.
Application must poll link status periodically itself using
rte_eth_link_get_nowait() to avoid management event queue overflow.
Fixes: 2de39f4e1310 ("net/sfc: periodic management EVQ polling using alarm") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Yongseok Koh [Wed, 18 Jan 2017 00:51:55 +0000 (16:51 -0800)]
net/mlx5: fix queue wrap-around of multi-packet send
When the WQ is wrapped around, it wrongly checks the condition when
resetting the pointer. It should be compared against the end of the queue,
not the beginning of the queue. And this isn't even needed when the length
of the copying data crosses the boundary.
Fixes: fdcb0f53053b ("net/mlx5: use work queue buffer as a raw buffer") Cc: stable@dpdk.org Signed-off-by: Yongseok Koh <yskoh@mellanox.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
The size of Rx RSS indirection table was limited by 256, but it is not
required anymore for all Mellanox NICs. However, the librte_ether still
limits the size by 512.
Yongseok Koh [Tue, 17 Jan 2017 02:09:40 +0000 (18:09 -0800)]
net/mlx5: add prefetching Rx completion queue
On receiving a compressed session of Rx completion, prefetch every entries
to be invalidated. Also, invalidate consumed completions per every 8
mini-completions, not to wait until the last entry is consumed. This helps
to reduce jitter in rx_burst.
Andrew Rybchenko [Thu, 12 Jan 2017 09:03:23 +0000 (09:03 +0000)]
net/sfc: fix flow control settings on port start
efx_phy_adv_cap_set() sets all advertised phy capabilities including
pause capabilities which are also configured using efx_mac_fcntl_set().
If we set speed and autonegotiation capabilities only, we should
preserve already configured pause capabilities.
Fixes: d23f3a89ab54 ("net/sfc: support link speed and duplex settings") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
Andrew Rybchenko [Thu, 12 Jan 2017 09:03:22 +0000 (09:03 +0000)]
net/sfc: fix link status when port is not started
Fixes: 886f8d8a05bf ("net/sfc: retrieve link info") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
Andrew Rybchenko [Thu, 12 Jan 2017 09:03:21 +0000 (09:03 +0000)]
net/sfc: synchronize link status with HW on start
Fixes: 886f8d8a05bf ("net/sfc: retrieve link info") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
Andrew Rybchenko [Thu, 12 Jan 2017 09:03:20 +0000 (09:03 +0000)]
net/sfc: avoid usage of possibly uninitialized link mode
In fact efx_port_poll() always initializes it, but it isn't
explicitly documented feature of the API. Moreover, the API
annocation suggests that return code should be checked.
Fixes: 886f8d8a05bf ("net/sfc: retrieve link info") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
Yuanhan Liu [Wed, 11 Jan 2017 04:27:12 +0000 (12:27 +0800)]
net/virtio: optimize header reset on any layout
When any layout is used, the header is stored in the head room of mbuf.
mbuf is allocated and filled by user, means there is no gurateen the
header is all zero for non TSO case. Therefore, we have to do the reset
by ourself:
memest(hdr, 0, head_size);
The memset has two impacts on performance:
- memset could not be inlined, which is a bit costly.
- more importantly, it touches the mbuf, which could introduce severe
cache issues as described by former patch.
Similiary, we could do the same trick: reset just when necessary, when
the corresponding field is already 0, which is likely true for a simple
l2 forward case. It could boost the performance up to 20+% in micro
benchmarking.
Cc: stable@dpdk.org Cc: Maxime Coquelin <maxime.coquelin@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Yuanhan Liu [Wed, 11 Jan 2017 04:27:11 +0000 (12:27 +0800)]
net/virtio: fix performance regression due to TSO
TSO is now enabled, but it's not actually being used by default in a
simple L2 forward mode. In such case, we have to zero the virtio net
headers, to inform the vhost backend that no offload is being used:
Such writes could be very costly; it introduces severe cache issues:
The above operations introduce cache write for each packet, which
stalls the read operation from the vhost backend.
The fact that virtio net header is initiated to zero in PMD driver
init stage means that these costly writes are unnecessary and could
be avoided:
if (hdr->csum_start != 0)
hdr->csum_start = 0;
And that's what the macro ASSIGN_UNLESS_EQUAL does. With this, the
performance drop introduced by TSO enabling is recovered: it could
be up to 20% in micro benchmarking.
Fixes: 58169a9c8153 ("net/virtio: support Tx checksum offload") Fixes: 696573046e9e ("net/virtio: support TSO") Cc: stable@dpdk.org Cc: Olivier Matz <olivier.matz@6wind.com> Cc: Maxime Coquelin <maxime.coquelin@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
Jianfeng Tan [Tue, 24 Jan 2017 08:37:38 +0000 (08:37 +0000)]
net/vhost: fix unix socket not removed as closing
The commit aed0b12930b3 ("net/vhost: fix socket file deleted on stop")
moves rte_vhost_driver_register and rte_vhost_driver_unregister from
dev_start() and dev_stop() into driver's probe() and remove().
Apps, like testpmd, using vhost pmd in server mode, usually calls
dev_stop() and dev_close() as quitting, instead of driver-specific
remove(). Then those unix socket files have no chance to get removed.
Semantically, device-specific things should be put into device-specific
APIs. Fix this issue by moving rte_vhost_driver_unregister, plus other
structure free into dev_close().
Fixes: aed0b12930b3 ("net/vhost: fix socket file deleted on stop") Cc: stable@dpdk.org Reported-by: Lei Yao <lei.a.yao@intel.com> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Emmanuel Roullit [Tue, 24 Jan 2017 20:31:29 +0000 (21:31 +0100)]
vhost: remove unneeded variable assignment
Found with clang static analysis:
lib/librte_vhost/vhost_user.c:996:3: warning:
Value stored to 'ret' is never read
ret = vhost_user_get_vring_base(dev, &msg.payload.state);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Emmanuel Roullit <emmanuel.roullit@gmail.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Emmanuel Roullit [Tue, 24 Jan 2017 20:36:03 +0000 (21:36 +0100)]
vhost: do not GSO when no header is present
Found with clang static analysis:
lib/librte_vhost/virtio_net.c:723:17: warning:
Access to field 'data_off' results in a dereference of a null pointer
(loaded from variable 'tcp_hdr')
m->l4_len = (tcp_hdr->data_off & 0xf0) >> 2;
^~~~~~~~~~~~~~~~~
Yuanhan Liu [Sun, 22 Jan 2017 08:47:00 +0000 (16:47 +0800)]
net/virtio: fix crash when number of virtio devices > 1
The vtpci_ops assignment needs the 'hw->port_id' as an input parameter.
That said, we should set 'hw->port_id' firstly, then do the vtpci_ops
assignment, while the code does reversely. That would result to a crash
when more than one virtio devices are used, because we keep assigning
proper vtpci_ops to virtio_hw_internal[0]->vtpci_ops, leaving the pointer
for other ports being NULL.
Reverse the order fixes this issue.
Fixes: 9470427c88e1 ("net/virtio: do not store PCI device pointer at shared memory") Cc: stable@dpdk.org Reported-by: Lei Yao <lei.a.yao@intel.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Yuanhan Liu [Sun, 22 Jan 2017 08:46:59 +0000 (16:46 +0800)]
vhost: fix long stall of negotiation
Setting up the mapping from GPA (guest physical address) to HPA (guest
physical address) could be very time consuming when the guest memory is
backened with small pages (4K). The bigger the guest memory, the longer
it takes. This could lead a very long vhost-user negotiation.
Since the mapping is only needed in zero copy mode so far, we could
avoid such time consuming settup when zero copy is turned off (which is
the default case).
It's actually a workaround, a right fix might be to start a new thread,
and hide the big latency there.
Fixes: e246896178e6 ("vhost: get guest/host physical address mappings") Cc: stable@dpdk.org Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Yuanhan Liu [Sun, 22 Jan 2017 08:46:58 +0000 (16:46 +0800)]
vhost: fix dead loop in enqueue path
If a malicious guest forges a dead loop desc chain (let desc->next point
to itself) and desc->len is zero, this could lead to a dead loop in
copy_mbuf_to_desc(following is a simplified code to show this issue
clearly):
while (mbuf_is_not_totally_consumed) {
if (desc_avail == 0) {
desc = &descs[desc->next];
desc_avail = desc->len;
}
COPY(desc, mbuf, desc_avail);
}
I have actually fixed a same issue before: commit a436f53ebfeb ("vhost:
avoid dead loop chain"); it fixes the dequeue path though, leaving the
enqueue path still vulnerable.
The fix is the same. Add a var nr_desc to avoid the dead loop.
Fixes: f1a519ad981c ("vhost: fix enqueue/dequeue to handle chained vring descriptors") Cc: stable@dpdk.org Reported-by: Xieming Katty <katty.xieming@huawei.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
app/crypto-perf: introduce performance test application
This patchset introduce new application which allows measuring
performance parameters of PMDs available in crypto tree. The goal of
this application is to replace existing performance tests in app/test.
Parameters available are: throughput (--ptest throughput) and latency
(--ptest latency). User can use multiply cores to run tests on but only
one type of crypto PMD can be measured during single application
execution. Cipher parameters, type of device, type of operation and
chain mode have to be specified in the command line as application
parameters. These parameters are checked using device capabilities
structure.
Couple of new library functions in librte_cryptodev are introduced for
application use.
To build the application a CONFIG_RTE_APP_CRYPTO_PERF flag has to be set
(it is set by default).
Example of usage: -c 0xc0 --vdev crypto_aesni_mb_pmd -w 0000:00:00.0 --
--ptest throughput --devtype crypto_aesni_mb --optype cipher-then-auth
--cipher-algo aes-cbc --cipher-op encrypt --cipher-key-sz 16 --auth-algo
sha1-hmac --auth-op generate --auth-key-sz 64 --auth-digest-sz 12
--total-ops 10000000 --burst-sz 32 --buffer-sz 64
Signed-off-by: Declan Doherty <declan.doherty@intel.com> Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz@intel.com> Signed-off-by: Marcin Kerlin <marcinx.kerlin@intel.com> Signed-off-by: Michal Kobylinski <michalx.kobylinski@intel.com>
This patch adds helper functions for new performance application which
provide identifiers and number of crypto device and
provide and check capabilities available for defined device and algorithm.
The performance application can be used to measure throughput and latency
of cryptography operation performed by crypto device.
Signed-off-by: Declan Doherty <declan.doherty@intel.com> Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> Signed-off-by: Marcin Kerlin <marcinx.kerlin@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Fan Zhang [Tue, 24 Jan 2017 16:24:00 +0000 (16:24 +0000)]
crypto/scheduler: add unit test
Same as other cryptodev PMDs, it is necessary to carry out the unit
test for scheduler PMD. Currently the test is designed to attach 2
AESNI-MB cryptodev PMDs as slaves, sets the scheduling mode as round-
robin, and runs almost all AESNI-MB test items (except for sessionless
tests). In the end, the slaves are detached.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Fan Zhang [Tue, 24 Jan 2017 16:23:58 +0000 (16:23 +0000)]
crypto/scheduler: enable compilation
Adds Makefile for scheduler cryptodev PMD, and updates existing
Makefiles. Different than other cryptodev PMDs, scheduler PMD
is required to be built as shared libraries.
Adds scheduler PMD enable and debug flags to config/common_base.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Fan Zhang [Tue, 24 Jan 2017 16:23:56 +0000 (16:23 +0000)]
crypto/scheduler: register as vdev driver
Adds crypto scheduler's PMD's probe and remove function and the device's
enqueue and dequeue burst functions. A cryptodev scheduler PMD is
then registered in the end.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Fan Zhang [Tue, 24 Jan 2017 16:23:55 +0000 (16:23 +0000)]
crypto/scheduler: add round-robin mode
Implements round-robin scheduling mode and register into cryptodev
scheduler ops structure. This mode enqueues a burst of operation
to one of its slaves, and iterates the next burst to the other
slave. Same procedure is done on dequeueing operations.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Signed-off-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Fan Zhang [Tue, 24 Jan 2017 16:23:53 +0000 (16:23 +0000)]
crypto/scheduler: add internal structures
Adds a number of internal structures for the cryptodev scheduler PMD. The
structures include the scheduler context, slave, queue pair context,
and session.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Signed-off-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Fan Zhang [Tue, 24 Jan 2017 16:23:52 +0000 (16:23 +0000)]
crypto/scheduler: add API
Adds APIs and function prototypes for the scheduler PMD to perform extra
operations other than standard cryptodev APIs.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Signed-off-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Declan Doherty [Mon, 23 Jan 2017 12:18:35 +0000 (12:18 +0000)]
cryptodev: uninline some functions
rte_cryptodev_pmd_get_dev, rte_cryptodev_pmd_get_named_dev,
rte_cryptodev_pmd_is_valid_dev were incorrectly marked as inline and
therefore not useable from crypto PMDs when built as shared
libraries as they accessed the global rte_cryptodev_globals device
structure.
Fixes: d11b0f30 ("cryptodev: introduce API and framework for crypto devices") Signed-off-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Ferruh Yigit [Mon, 30 Jan 2017 10:21:15 +0000 (10:21 +0000)]
mk: parallelize make config
make config dependency resolving was always running serial,
parallelize it for better performance.
$ time make T=x86_64-native-linuxapp-gcc config
real 0m12.633s
$ time make -j8 T=x86_64-native-linuxapp-gcc config
real 0m1.826s
When config creation done under a single make target, using a for loop,
make has no control on the action, and it needs to run as implemented in
the rule. But if for loop converted into multiple targets, make can
detect independent targets and run them parallel based on -j parameter.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Yoni Gilad [Tue, 10 Jan 2017 17:14:21 +0000 (17:14 +0000)]
usertools: fix active interface detection when binding
When adding crypto devices, the "Active" and "Ssh_if" attributes of
existing network devices were reset. This causes the following issues:
- Network interfaces aren't marked as "*Active*" in the --status output.
- Active network interfaces can be unbound without the --force option,
causing loss of network connection.
The reset was caused by the call to devices[d].update in
get_crypto_details.
This patch prevents the update on non-crypto devices.
Fixes: cb4a1d14bf3e ("tools: bind crypto devices") Cc: stable@dpdk.org Signed-off-by: Yoni Gilad <yonig@radcom.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Tue, 24 Jan 2017 09:06:14 +0000 (09:06 +0000)]
examples/server_node_efd: renamed from flow_distributor
To avoid confusion with distributor app, this commit
renames the flow-distributor sample app to server_node_efd,
since it shows how to use the EFD library and it is based
on a server/nodes model.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Wed, 25 Jan 2017 11:29:18 +0000 (11:29 +0000)]
app/test: fix build with overflowed EFD value
When RTE_EFD_VALUE_NUM_BITS is 32, there was a compilation issue
because of an overflow:
app/test/test_efd.c:157:55: error: overflow in expression;
result is 2147483647 with type 'int' [-Werror,-Winteger-overflow]
data[0] = mrand48() & ((1 << RTE_EFD_VALUE_NUM_BITS) - 1);
This commit fixes the issue by using a setting a different
macro VALUE_BITMASK with a conditional
Fixes: 0e925aef2779 ("app/test: add EFD functional and perf tests") Reported-by: Yong Liu <yong.liu@intel.com> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Qiming Yang [Mon, 16 Jan 2017 02:31:26 +0000 (10:31 +0800)]
app/testpmd: add offload capabilities query
Add two new commands "show port cap <port>" and "show
port cap all" to display what offload capabilities supported
in ports. It will not only display all the capabilities of
the port, but also the enabling condition for each capability
in the running time.
Signed-off-by: Qiming Yang <qiming.yang@intel.com> Acked-by: Jingjing Wu <jingjing.wu@intel.com> Acked-by: Beilei Xing <beilei.xing@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Olivier Matz [Fri, 27 Jan 2017 14:23:17 +0000 (15:23 +0100)]
efd: fix build by removing dependency to libmath
When we compile the dpdk with:
CONFIG_RTE_LIBRTE_EFD=y
CONFIG_RTE_LIBRTE_NFP_PMD=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
CONFIG_RTE_LIBRTE_SCHED=n
CONFIG_RTE_LIBRTE_METER=n
The linker gives the following error:
lib/librte_efd.a(rte_efd.o): In function `rte_efd_create':
lib/librte_efd/rte_efd.c:560: undefined reference to `log2'
collect2: error: ld returned 1 exit status
This is because the '-lm' is missing in mk/rte.app.mk.
An alternative, which is proposed by this patch, is to use the compiler
builtin rte_bsf32() to process log2 instead of the libmath log2() that
requires to include math.h and link with -lm.
Fixes: 56b6ef874f80 ("efd: new Elastic Flow Distributor library") Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Emmanuel Roullit [Tue, 24 Jan 2017 20:28:35 +0000 (21:28 +0100)]
ethdev: remove useless pointer initialization
Found with clang static analysis:
lib/librte_ether/rte_ethdev.c:2467:22:
warning: Value stored to 'dev' during its initialization is never read
struct rte_eth_dev *dev = &rte_eth_devices[port_id];
^~~ ~~~~~~~~~~~~~~~~~~~~~~~~~
Olivier Matz [Mon, 23 Jan 2017 17:11:03 +0000 (18:11 +0100)]
mempool: fix stack handler dequeue
The return value of the stack handler is wrong: it should be 0 on
success, not the number of objects dequeued.
This could lead to memory leaks depending on how the caller checks the
return value (ret < 0 or ret != 0). This was also breaking autotests
with debug enabled, because the debug cookies are only updated when the
function returns 0, so the cookies were not updated, leading to
an abort().
Bruce Richardson [Mon, 23 Jan 2017 12:11:28 +0000 (12:11 +0000)]
buildtools: allow symlinks within a source directory
When creating the symlinks for header files to the include folder, the
relpath script dereferenced all symlinks. This made it impossible to
have file A.h renamed to B.h and then symlinked back to its original
name. This is useful to be able to do when refactoring or reworking
a library. Change this so that we just use the dirname of the path from
readlink, we can use the basename as it was originally, even if it was a
symlink.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Thomas Monjalon [Mon, 23 Jan 2017 09:10:12 +0000 (10:10 +0100)]
mk: remove default toolchain prefix for ThunderX
The environment variable CROSS must be set when using a cross-toolchain.
However it is counter intuitive to set a default value, considering
the toolchain required to build this architecture is well known.
It is especially weird when using a native toolchain and requiring to
unset this variable on the command line.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Reviewed-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>