dpdk.git
5 years agonet/sfc/base: avoid division by 0 if no event queue timers
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:41 +0000 (16:29 +0000)]
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>
5 years agonet/sfc/base: simplify EF10 family run-time checks
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:40 +0000 (16:29 +0000)]
net/sfc/base: simplify EF10 family run-time checks

Add EFX_FAMILY_IS_EF10() which may be used as synonym of any EF10-based
NIC family (i.e. Huntigton, Medford or Medford2 at the time of addition).

Suggested-by: Andy Moreton <amoreton@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: simplify EF10 family conditional code checks
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:39 +0000 (16:29 +0000)]
net/sfc/base: simplify EF10 family conditional code checks

Add EFX_OPTS_EF10() which may be used as synonym of any EF10-based
NIC (i.e. Huntigton, Medford or Medford2 at the time of addition).

Suggested-by: Andy Moreton <amoreton@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: pass Rx buffer size to RxQ init if supported
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:38 +0000 (16:29 +0000)]
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>
5 years agonet/sfc/base: allow to specify Rx buffer size on queue setup
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:37 +0000 (16:29 +0000)]
net/sfc/base: allow to specify Rx buffer size on queue setup

Rx buffer size must be specified on Rx queue creation on
Riverhead.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: make bundle partition type available for X2
Richard Houldsworth [Thu, 7 Feb 2019 16:29:36 +0000 (16:29 +0000)]
net/sfc/base: make bundle partition type available for X2

Supports the firmware update mechanism described in SF-121352-AN.

Signed-off-by: Richard Houldsworth <rhouldsworth@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: add Rx parse incomplete event queue statistic
Andrew Lee [Thu, 7 Feb 2019 16:29:35 +0000 (16:29 +0000)]
net/sfc/base: add Rx parse incomplete event queue statistic

Signed-off-by: Andrew Lee <alee@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: rename header with MCDI strings
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:34 +0000 (16:29 +0000)]
net/sfc/base: rename header with MCDI strings

The header was incorrectly named on addition since it did not
match naming conventions.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: support the Rx event mode w/o continue
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>
5 years agonet/sfc/base: update auto-generated MCDI definition headers
Andrew Rybchenko [Thu, 7 Feb 2019 16:29:32 +0000 (16:29 +0000)]
net/sfc/base: update auto-generated MCDI definition headers

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: remove deprecated macros that get queue sizes
Igor Romanov [Thu, 7 Feb 2019 16:29:31 +0000 (16:29 +0000)]
net/sfc/base: remove deprecated macros that get queue sizes

The macros are deprecated and are not used anymore, so they can
be deleted.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: remove deprecated min/max desc defines
Igor Romanov [Thu, 7 Feb 2019 16:29:30 +0000 (16:29 +0000)]
net/sfc/base: remove deprecated min/max desc defines

Symbols for maximum and minimum number of Tx, Rx and event descriptors
are deprecated. They are not used anymore, so they can be deleted.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: use NIC event descriptor size instead of common
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>
5 years agonet/sfc: use NIC Rx descriptor size instead of common
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>
5 years agonet/sfc: use NIC Tx descriptor size instead of common
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>
5 years agonet/sfc/base: round number of queue buffers up
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>
5 years agonet/sfc/base: support different event descriptor sizes
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>
5 years agonet/sfc/base: support different Rx descriptor sizes
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>
5 years agonet/sfc/base: support different Tx descriptor sizes
Igor Romanov [Thu, 7 Feb 2019 16:29:23 +0000 (16:29 +0000)]
net/sfc/base: support different Tx descriptor sizes

Size of Tx descriptor is different on Riverhead. So, the size
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>
5 years agonet/sfc/base: make NIC pointer const in NIC config get
Igor Romanov [Thu, 7 Feb 2019 16:29:22 +0000 (16:29 +0000)]
net/sfc/base: make NIC pointer const in NIC config get

The change is needed for the functions that accept const efx_nic_t
pointer and have to get efx_nic_cfg_t.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: make max number of TxQ bufs EF10-specific
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>
5 years agonet/sfc/base: move a macro to Siena implementation header
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>
5 years agonet/sfc/base: move EVQ descs number check to generic place
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>
5 years agonet/sfc/base: move Rx descs number check to generic place
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>
5 years agonet/sfc/base: move Tx descs number check to generic place
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>
5 years agonet/sfc: use NIC EVQ descs limits instead of defines
Igor Romanov [Thu, 7 Feb 2019 16:29:16 +0000 (16:29 +0000)]
net/sfc: use NIC EVQ descs limits instead of defines

