Michal Krawczyk [Fri, 15 Feb 2019 08:36:39 +0000 (09:36 +0100)]
net/ena: get device info statically
Whenever the app is calling rte_eth_dev_info_get(), it shouldn't use the
admin command. It was causing problems, if it was called from the
secondary process - the main process was crashing, and the secondary app
wasn't getting any result, as the admin request couldn't be processed by
the process which was requesting the data.
To fix that, the data is being written to the adapter structure during
device initialization routine.
Chas Williams [Thu, 14 Feb 2019 19:11:12 +0000 (14:11 -0500)]
net/bonding: fix link status
Copying the link properties of the first slave added may copy an
invalid link status. The speed and duplex of the slave may not
be known at this time. Delay setting the properties until the
first slave reports as link up. Note that we are still ignoring
an error from link_properties_valid. For some bonding modes,
802.3ad, we should not activate the slave if it does not have
matching link properties.
Fixes: a45b288ef21a ("bond: support link status polling") Cc: stable@dpdk.org Signed-off-by: Chas Williams <chas3@att.com>
Chas Williams [Thu, 14 Feb 2019 19:09:58 +0000 (14:09 -0500)]
net/bonding: fix slave Tx burst for mode 4
The Tx burst routine always needs to check for pending LACPDUs
and send them if available. Do this first to prioritize the
control traffic. We can still early exit, before calculating
the distribution slaves, if there isn't any data packets.
Wei Zhao [Wed, 13 Feb 2019 03:49:48 +0000 (11:49 +0800)]
net/ice: enable VLAN filter offloads support
VLAN filter is required to be configured during dev_start according to
dev_conf.rxmod.offloads setting, so ice_vlan_offload_set is called to
handle this.
Wei Zhao [Wed, 13 Feb 2019 08:54:13 +0000 (16:54 +0800)]
net/avf: fix admin queue interrupt for ICE
Enable CLEARPBA bit is required by ice NIC of A0/A1 version to
enable admin queue interrupt.
Also enable CLEARPBA bit does no impact on AVF behaviour when be
hosted by other devices, so we can make it as default.
Davide Caratti [Tue, 12 Feb 2019 18:30:19 +0000 (19:30 +0100)]
net/bnxt: support IOVA VA mode
Set RTE_PCI_DRV_IOVA_AS_VA in drv_flags: this allows initializing bnxt
PMD as non-root also on Linux v4.x, where /proc/self/pagemap can't be
accessed without CAP_SYS_ADMIN privileges.
Thomas Monjalon [Wed, 6 Feb 2019 22:25:19 +0000 (23:25 +0100)]
net/mlx: support firmware version query
The API function rte_eth_dev_fw_version_get() is querying drivers
via the operation callback fw_version_get().
The implementation of this operation is added for mlx4 and mlx5.
Both functions are copying the same ibverbs field fw_ver
which is retrieved when calling ibv_query_device[_ex]()
during the port probing.
It is tested with command "drvinfo" of examples/ethtool/.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Dekel Peled [Wed, 30 Jan 2019 06:43:29 +0000 (08:43 +0200)]
net/mlx5: fix Tx metadata for multi-segment packet
Original patch implemented the use of match_metadata offload in the
different burst functions.
The concurrent use of match_metadata and multi_segs offloads was
not handled.
This patch updates function txq_scatter_v(), to pass metadata value
from mbuf to wqe, when indicated by offload flags.
Fixes: 6bd7fbd03c62 ("net/mlx5: support metadata as flow rule criteria") Cc: stable@dpdk.org Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Yongseok Koh <yskoh@mellanox.com>
Rami Rosen [Mon, 11 Feb 2019 18:38:59 +0000 (20:38 +0200)]
test: fix autotest list
This patch fixes a broken build; when running
make test
we get the following error:
...
Traceback (most recent call last):
File "test/test/autotest.py", line 49, in <module>
num_fails = runner.run_all_tests()
File "test/test/autotest_runner.py", line 345, in run_all_tests
self.parallel_tests)
File "test/test/autotest_runner.py", line 264, in __filter_test
test_cmd = test["Command"]
KeyError: 'Command'
...
The reason is that the pdump autotest entry uses "Comamnd"
instead of "Command"; this patch fixes it.
Bugzilla ID: 205 Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library") Cc: stable@dpdk.org Signed-off-by: Rami Rosen <ramirose@gmail.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Bruce Richardson [Thu, 17 Jan 2019 17:30:32 +0000 (17:30 +0000)]
eal: support strlcat function
Add the strlcat function to DPDK to exist alongside the strlcpy one.
While strncat is generally safe for use for concatenation, the API for the
strlcat function is perhaps a little nicer to use, and supports truncation
detection.
See commit 5364de644a4b ("eal: support strlcpy function") for more
details on the function selection logic, since we only should be using the
DPDK-provided version when no system-provided version is present.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Xiao Wang [Wed, 23 Jan 2019 13:02:59 +0000 (21:02 +0800)]
vhost: remove vDPA available ring relay helper
We don't need to relay available ring and check the desc, vdpa device
can access the available ring in the guest directly. With this patch,
we can achieve better throughput and lower CPU usage.
Signed-off-by: Xiao Wang <xiao.w.wang@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Jens Freimann [Tue, 5 Feb 2019 11:17:02 +0000 (12:17 +0100)]
net/virtio: set offload flag for jumbo frames
Port configuration fails because offload flags don't match the expected
value when max-pkt-len is set to a value that should enable receive port
offloading but doesn't.
The .dev_infos_get callback can be called before the configure callback.
At that time we don't know the maximum packet size yet because it is
only set up when ports are started. So in virtio_dev_info_get() just
always set the jumbo packet offload flag.
Check the maximum packet length at device configure time, because then we
have access to the max-pkt-len value provided by the user. If the
max-pkt-len exceeds the maximum MTU supported by the device we remove
the VIRTIO_NET_F_MTU flag from requested features.
Fixes: a4996bd89c42 ("ethdev: new Rx/Tx offloads API") Cc: stable@dpdk.org Signed-off-by: Jens Freimann <jfreimann@redhat.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Ilya Maximets [Thu, 24 Jan 2019 16:59:02 +0000 (19:59 +0300)]
net/virtio: add missing read barrier for packed dequeue
Read barrier is required between reading the flags (desc_is_used)
and the content of descriptor to ensure the ordering.
Otherwise, speculative read of desc.id could be reordered with
reading of the desc.flags.
Ilya Maximets [Thu, 24 Jan 2019 16:59:01 +0000 (19:59 +0300)]
net/virtio: add barriers for extra descriptors on Rx split
There should be read barrier between checking VIRTQUEUE_NUSED (reading
the used->idx) and reading these descriptors. It's done for the first
checks at the beginning of these functions but missed while checking
for extra required descriptors.
Fixes: e5f456a98d3c ("net/virtio: support in-order Rx and Tx") Fixes: 13ce5e7eb94f ("virtio: mergeable buffers") Cc: stable@dpdk.org Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Ilya Maximets [Thu, 24 Jan 2019 16:59:00 +0000 (19:59 +0300)]
net/virtio: fix read barriers on packed Tx cleanup
Read barrier must be implied between reading descriptor flags
and descriptor id. Otherwise, in case of reordering, we could
read wrong descriptor id.
For the reference, similar barrier for split rings is the read
barrier between VIRTQUEUE_NUSED (reading the used->idx) and
the call to the virtio_xmit_cleanup().
Additionally removed double update of 'used_idx'. It's enough
to set it in the end of the loop.
net/sfc/base: share macro to increment per-event type stats
Move duplicate macro to increment per-event type stats to
internal header. These stats are NIC family independent and
stored in generic event queue structure.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Include efx_mcdi.h from main internal header efx_impl.h directly
instead of indirect inclusion via family-specific header.
It avoids duplication and fixes Medford and Medford2 cases where
the header inclusion is lost.
Correctness is still guaranteed by checks in efx_check.h which
require EFSYS_OPT_MCDI for corresponding families and do not
allow to enable the option if no family requires it.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
net/sfc/base: avoid division by 0 if no event queue timers
If event queue timers are not supported, enc_evq_timer_quantum_ns and
enc_evq_timer_max_us should be set to 0. Make sure that division by 0
does not happen in libefx, if public function efx_ev_usecs_to_ticks()
is used in this case.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
net/sfc/base: pass Rx buffer size to RxQ init if supported
Riverhead requires Rx buffer size to be specified in INIT_RXQ.
If the parameter is not supported (e.g. on EF10 family adapters),
zero must be used on INIT_RXQ.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Mark Spender [Thu, 7 Feb 2019 16:29:33 +0000 (16:29 +0000)]
net/sfc/base: support the Rx event mode w/o continue
The recently added NO_CONT_EV mode is recommended for when looking for
maximum throughput on 100G links as it allows the firmware to operate
more efficiently. The biggest benefit is when using scatter and jumbo
frames, but it is also necessary to achieve line rate in other cases.
Support for NO_CONT_EV when scatter is disabled is simple - the main
datapath change is to always read the packet length from the prefix,
not the event. This requires storing a flag with the event queue so
the event handler knows NO_CONT_EV mode is in use.
Supporting NO_CONT_EV with scatter would require an API change.
(Now the ee_flags field in efx_evq_t is used on the datapath, move it
next to other fields which are also read on the datapath to try to avoid
reading an additional cache line.)
Signed-off-by: Mark Spender <mspender@solarflare.com> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:29 +0000 (16:29 +0000)]
net/sfc: use NIC event descriptor size instead of common
Use of the macro for calculating a Rx queue size is deprecated. Replace
it with a call to a function that uses descriptor size specified for
every NIC.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:28 +0000 (16:29 +0000)]
net/sfc: use NIC Rx descriptor size instead of common
Use of the macro for calculating a Rx queue size is deprecated. Replace
it with a call to a function that uses descriptor size specified for
every NIC.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:27 +0000 (16:29 +0000)]
net/sfc: use NIC Tx descriptor size instead of common
Use of the macro for calculating a Tx queue size is deprecated. Replace
it with a call to a function that uses descriptor size specified for
every NIC.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:26 +0000 (16:29 +0000)]
net/sfc/base: round number of queue buffers up
Functions efx_*q_nbufs return the number of a queue buffers by dividing
the queue size by page size. If minimum size of a queue is smaller than
one page, we still need the page and number of buffers should not be 0.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:25 +0000 (16:29 +0000)]
net/sfc/base: support different event descriptor sizes
For consistency with the size of Tx descriptors, the size of event
descriptors should be a part of NIC config, not a macro that is
common for all NIC families. Also, add a max number of EvQ buffers
define which is needed to initialize an MCDI buffer at compile time.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:24 +0000 (16:29 +0000)]
net/sfc/base: support different Rx descriptor sizes
For consistency with the size of Tx descriptors, the size of Rx
descriptors should be a part of NIC config, not a macro that is
common for all NIC families.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:21 +0000 (16:29 +0000)]
net/sfc/base: make max number of TxQ bufs EF10-specific
The define EFX_TXQ_MAX_BUFS is used only by EF10 family implementation.
Since the macro is not used by any drivers, it does not require
exposed libefx interface.
Make the define EF10-specific.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:20 +0000 (16:29 +0000)]
net/sfc/base: move a macro to Siena implementation header
The macro EFX_RXQ_DC_NDESCS() is used only by Siena implementation.
Since the macro is not used by any drivers, it does not require
exposed libefx interface.
Make the macro Siena-specific.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:19 +0000 (16:29 +0000)]
net/sfc/base: move EVQ descs number check to generic place
Now we have min/max limits in NIC config, so we can do check against
min/max in a generic place instead of NIC family specific functions.
Check that the descriptors number is a power of 2 is also can be
made common. It removes code duplication and makes NIC family
specific functions a bit shorter.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:18 +0000 (16:29 +0000)]
net/sfc/base: move Rx descs number check to generic place
Now we have min/max limits in NIC config, so we can do check against
min/max in a generic place instead of NIC family specific functions.
Check that the descriptors number is a power of 2 is also can be
made common. It removes code duplication and makes NIC family
specific functions a bit shorter.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:17 +0000 (16:29 +0000)]
net/sfc/base: move Tx descs number check to generic place
Now we have min/max limits in NIC config, so we can do check against
min/max in a generic place instead of NIC family specific functions.
Check that the descriptors number is a power of 2 is also can be made
common. It removes code duplication and makes NIC family
specific functions a bit shorter.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Igor Romanov [Thu, 7 Feb 2019 16:29:10 +0000 (16:29 +0000)]
net/sfc/base: remove min define for number of Tx descs
EF100/Riverhead has different min limit. So, this limit should
be a part of NIC config, not define common for all NIC families.
Define maximum Tx descriptor number for Siena in the same way as
minimum for consistency.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Ivan Malov [Thu, 7 Feb 2019 16:29:09 +0000 (16:29 +0000)]
net/sfc/base: report support for Tx checksum op descriptors
FreeBSD driver needs a patch to provide a means for packets
which do not need checksum offload but have flow ID set
to avoid hitting only the first Tx queue (which has been used
for packets not needing checksum offload).
This should be possible on Huntington, Medford or Medford2 chips
since these support toggling checksum offload on any given queue
dynamically by means of pushing option descriptors.
The patch for FreeBSD driver will then need a means to figure out
whether the feature can be used, and testing adapter family might
not be a good solution.
This patch adds a feature bit specifically to indicate support
for checksum option descriptors. The new feature bits may have
more users in future, apart from the mentioned FreeBSD patch.
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
net/sfc/base: update external port number calculation
Revise the external port calculation to support all
X2 port modes. The previous algorithm could not
handle different port numbering schemes on each cage.
Signed-off-by: Richard Houldsworth <rhouldsworth@solarflare.com> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
net/sfc: make main logging macro reusable in secondary
Logging should be supported in secondary process and now we have
everything required to share at least main logging macro.
sfc_adapter is going to become primary process only.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
net/sfc: start to factor out multi-process shared data
sfc_adapter structure will become primary process only private data.
Start to factor out shared data into dedicated structure which will
become separate structure finally.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
net/sfc: make it simpler to change datapath ops location
Rx and Tx datapath ops should be stored in process private
data since these structures are located in the data section
(not allocated from shared memory).
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Ivan Malov [Thu, 7 Feb 2019 12:17:24 +0000 (12:17 +0000)]
net/sfc: log port ID as 16-bit unsigned integer on panic
Fixes: f8244c6399d9 ("ethdev: increase port id range") Cc: stable@dpdk.org Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
test_create_bonded_device is failing due to improper initialisation in
bonded device configuration. Which leads to crash while setting up
queues.
The value of nb_rx_desc is checked if it is not in range of rx_desc_lim
of bonded device which fails.
This is due to "rx_desc_lim" is set to 0 as default value of bonded
device during bond_alloc().
Hence nb_rx_desc (1024) is > 0 and test fails.
Fix is to set the default values of rx_desc_lim of bonded device to
appropriate value.
Receive the values from slaves configuration like done for other
existing slave configuration
Fixes: 2efb58cbab6e ("bond: new link bonding library") Cc: stable@dpdk.org Signed-off-by: Hari Kumar Vemula <hari.kumarx.vemula@intel.com> Acked-by: Chas Williams <chas3@att.com>
Nikhil Rao [Tue, 22 Jan 2019 05:44:26 +0000 (11:14 +0530)]
doc: announce parameter change of a service API function
rte_service_attr_get() is passed a uint32_t * to retrieve
an attribute value, this will be changed to uin64_t * as per
patch posted at http://patchwork.dpdk.org/patch/49968/
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com> Acked-by: Kevin Traynor <ktraynor@redhat.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Wed, 16 Jan 2019 11:37:13 +0000 (11:37 +0000)]
doc: announce meson version upgrade
Add a notice in the deprecation section of the release notes to call out
the fact that the minimum supported meson version for DPDK will change
from 19.05 onwards.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Luca Boccassi <bluca@debian.org> Acked-by: Timothy Redaelli <tredaelli@redhat.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
Bruce Richardson [Wed, 30 Jan 2019 16:43:44 +0000 (16:43 +0000)]
doc: remove note about meson being experimental
At this stage, meson builds are widely supported for DPDK, and so
the build system should be no longer called out as experimental.
NOTE: this does not imply it's the primary build system, just that
it's safe to use for day-to-day work and for packaging if so
desired.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>