Descriptor limits are not common for all NIC families. Use the variables
from NIC configuration instead of deprecated defines.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: use NIC Rx descs limits instead of defines
Igor Romanov [Thu, 7 Feb 2019 16:29:15 +0000 (16:29 +0000)]
net/sfc: use NIC Rx descs limits instead of defines

Descriptor limits are not common for all NIC families. Use the variables
from NIC configuration instead of deprecated defines.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: use NIC min number of Tx descs instead of define
Igor Romanov [Thu, 7 Feb 2019 16:29:14 +0000 (16:29 +0000)]
net/sfc: use NIC min number of Tx descs instead of define

Min limit is not common for all NIC families. Use the variable from
NIC configuration instead of deprecated define.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: remove min/max defines for number of events
Igor Romanov [Thu, 7 Feb 2019 16:29:13 +0000 (16:29 +0000)]
net/sfc/base: remove min/max defines for number of events

EF100/Riverhead has different min/max limits. So, these limits should
be a part of NIC config, not defines common for all NIC families.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: remove min/max defines for number of Rx descs
Igor Romanov [Thu, 7 Feb 2019 16:29:12 +0000 (16:29 +0000)]
net/sfc/base: remove min/max defines for number of Rx descs

EF100/Riverhead has different min/max limits. So, these limits should
be a part of NIC config, not defines common for all NIC families.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: define max desc number for every EF10 NIC
Igor Romanov [Thu, 7 Feb 2019 16:29:11 +0000 (16:29 +0000)]
net/sfc/base: define max desc number for every EF10 NIC

For consistency with defines of min descriptor number, define max
descriptor number for Huntington, Medford and Medford2.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: remove min define for number of Tx descs
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>
5 years agonet/sfc/base: report support for Tx checksum op descriptors
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>
5 years agonet/sfc/base: ensure EvQ poll stops when abort is requested
Mark Spender [Thu, 7 Feb 2019 16:29:08 +0000 (16:29 +0000)]
net/sfc/base: ensure EvQ poll stops when abort is requested

If an event handler requested an abort, only the inner loop was
guaranteed to be broken out of - the outer loop could continue
if total == batch.

Fix this by poisoning batch to ensure it is different to total.

Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc/base: update external port number calculation
Richard Houldsworth [Thu, 7 Feb 2019 16:29:07 +0000 (16:29 +0000)]
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>
5 years agonet/sfc/base: correct annotations where NULL input is OK
Richard Houldsworth [Thu, 7 Feb 2019 16:29:06 +0000 (16:29 +0000)]
net/sfc/base: correct annotations where NULL input is OK

Correct annotations where NULL input can be permitted

Signed-off-by: Richard Houldsworth <rhouldsworth@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: support Rx packet types get in secondary process
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:53 +0000 (12:17 +0000)]
net/sfc: support Rx packet types get in secondary process

Secondary process needs to know packet classes supported
by the NIC on Rx.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: separate adapter primary process and shared data
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:52 +0000 (12:17 +0000)]
net/sfc: separate adapter primary process and shared data

Make sfc_adapter primary process only.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: remove adapter locks from secondary process ops
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:51 +0000 (12:17 +0000)]
net/sfc: remove adapter locks from secondary process ops

Adapter lock will become primary process only.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move isolated flag in adapter shared
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:50 +0000 (12:17 +0000)]
net/sfc: move isolated flag in adapter shared

The flag is required in default RSS RETA get which does not make sense
in isolated mode.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move RSS config to adapter shared
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:49 +0000 (12:17 +0000)]
net/sfc: move RSS config to adapter shared

RSS get requests are supported in secondary process.

Prepare to make sfc_adapter primary process private data.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move TxQ shared information to adapter shared
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:48 +0000 (12:17 +0000)]
net/sfc: move TxQ shared information to adapter shared

Prepare to make sfc_adapter primary process private data.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move RxQ shared information to adapter shared
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:47 +0000 (12:17 +0000)]
net/sfc: move RxQ shared information to adapter shared

Prepare to make sfc_adapter primary process private data.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: make main logging macro reusable in secondary
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:46 +0000 (12:17 +0000)]
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>
5 years agonet/sfc: move Rx/Tx datapath names to shared state
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:45 +0000 (12:17 +0000)]
net/sfc: move Rx/Tx datapath names to shared state

Prepare to make sfc_adapter primary process private data.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: start to factor out multi-process shared data
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:44 +0000 (12:17 +0000)]
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>
5 years agonet/sfc: remove TxQ control from shared TxQ info
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:43 +0000 (12:17 +0000)]
net/sfc: remove TxQ control from shared TxQ info

libefx is not multi-process aware and all related structures
should be moved to primary process only.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: remove RxQ control from shared RxQ info
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:42 +0000 (12:17 +0000)]
net/sfc: remove RxQ control from shared RxQ info

libefx is not multi-process aware and all related structures
should be moved to primary process only.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: remove unnecessary functions to get TxQ index
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:41 +0000 (12:17 +0000)]
net/sfc: remove unnecessary functions to get TxQ index

TxQ index is stored in generic datapath queue structure.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: remove unnecessary functions to get RxQ index
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:40 +0000 (12:17 +0000)]
net/sfc: remove unnecessary functions to get RxQ index

RxQ index is stored in generic datapath queue structure.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: support RSS RETA and hash config get in secondary
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:39 +0000 (12:17 +0000)]
net/sfc: support RSS RETA and hash config get in secondary

RSS RETA query and hash configuration get functions use shared
adapter data only. No libefx functions are called.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: support Tx descriptor status in secondary process
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:38 +0000 (12:17 +0000)]
net/sfc: support Tx descriptor status in secondary process

If Tx datapath supports multi-process, secondary process should be
able to use Tx descriptor status API.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move datapath TxQ handle to shared TxQ info
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:37 +0000 (12:17 +0000)]
net/sfc: move datapath TxQ handle to shared TxQ info

If datapath supports multi-process, it should be possible to get
its TxQ structure by the queue index.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move TxQ state to multi-process shared location
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:36 +0000 (12:17 +0000)]
net/sfc: move TxQ state to multi-process shared location

Secondary process needs to know TxQ state.
TxQ control structure will become primary process private.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: support Rx descriptor status in secondary process
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:35 +0000 (12:17 +0000)]
net/sfc: support Rx descriptor status in secondary process

If Rx datapath supports multi-process, secondary process should be
able to use Rx descriptor status and related API.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move datapath RxQ handle to shared RxQ info
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:34 +0000 (12:17 +0000)]
net/sfc: move datapath RxQ handle to shared RxQ info

If datapath supports multi-process, it should be possible to get
its RxQ structure by the queue index.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move RxQ state to multi-process shared location
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:33 +0000 (12:17 +0000)]
net/sfc: move RxQ state to multi-process shared location

Secondary process needs to know RxQ state.
RxQ control structure will become primary process private.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move main log type to process private data
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:32 +0000 (12:17 +0000)]
net/sfc: move main log type to process private data

Dynamic log type value may differ in primary and secondary processes.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: move datapath ops pointers to process private data
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:31 +0000 (12:17 +0000)]
net/sfc: move datapath ops pointers to process private data

The change is required to support datapath-dependent device operations
for secondary process. It is just a step in the direction.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: make it simpler to change datapath ops location
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:30 +0000 (12:17 +0000)]
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>
5 years agonet/sfc: remove wrappers around Rx descriptor count and done
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:29 +0000 (12:17 +0000)]
net/sfc: remove wrappers around Rx descriptor count and done

These wrappers are used in single place and just complicate reading
and understanding if these ops could be supported in secondary process.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: avoid usage of TxQ control structure in info get
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:28 +0000 (12:17 +0000)]
net/sfc: avoid usage of TxQ control structure in info get

TxQ control structure contains primary process only data and will become
primary process only. TxQ info get is supported in secondary process.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: avoid usage of RxQ control structure in info get
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:27 +0000 (12:17 +0000)]
net/sfc: avoid usage of RxQ control structure in info get

RxQ control structure contains primary process only data and will
become primary process only. RxQ info get is supported in secondary
process.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: fix logging from secondary process
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:26 +0000 (12:17 +0000)]
net/sfc: fix logging from secondary process

Dynamic log type value may differ in different processes.

Fixes: f28ede500c2e ("net/sfc: support multi-process")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: remove control path logging from Rx queue count
Andrew Rybchenko [Thu, 7 Feb 2019 12:17:25 +0000 (12:17 +0000)]
net/sfc: remove control path logging from Rx queue count

Rx queue count may be used from data core and it should not
generate control path logs.

Fixes: 04aa6b9c5fd7 ("net/sfc: get RxQ pending descriptors count")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agonet/sfc: log port ID as 16-bit unsigned integer on panic
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>
5 years agonet/bonding: fix values of descriptor limits
Hari Kumar Vemula [Tue, 5 Feb 2019 13:39:39 +0000 (13:39 +0000)]
net/bonding: fix values of descriptor limits

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>
5 years agonet/pcap: fix memory leak
Qi Zhang [Wed, 30 Jan 2019 01:08:54 +0000 (09:08 +0800)]
net/pcap: fix memory leak

Fix potential memory leak due to kvlist not be freed.

Fixes: 0d0dd2d9d8ff ("net/pcap: enable data path for secondary process")
Cc: stable@dpdk.org
Reported-by: Gage Eads <gage.eads@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agoapp/testpmd: add TOS and TTL fields to VXLAN encapsulation
Viacheslav Ovsiienko [Tue, 22 Jan 2019 10:57:04 +0000 (10:57 +0000)]
app/testpmd: add TOS and TTL fields to VXLAN encapsulation

The new testpmd set vxlan-tos-ttl command is added. It
allows to specify tos and tll fields for encapsulation IP
header.

IPv4 VXLAN outer header:

  testpmd> set vxlan-tos-ttl ip-version ipv4 vni 4 udp-src 4
           udp-dst 4 ip-tos 0 ip-ttl 255 ip-src 127.0.0.1
           ip-dst 128.0.0.1 eth-src 11:11:11:11:11:11
           eth-dst 22:22:22:22:22:22

IPv6 VXLAN outer header:
  testpmd> set vxlan-tos-ttl ip-version ipv6 vni 4 udp-src 4
           udp-dst 4 ip-tos 0 ip-ttl 255 ::1 ip-dst ::2222
           eth-src 11:11:11:11:11:11 eth-dst
           22:22:22:22:22:22

Note: ip-ttl parameter corresponds the nop_limits field for IPv6.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
5 years agohash: replace license text with SPDX tag for Toeplitz algo
Vladimir Medvedkin [Tue, 5 Feb 2019 13:57:35 +0000 (13:57 +0000)]
hash: replace license text with SPDX tag for Toeplitz algo

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
5 years agomaintainers: claim co-maintainership of LPM library
Vladimir Medvedkin [Tue, 5 Feb 2019 13:57:33 +0000 (13:57 +0000)]
maintainers: claim co-maintainership of LPM library

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
5 years agoversion: 19.05-rc0
Thomas Monjalon [Sat, 2 Feb 2019 15:28:44 +0000 (16:28 +0100)]
version: 19.05-rc0

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
5 years agoversion: 19.02.0
Thomas Monjalon [Fri, 1 Feb 2019 14:25:17 +0000 (15:25 +0100)]
version: 19.02.0

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
5 years agodoc: update release notes for 19.02
John McNamara [Fri, 1 Feb 2019 09:23:48 +0000 (09:23 +0000)]
doc: update release notes for 19.02

Fix grammar, spelling and formatting of DPDK 19.02 release notes.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
5 years agodoc: announce replacement of meter colors
Reshma Pattan [Wed, 12 Dec 2018 16:38:02 +0000 (16:38 +0000)]
doc: announce replacement of meter colors

Added deprecation notice to replace rte_meter_color
with rte_color.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
5 years agodoc: announce parameter change of a service API function
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>
5 years agodoc: announce meson version upgrade
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>
5 years agodoc: remove note about meson being experimental
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>
5 years agodoc: clarify libnuma requirement for NUMA systems
Anatoly Burakov [Thu, 31 Jan 2019 17:05:51 +0000 (17:05 +0000)]
doc: clarify libnuma requirement for NUMA systems

Since 18.05, libnuma is pretty much required on Linux when using
non-legacy mode, because without it, we cannot know where our
hugepages are located [1].

In legacy mode, libnuma is not required because we can still sort
pages by sockets, as we use pagemap lookup method to figure out
socket ID's for pages.

So, document libnuma as required for NUMA systems and non-legacy
mode.

[1] https://mails.dpdk.org/archives/dev/2018-December/120490.html

Fixes: 6b42f75632f0 ("eal: enable non-legacy memory mode")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
5 years agomaintainers: resign from maintainership of link bonding
Declan Doherty [Mon, 28 Jan 2019 12:57:19 +0000 (12:57 +0000)]
maintainers: resign from maintainership of link bonding

I've been unable to dedicate enough time to actively help in the
maintainership of the link bonding PMD, and as Chas is now actively
maintaining this PMD, I'm removing my name against it in the
MAINTAINERS file.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
5 years agodoc: improve Mellanox bifurcated model description
Thomas Monjalon [Wed, 30 Jan 2019 11:20:20 +0000 (12:20 +0100)]
doc: improve Mellanox bifurcated model description

In the howto guide about flow bifurcation, the Mellanox case
(which does not require specific details) was missing in the landscape.

In the Linux drivers guide, it was not clear that the flow bifurcation
is performed in the NIC hardware.

References to flow isolated mode are also inserted in those contexts.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agodoc: add references to flow isolated mode in NICs guide
Thomas Monjalon [Wed, 30 Jan 2019 11:20:19 +0000 (12:20 +0100)]
doc: add references to flow isolated mode in NICs guide

Some drivers (mlx, mvpp2, sfc) support the flow isolated mode,
but the feature was not advertised.
A reference to the feature description is added for each driver.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agodoc: remove useless anchor for flow API guide
Thomas Monjalon [Wed, 30 Jan 2019 11:20:18 +0000 (12:20 +0100)]
doc: remove useless anchor for flow API guide

A doc page (.rst file) can be referenced with :doc: syntax
instead of :ref: to .. anchor.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agodoc: add release notes for mlx5
Yongseok Koh [Wed, 30 Jan 2019 07:53:21 +0000 (23:53 -0800)]
doc: add release notes for mlx5

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agodoc: add Mellanox EN support in mlx5 guide
Yongseok Koh [Wed, 30 Jan 2019 07:53:20 +0000 (23:53 -0800)]
doc: add Mellanox EN support in mlx5 guide

Mellanox EN package is supported along with Mellanox OFED. Mellanox EN is
distriubuted for Ethernet users.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agodoc: add mlx5 note for Bluefield build configuration
Yongseok Koh [Wed, 30 Jan 2019 07:53:19 +0000 (23:53 -0800)]
doc: add mlx5 note for Bluefield build configuration

Fixes: d14e4e976f65 ("config: add Mellanox BlueField armv8 SoC")
Cc: stable@dpdk.org
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: fix build for armv8
Viacheslav Ovsiienko [Mon, 28 Jan 2019 14:22:14 +0000 (14:22 +0000)]
net/mlx5: fix build for armv8

Added <rte_cycles.h> inclusion, was not included on some
building setups (armv8).

Fixes: 71ab2d64723c ("net/mlx5: fix VXLAN port registration race condition")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agoversion: 19.02-rc4
Thomas Monjalon [Mon, 28 Jan 2019 01:36:47 +0000 (02:36 +0100)]
version: 19.02-rc4

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
5 years agodoc: add tested platforms with Mellanox NICs
Raslan Darawsheh [Thu, 24 Jan 2019 12:23:16 +0000 (12:23 +0000)]
doc: add tested platforms with Mellanox NICs

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
5 years agodoc: add tested Intel platforms with Intel NICs
Lijuan Tu [Fri, 18 Jan 2019 15:15:01 +0000 (23:15 +0800)]
doc: add tested Intel platforms with Intel NICs

Add tested Intel platforms with Intel NICs to v19.02 release note.

Signed-off-by: Lijuan Tu <lijuan.tu@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
5 years agodoc: add dependency for PDF in contributing guide
Rami Rosen [Sun, 20 Jan 2019 18:29:47 +0000 (20:29 +0200)]
doc: add dependency for PDF in contributing guide

There is a missing depenency for building docs with "make doc-guides-pdf".
This causes it to break with "make[3]: latexmk: Command not found". This
was observed and reported in https://bugs.dpdk.org/show_bug.cgi?id=182
This patch fixes this issue by adding the latexmk package dependency in
sub-section 4.3.1 of the contributing guide ("Dependencies").

Bugzilla ID: 182
Cc: stable@dpdk.org
Signed-off-by: Rami Rosen <ramirose@gmail.com>
5 years agobuild: mention -march in pkg-config description
Luca Boccassi [Thu, 10 Jan 2019 17:28:06 +0000 (17:28 +0000)]
build: mention -march in pkg-config description

Applications need to at least match DPDK's -march option to build
successfully due to some static inline functions in the public headers.

This might cause problems, especially in distributions, so add a note
in the pkg-config description.

Fixes: a25a650be5f0 ("build: add infrastructure for meson and ninja builds")
Cc: stable@dpdk.org
Signed-off-by: Luca Boccassi <bluca@debian.org>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
5 years agousertools: make telemetry script executable
Bruce Richardson [Tue, 22 Jan 2019 16:27:32 +0000 (16:27 +0000)]
usertools: make telemetry script executable

Add #! line to the top of the script and mark it as executable so it can
be run directly rather than having to pass it to python interpreter.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
5 years agolpm: remove recursively included header file
Congwen Zhang [Thu, 10 Jan 2019 01:32:22 +0000 (20:32 -0500)]
lpm: remove recursively included header file

includes itself: rte_lpm.h -> rte_lpm_sse.h -> rte_lpm.h
includes itself: rte_lpm.h -> rte_lpm_neon.h -> rte_lpm.h

Signed-off-by: Congwen Zhang <zhang.congwen@zte.com.cn>
5 years agombuf: fix struct initialization with C++
Ed Czeck [Thu, 24 Jan 2019 14:36:37 +0000 (09:36 -0500)]
mbuf: fix struct initialization with C++

g++ reports "error: missing initializer for member"

Fixes: 5d3f72100904 ("mbuf: implement generic format for sched field")

Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
5 years agocrypto/qat: fix digest in wireless auth case
Fiona Trahe [Fri, 25 Jan 2019 16:59:00 +0000 (16:59 +0000)]
crypto/qat: fix digest in wireless auth case

When operation calls for auth (digest generation), followed by
encryption of both data plus digest, the digest-in-buffer
flag must be set for QAT.

Fixes: 39e0bee48e81 ("crypto/qat: rework request builder for performance")
Cc: stable@dpdk.org
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
5 years agodoc: add instructions for WC in ENAv2
Rafal Kozik [Fri, 25 Jan 2019 08:10:28 +0000 (09:10 +0100)]
doc: add instructions for WC in ENAv2

ENAv2 hardware provides Low Latency Queue v2 (LLQv2). It needs kernel
PCI driver to support write combining (WC). This patch add information
how to use it with igb_uio and vfio-pci drivers.

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
5 years agodoc: update release notes for ENA PMD
Rafal Kozik [Fri, 25 Jan 2019 08:10:27 +0000 (09:10 +0100)]
doc: update release notes for ENA PMD

Add changes in ENA PMD to DPDK v19.02 release notes.

Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Signed-off-by: Rafal Kozik <rk@semihalf.com>
5 years agonet/ena: fix errno to positive value
Michal Krawczyk [Fri, 25 Jan 2019 08:10:26 +0000 (09:10 +0100)]
net/ena: fix errno to positive value

The rte_errno shouldn't have assigned negative error codes, so it has
to be fixed.

Fixes: b3fc5a1ae10d ("net/ena: add Tx preparation")
Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
5 years agonet/ena: fix dev init with multi-process
Michal Krawczyk [Fri, 25 Jan 2019 08:10:25 +0000 (09:10 +0100)]
net/ena: fix dev init with multi-process

The check for proc type in eth_ena_dev_init() should appear before
modyfing adapter structure.

Calling memset on ena_adapter from secondary process context, was
erasing all structure information, and it was causing the crash of the
main process.

Fixes: 1173fca25af9 ("ena: add polling-mode driver")
Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>