dpdk.git
4 years agoapp/testpmd: fix queue offload configuration
Wei Zhao [Thu, 4 Jul 2019 05:35:37 +0000 (13:35 +0800)]
app/testpmd: fix queue offload configuration

When adding offloads from commandline, not only port
related configuration bits should be set, but also queue
related offloads configuration bits, or it will cause error.
For example, test in this process for ixgbe:
(1)./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4
-- -i --portmask=0x1 --port-topology=loop --disable-crc-strip
(2)port stop all
(3)port config all crc-strip on
(4)port start all
we will see "Fail to configure port 0 rx queues" of warning info.

Fixes: 0074d02fca21 ("app/testpmd: convert to new Rx offloads API")
Cc: stable@dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
4 years agoapp/testpmd: fix parsing RSS queue rule
Haiyue Wang [Tue, 25 Jun 2019 10:38:03 +0000 (18:38 +0800)]
app/testpmd: fix parsing RSS queue rule

Declare a local variable 'arg' to hold the pointer to ARGS_ENTRY_ARB,
otherwise, the pop 'arg' in 'parse_int' holds wrong data like 'arg->
offset = 5912737, arg->size = 0', this caused the parse failure.

If calling like 'push_args(ctx, ARGS_ENTRY_ARB..)', the below code for
assigning 'offset & size' will be missed for some gcc optimization.

parse_vc_action_rss_queue
    29c5: c5 f9 ef c0           vpxor  %xmm0,%xmm0,%xmm0
    29c9: 43 8d 44 24 68        lea    0x68(%r12,%r12,1),%eax
    29ce: 48 c7 44 24 20 00 00  movq   $0x0,0x20(%rsp)
    29d5: 00 00
    29d7: c5 f8 29 44 24 10     vmovaps %xmm0,0x10(%rsp)
    29dd: 89 44 24 18           mov    %eax,0x18(%rsp)
    29e1: 48 63 83 0c 01 00 00  movslq 0x10c(%rbx),%rax
    29e8: c7 44 24 1c 02 00 00  movl   $0x2,0x1c(%rsp)
    29ef: 00
    29f0: c5 f8 29 04 24        vmovaps %xmm0,(%rsp)

The above assembly code is from this modification with:
    gcc version 9.1.1 20190503 (Red Hat 9.1.1-1) (GCC)
    Fedora release 30 (Thirty)
    5.1.11-300.fc30.x86_64

Fixes: d0ad8648b1c5 ("app/testpmd: fix RSS flow action configuration")
Cc: stable@dpdk.org
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
4 years agonet/mlx5: check memory allocation in flow creation
Asaf Penso [Wed, 19 Jun 2019 09:46:24 +0000 (09:46 +0000)]
net/mlx5: check memory allocation in flow creation

rte_calloc functions returns a non-null pointer in case of
success and null pointer in case of failure.

The return value should be checked and the function flow
should take that into consideration.

This patch adds a check for rte_calloc return value in function
flow_list_create.

Fixes: 84c406e74524 ("net/mlx5: add flow translate function")
Cc: stable@dpdk.org
Signed-off-by: Asaf Penso <asafp@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
4 years agonet/mlx5: fix condition for link update fallback
Asaf Penso [Wed, 19 Jun 2019 09:52:45 +0000 (09:52 +0000)]
net/mlx5: fix condition for link update fallback

mlx5_link_update uses the newer ethtool command
ETHTOOL_GLINKSETTINGS to determine interface capabilities but falls
back to the older (deprecated) ETHTOOL_GSET command if the new
method fails for any reason.
The older method only supports reporting of capabilities up to 40G.

However, mlx5_link_update_unlocked_gs can return a failure for a
number of reasons (including the link being down).
Using the older method in cases of transient failure of the method
can result in reporting of reduced capabilities to the application.

The older method (mlx5_link_update_unlocked_gset) should only be
invoked if the newer method returns EOPNOTSUPP.

Fixes: 7d2e32f76cfc ("net/mlx5: fix ethtool link setting call order")
Cc: stable@dpdk.org
Reported-by: Srinivas Narayan <srinivas.narayan@att.com>
Signed-off-by: Asaf Penso <asafp@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
4 years agonet/mlx5: remove TCF support
Moti Haimovsky [Mon, 1 Jul 2019 09:34:22 +0000 (12:34 +0300)]
net/mlx5: remove TCF support

This commit removes the support of configuring the device E-switch
using TCF since it is now possible to configure it via DR (direct
verbs rules), and by that to also remove the PMD dependency in libmnl.

Signed-off-by: Moti Haimovsky <motih@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
4 years agonet/mlx5: fix crash on null operation
Moti Haimovsky [Mon, 1 Jul 2019 09:34:21 +0000 (12:34 +0300)]
net/mlx5: fix crash on null operation

mlx5 implements mlx5_flow_null_drv_ops to be used when a specific
flow typei/driver is not available or invalid.
This routines return error without modifying the rte_flow_error
parameter passed to them which causes testpmd, for example, to crash.
This commit addresses the issue by modifying the rte_flow_error
parameter in theses routines.

Fixes: 0c76d1c9a18d ("net/mlx5: add abstraction for multiple flow drivers")
Fixes: 684dafe795d0 ("net/mlx5: add flow query abstraction interface")
Cc: stable@dpdk.org
Signed-off-by: Moti Haimovsky <motih@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
4 years agonet/octeontx2: add link status operations
Vamsi Attunuru [Wed, 3 Jul 2019 08:31:50 +0000 (14:01 +0530)]
net/octeontx2: add link status operations

Add support for setting the link up and down.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: support Rx interrupts
Harman Kalra [Sun, 30 Jun 2019 09:22:50 +0000 (14:52 +0530)]
net/octeontx2: support Rx interrupts

This patch implements rx interrupts feature required for power
saving. These interrupts can be enabled/disabled on demand.

Signed-off-by: Harman Kalra <hkalra@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add MTU set operation
Vamsi Attunuru [Sun, 2 Jun 2019 11:57:54 +0000 (17:27 +0530)]
net/octeontx2: add MTU set operation

Add MTU set operation and MTU update feature.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add device stop and close operations
Nithin Dabilpuram [Sun, 30 Jun 2019 09:29:49 +0000 (14:59 +0530)]
net/octeontx2: add device stop and close operations

Add device stop, close and reset operations.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: add device start operation
Nithin Dabilpuram [Sun, 2 Jun 2019 11:49:04 +0000 (17:19 +0530)]
net/octeontx2: add device start operation

Add device start operation and update the correct
function pointers for Rx and Tx burst functions.

This patch also update the octeontx2 NIC specific documentation.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add Tx vector version
Nithin Dabilpuram [Sun, 2 Jun 2019 11:37:08 +0000 (17:07 +0530)]
net/octeontx2: add Tx vector version

Add vector version of packet transmit function.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agonet/octeontx2: add Tx multi segment version
Nithin Dabilpuram [Sun, 2 Jun 2019 11:34:21 +0000 (17:04 +0530)]
net/octeontx2: add Tx multi segment version

Add multi segment version of packet Transmit function.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agonet/octeontx2: support Tx
Jerin Jacob [Sun, 2 Jun 2019 11:15:37 +0000 (16:45 +0530)]
net/octeontx2: support Tx

Add Tx burst support.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Harman Kalra <hkalra@marvell.com>
4 years agonet/octeontx2: add Rx vector version
Jerin Jacob [Sun, 2 Jun 2019 10:21:06 +0000 (15:51 +0530)]
net/octeontx2: add Rx vector version

Add vector version of packet Receive function.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add Rx multi segment version
Nithin Dabilpuram [Sun, 2 Jun 2019 09:51:32 +0000 (15:21 +0530)]
net/octeontx2: add Rx multi segment version

Add multi segment version of packet Receive function.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agonet/octeontx2: support Rx
Jerin Jacob [Sun, 2 Jun 2019 09:32:02 +0000 (15:02 +0530)]
net/octeontx2: support Rx

Add Rx burst support.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Harman Kalra <hkalra@marvell.com>
4 years agonet/octeontx2: add FW version get operation
Vamsi Attunuru [Sat, 1 Jun 2019 18:47:13 +0000 (00:17 +0530)]
net/octeontx2: add FW version get operation

Add firmware version get operation.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: support VLAN TPID and PVID for Tx
Vivek Sharma [Sun, 30 Jun 2019 03:49:05 +0000 (09:19 +0530)]
net/octeontx2: support VLAN TPID and PVID for Tx

Implement support for setting VLAN TPID and PVID for Tx packets.

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: support VLAN filters
Vivek Sharma [Sun, 30 Jun 2019 03:34:41 +0000 (09:04 +0530)]
net/octeontx2: support VLAN filters

Support setting up VLAN filters so as to allow tagged
packet's reception after VLAN HW Filter offload is enabled.

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: support VLAN offloads
Vivek Sharma [Sun, 30 Jun 2019 02:25:19 +0000 (07:55 +0530)]
net/octeontx2: support VLAN offloads

Support configuring VLAN offloads for an ethernet device and
dynamic promiscuous mode configuration for VLAN filters where
filters are updated according to promiscuous mode of the device.

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: implement VLAN utility functions
Vivek Sharma [Sun, 30 Jun 2019 01:25:08 +0000 (06:55 +0530)]
net/octeontx2: implement VLAN utility functions

Implement accessory functions needed for VLAN functionality.
Introduce VLAN related structures as well.

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: connect flow API to ethdev ops
Vivek Sharma [Sat, 29 Jun 2019 11:08:49 +0000 (16:38 +0530)]
net/octeontx2: connect flow API to ethdev ops

Connect rte_flow driver ops to ethdev via .filter_ctrl op.

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
4 years agonet/octeontx2: add flow init and fini
Kiran Kumar K [Wed, 26 Jun 2019 10:43:40 +0000 (16:13 +0530)]
net/octeontx2: add flow init and fini

Adding the flow init and fini functionality. These will be called from
dev init and will initialize and de-initialize the flow related memory.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: support flow destroy ops
Kiran Kumar K [Wed, 26 Jun 2019 10:42:14 +0000 (16:12 +0530)]
net/octeontx2: support flow destroy ops

Adding few more flow operations like flow_destroy, flow_isolate
and flow_flush.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add flow operations
Kiran Kumar K [Sat, 29 Jun 2019 10:48:16 +0000 (16:18 +0530)]
net/octeontx2: add flow operations

Adding the initial flow ops like flow_create and flow_validate.
These will be used to alloc and write flow rule to device and
validate the flow rule.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: support flow parse actions
Kiran Kumar K [Sat, 29 Jun 2019 10:45:13 +0000 (16:15 +0530)]
net/octeontx2: support flow parse actions

Adding support to parse flow actions like drop, count, mark, rss, queue.
On egress side, only drop and count actions were supported.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add flow parsing for inner layers
Kiran Kumar K [Wed, 26 Jun 2019 10:35:46 +0000 (16:05 +0530)]
net/octeontx2: add flow parsing for inner layers

Adding functionality to parse inner layers from la to lc.
These will be used to parse inner layers L2, L3, L4 types.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add flow parsing for outer layers
Kiran Kumar K [Wed, 26 Jun 2019 10:34:22 +0000 (16:04 +0530)]
net/octeontx2: add flow parsing for outer layers

Adding functionality to parse outer layers from ld to lh.
These will be used parse outer layers L2, L3, L4 and tunnel types.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add flow MCAM utility functions
Kiran Kumar K [Wed, 26 Jun 2019 10:32:05 +0000 (16:02 +0530)]
net/octeontx2: add flow MCAM utility functions

Adding MCAM utility functions to alloc and write the entries.
These will be used to arrange the flow rules based on priority.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add flow mbox utility functions
Kiran Kumar K [Wed, 26 Jun 2019 10:26:25 +0000 (15:56 +0530)]
net/octeontx2: add flow mbox utility functions

Adding mailbox utility functions for rte_flow. These will be used
to alloc, reserve and write the entries to the device on request.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add flow utility functions
Kiran Kumar K [Wed, 26 Jun 2019 10:25:03 +0000 (15:55 +0530)]
net/octeontx2: add flow utility functions

First pass rte_flow utility functions for octeontx2.
These will be used to communicate with AF driver.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: introduce flow driver
Kiran Kumar K [Wed, 26 Jun 2019 10:23:09 +0000 (15:53 +0530)]
net/octeontx2: introduce flow driver

Introducing flow infra for octeontx2.
This will be used to maintain rte_flow rules.

Create, destroy, validate, query, flush, isolate flow operations
will be supported.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: add remaining PTP operations
Harman Kalra [Fri, 31 May 2019 08:47:15 +0000 (14:17 +0530)]
net/octeontx2: add remaining PTP operations

Add remaining PTP configuration/slowpath operations.
Timesync feature is available only for PF devices.

Signed-off-by: Harman Kalra <hkalra@marvell.com>
Signed-off-by: Zyta Szpak <zyta@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: support base PTP
Harman Kalra [Fri, 31 May 2019 08:24:42 +0000 (13:54 +0530)]
net/octeontx2: support base PTP

Add PTP enable and disable operations.

Signed-off-by: Harman Kalra <hkalra@marvell.com>
Signed-off-by: Zyta Szpak <zyta@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: support flow control
Vamsi Attunuru [Fri, 31 May 2019 07:15:10 +0000 (12:45 +0530)]
net/octeontx2: support flow control

Add flow control operations and exposed
otx2_nix_update_flow_ctrl_mode() to enable on the
configured mode in dev_start().

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add module EEPROM dump
Vamsi Attunuru [Fri, 31 May 2019 07:01:49 +0000 (12:31 +0530)]
net/octeontx2: add module EEPROM dump

Add module EEPROM dump operation.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add Rx and Tx descriptor operations
Jerin Jacob [Fri, 31 May 2019 06:41:22 +0000 (12:11 +0530)]
net/octeontx2: add Rx and Tx descriptor operations

Add Rx and Tx queue descriptor related operations.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
4 years agonet/octeontx2: add queue info and pool supported ops
Nithin Dabilpuram [Fri, 31 May 2019 06:16:55 +0000 (11:46 +0530)]
net/octeontx2: add queue info and pool supported ops

Add Rx and Tx queue info get and pool ops supported operations.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
4 years agonet/octeontx2: support packet type
Jerin Jacob [Thu, 30 May 2019 06:54:11 +0000 (12:24 +0530)]
net/octeontx2: support packet type

The fields from CQE needs to be converted to
ptype and rx ol flags in mbuf. This patch adds
create lookup memory for those items to be
used in Fastpath.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Harman Kalra <hkalra@marvell.com>
4 years agonet/octeontx2: enable Tx through traffic manager
Krzysztof Kanas [Sun, 26 May 2019 17:34:42 +0000 (23:04 +0530)]
net/octeontx2: enable Tx through traffic manager

This patch enables pkt transmit through traffic manager
hierarchy by clearing software XOFF on the nodes and linking
tx queues to corresponding leaf nodes.
It also adds support to start and stop tx queue using
traffic manager.

Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: configure TM HW resources
Nithin Dabilpuram [Sun, 26 May 2019 16:49:40 +0000 (22:19 +0530)]
net/octeontx2: configure TM HW resources

This patch sets up and configure hierarchy in hw
nodes. Since all the registers are with RVU AF,
register configuration is also done using mbox
communication.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
4 years agonet/octeontx2: alloc and free TM HW resources
Krzysztof Kanas [Sun, 26 May 2019 06:56:36 +0000 (12:26 +0530)]
net/octeontx2: alloc and free TM HW resources

Allocate and free shaper/scheduler hardware resources for
nodes of hierarchy levels in sw.

Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: introduce traffic manager
Nithin Dabilpuram [Wed, 29 May 2019 17:19:53 +0000 (22:49 +0530)]
net/octeontx2: introduce traffic manager

Introduce traffic manager infra and default hierarchy
creation.

Upon ethdev configure, a default hierarchy is
created with one-to-one mapped tm nodes. This topology
will be overridden when user explicitly creates and commits
a new hierarchy using rte_tm interface.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
4 years agonet/octeontx2: add queue start and stop operations
Nithin Dabilpuram [Wed, 29 May 2019 17:04:51 +0000 (22:34 +0530)]
net/octeontx2: add queue start and stop operations

Add queue start and stop operations. Tx queue needs
to update the flow control value, Which will be
added in sub subsequent patch.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: handle port reconfigure
Vamsi Attunuru [Wed, 29 May 2019 16:45:32 +0000 (22:15 +0530)]
net/octeontx2: handle port reconfigure

setup tx & rx queues with the previous configuration during
port reconfig, it handles cases like port reconfigure without
reconfiguring tx & rx queues.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add Tx queue setup and release
Jerin Jacob [Wed, 29 May 2019 13:00:23 +0000 (18:30 +0530)]
net/octeontx2: add Tx queue setup and release

Add Tx queue setup and release.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add Rx queue setup and release
Jerin Jacob [Wed, 29 May 2019 12:44:20 +0000 (18:14 +0530)]
net/octeontx2: add Rx queue setup and release

Add Rx queue setup and release.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: support RSS
Vamsi Attunuru [Wed, 29 May 2019 11:36:05 +0000 (17:06 +0530)]
net/octeontx2: support RSS

Add RSS support and expose RSS related functions
to implement RSS action for rte_flow driver.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
4 years agonet/octeontx2: add unicast MAC filter
Sunil Kumar Kori [Wed, 29 May 2019 11:21:55 +0000 (16:51 +0530)]
net/octeontx2: add unicast MAC filter

Add unicast MAC filter for PF device and
update the respective feature list.

Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add promiscuous and allmulticast mode
Vamsi Attunuru [Wed, 29 May 2019 10:27:54 +0000 (15:57 +0530)]
net/octeontx2: add promiscuous and allmulticast mode

Add promiscuous and allmulticast mode for PF devices and
update the respective feature list.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add extended stats operations
Kiran Kumar K [Wed, 29 May 2019 09:29:27 +0000 (14:59 +0530)]
net/octeontx2: add extended stats operations

Add extended operations and updated the feature list.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: add basic stats operation
Kiran Kumar K [Wed, 29 May 2019 08:59:29 +0000 (14:29 +0530)]
net/octeontx2: add basic stats operation

Add basic stat operation and updated the feature list.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: add link stats operations
Vamsi Attunuru [Wed, 29 May 2019 08:05:08 +0000 (13:35 +0530)]
net/octeontx2: add link stats operations

Add link stats related operations and mark respective
items in the documentation.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: support register dump
Kiran Kumar K [Wed, 29 May 2019 06:29:17 +0000 (11:59 +0530)]
net/octeontx2: support register dump

Add register dump support and mark Registers dump in features.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/octeontx2: add context debug utils
Jerin Jacob [Wed, 29 May 2019 05:19:41 +0000 (10:49 +0530)]
net/octeontx2: add context debug utils

Add RQ,SQ,CQ context and CQE structure dump utils.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
4 years agonet/octeontx2: handle queue specific error interrupts
Jerin Jacob [Wed, 29 May 2019 05:00:14 +0000 (10:30 +0530)]
net/octeontx2: handle queue specific error interrupts

Handle queue specific error interrupts.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add device configure operation
Jerin Jacob [Wed, 29 May 2019 03:38:14 +0000 (09:08 +0530)]
net/octeontx2: add device configure operation

Add device configure operation. This would call lf_alloc
mailbox to allocate a NIX LF and upon return, AF will
return the attributes for the select LF.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add info get operation
Jerin Jacob [Tue, 28 May 2019 15:55:50 +0000 (21:25 +0530)]
net/octeontx2: add info get operation

Add device information get operation.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Harman Kalra <hkalra@marvell.com>
4 years agonet/octeontx2: handle device error interrupts
Jerin Jacob [Tue, 28 May 2019 14:20:07 +0000 (19:50 +0530)]
net/octeontx2: handle device error interrupts

Handle device specific error and ras interrupts.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Harman Kalra <hkalra@marvell.com>
4 years agonet/octeontx2: add devargs parsing functions
Jerin Jacob [Tue, 28 May 2019 14:02:32 +0000 (19:32 +0530)]
net/octeontx2: add devargs parsing functions

add various devargs command line options supported by this driver.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: add device init and uninit
Jerin Jacob [Tue, 28 May 2019 12:38:35 +0000 (18:08 +0530)]
net/octeontx2: add device init and uninit

Add basic init and uninit function which includes
attaching LF device to probed PCIe device.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
4 years agonet/octeontx2: add ethdev probe and remove
Jerin Jacob [Tue, 28 May 2019 11:13:13 +0000 (16:43 +0530)]
net/octeontx2: add ethdev probe and remove

add basic PCIe ethdev probe and remove.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet/octeontx2: add build and doc infrastructure
Jerin Jacob [Tue, 28 May 2019 08:55:22 +0000 (14:25 +0530)]
net/octeontx2: add build and doc infrastructure

Adding bare minimum PMD library and doc build infrastructure
and claim the maintainership for octeontx2 PMD.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
4 years agonet/i40e: fix crash when TxQ/RxQ set to 0 in VF
Andy Pei [Thu, 4 Jul 2019 01:38:39 +0000 (09:38 +0800)]
net/i40e: fix crash when TxQ/RxQ set to 0 in VF

Testpmd would stuck and result in core dump when user specifies an
invalid VF queue number, for example when setting txq or rxq to 0.
When txq or rxq is set to 0, pointer of pointer rxq or txq in
function i40evf_configure_vsi_queues is NULL. The usage of txq[i]
or rxq[0] is valid. This patch fixes this issue.

Fixes: d6b19729093e ("i40evf: support configurable crc stripping")
Cc: stable@dpdk.org
Signed-off-by: Andy Pei <andy.pei@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
4 years agonet/netvsc: fix definition of offload values
Stephen Hemminger [Wed, 3 Jul 2019 15:50:01 +0000 (08:50 -0700)]
net/netvsc: fix definition of offload values

The definition of ipsec and rsc offloads was incorrect.
Neither one of these is used by current driver, but the values
should be fixed now for future RSC support.

Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agomaintainers: update for Mellanox
Shahaf Shuler [Thu, 4 Jul 2019 10:01:04 +0000 (10:01 +0000)]
maintainers: update for Mellanox

Due to position change, cannot be a full time maintainer anymore.
The git tree dpdk-next-net-mlx will be managed by Raslan,
as approved by the DPDK Technical Board.
For mlx5 PMD, Slava is added as additional maintainer.

Will continue to be involved in the DPDK community in different ways.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agoapp/testpmd: fix MPLS IPv4 encapsulation fields
Saleh Alsouqi [Thu, 4 Jul 2019 07:33:22 +0000 (07:33 +0000)]
app/testpmd: fix MPLS IPv4 encapsulation fields

Having version and ihl set to 0 would result in a
corrupted/incorrect encapsulating packet for MPLS,
this commit sets these fields to 4 and 5 respectively
as defined in librte_net/rte_ip.h.

Fixes: 3e77031be855 ("app/testpmd: add MPLSoGRE encapsulation")
Fixes: a1191d39cb57 ("app/testpmd: add MPLSoUDP encapsulation")
Cc: stable@dpdk.org
Signed-off-by: Saleh Alsouqi <salehals@mellanox.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agonet: define IPv4 IHL and VHL
Saleh Alsouqi [Thu, 4 Jul 2019 07:33:19 +0000 (07:33 +0000)]
net: define IPv4 IHL and VHL

Define IPv4 Minimum IHL and VHL according to rfc791 (see [1])

    "The Version field indicates the format of the
    internet header."

    "Internet Header Length (ihl) is the length of the
    internet header in 32 bit words, and thus points
    to the beginning of the data. Note that
    the minimum value for a correct header is 5."

[1] https://tools.ietf.org/html/rfc791

Signed-off-by: Saleh Alsouqi <salehals@mellanox.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agoethdev: support dynamic configuration of QinQ strip
Vivek Sharma [Tue, 2 Jul 2019 03:37:07 +0000 (09:07 +0530)]
ethdev: support dynamic configuration of QinQ strip

Enable missing support for runtime configuration (setting/getting)
of QinQ strip rx offload for a given ethdev.

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
4 years agoethdev: allow action with any config object type
Dekel Peled [Tue, 2 Jul 2019 14:17:26 +0000 (17:17 +0300)]
ethdev: allow action with any config object type

In current implementation, an action which requires parameters
must accept them enclosed in a structure.
Some actions require a single, trivial type parameter, but it still
must be enclosed in a structure.
This obligation results in multiple, action-specific structures, each
containing a single trivial type parameter.

This patch introduces a new approach, allowing an action configuration
object of any type, trivial or a structure.

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
4 years agonet/af_packet: set default block size to page size
Krzysztof Kanas [Mon, 24 Jun 2019 14:32:00 +0000 (16:32 +0200)]
net/af_packet: set default block size to page size

Kernel validates block size to be aligned to page size. Code works on
platforms with page size 4k, but on others e.g. Arm64 fails with default
parameters.

Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agonet/mlx5: modify TCP header using Direct Verbs
Dekel Peled [Tue, 2 Jul 2019 14:44:28 +0000 (17:44 +0300)]
net/mlx5: modify TCP header using Direct Verbs

This patch implements additional actions of packet header
modifications.

Add actions:
- INC_TCP_SEQ - Increase sequence number in the outermost TCP header.
- DEC_TCP_SEQ - Decrease sequence number in the outermost TCP header.
- INC_TCP_ACK - Increase acknowledgment number in the outermost TCP
header.
- DEC_TCP_ACK - Decrease acknowledgment number in the outermost TCP
header.

Original work by Xiaoyu Min.

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
4 years agoapp/testpmd: add actions to modify TCP header fields
Dekel Peled [Tue, 2 Jul 2019 14:44:27 +0000 (17:44 +0300)]
app/testpmd: add actions to modify TCP header fields

Add actions:
- INC_TCP_SEQ - Increase sequence number in the outermost TCP header.
- DEC_TCP_SEQ - Decrease sequence number in the outermost TCP header.
- INC_TCP_ACK - Increase acknowledgment number in the outermost TCP
                header.
- DEC_TCP_ACK - Decrease acknowledgment number in the outermost TCP
                header.

Original work by Xiaoyu Min.

This patch uses the new approach introduced by [1], using a new
macro ARG_ENTRY_HTON to pass a single integer argument to each of
the new actions.

[1] http://patches.dpdk.org/patch/55882/

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
4 years agoethdev: add actions to modify TCP header fields
Dekel Peled [Tue, 2 Jul 2019 14:44:26 +0000 (17:44 +0300)]
ethdev: add actions to modify TCP header fields

Add actions:
- INC_TCP_SEQ - Increase sequence number in the outermost TCP header.
- DEC_TCP_SEQ - Decrease sequence number in the outermost TCP header.
- INC_TCP_ACK - Increase acknowledgment number in the outermost TCP
header.
- DEC_TCP_ACK - Decrease acknowledgment number in the outermost TCP
header.

Original work by Xiaoyu Min.

This patch uses the new approach introduced by [1], using a simple
integer instead of using an action-specific structure for each of
the new actions.

[1] http://patches.dpdk.org/patch/55882/

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
4 years agodoc: announce infinite Rx pcap
Cian Ferriter [Wed, 3 Jul 2019 11:04:16 +0000 (12:04 +0100)]
doc: announce infinite Rx pcap

This feature was added in the following commit:
commit a3f5252e5cbd ("net/pcap: enable infinitely Rx a pcap file")

Signed-off-by: Cian Ferriter <cian.ferriter@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agonet/sfc: release port upon close
Andrew Rybchenko [Fri, 21 Jun 2019 09:40:41 +0000 (10:40 +0100)]
net/sfc: release port upon close

Set RTE_ETH_DEV_CLOSE_REMOVE upon probe so all the resources
for the port can be freed by rte_eth_dev_close() and the ethdev
port freed.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
4 years agonet/sfc: ensure that device is closed on removal
Andrew Rybchenko [Fri, 21 Jun 2019 09:40:40 +0000 (10:40 +0100)]
net/sfc: ensure that device is closed on removal

PCI device may be unplugged when ethdev is not closed yet.

Fixes: aaa3f5f0f79d ("net/sfc: add configure and close stubs")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
4 years agoethdev: avoid error on PCI unplug of closed port
Andrew Rybchenko [Fri, 21 Jun 2019 09:40:39 +0000 (10:40 +0100)]
ethdev: avoid error on PCI unplug of closed port

If PCI Ethernet device driver removes it on close
(RTE_ETH_DEV_CLOSE_REMOVE) and later PCI device itself is unplugged,
it should not fail because of Ethernet device is already removed.

Fixes: 23ea57a2a0ce ("ethdev: complete closing of port")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reported-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agodoc: fix build with latest meson
Bruce Richardson [Fri, 5 Jul 2019 15:56:55 +0000 (16:56 +0100)]
doc: fix build with latest meson

The latest versions of meson don't build targets when build_by_default is
false but install is true, unlike older versions. We can fix this by having
both build_by_default and install settings come from the build-time option.

Bugzilla ID: 303
Fixes: d02a2dab2dfb ("doc: support building HTML guides with meson")
Fixes: 720b14db3ae2 ("build: generate API documentation with meson")
Cc: stable@dpdk.org
Reported-by: Ali Alnubani <alialnu@mellanox.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agotimer: fix resource leak in finalize
Anatoly Burakov [Fri, 5 Jul 2019 17:22:44 +0000 (18:22 +0100)]
timer: fix resource leak in finalize

Currently, whenever timer library is initialized, the memory
is leaked because there is no telling when primary or secondary
processes get to use the state, and there is no way to
initialize/deinitialize timer library state without race
conditions [1] because the data itself must live in shared memory.

Add a spinlock to the shared mem config to have a way to
exclusively initialize/deinitialize the timer library without
any races, and implement the synchronization mechanism based
on this lock in the timer library.

Also, update the API doc. Note that the behavior of the API
itself did not change - the requirement to call init in every
process was simply not documented explicitly.

[1] See the following email thread:
https://mails.dpdk.org/archives/dev/2019-May/131498.html

Fixes: c0749f7096c7 ("timer: allow management in shared memory")
Cc: stable@dpdk.org
Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: prevent different primary/secondary process versions
Anatoly Burakov [Fri, 5 Jul 2019 17:26:27 +0000 (18:26 +0100)]
eal: prevent different primary/secondary process versions

Currently, nothing stops DPDK to attempt to run primary and
secondary processes while having different versions. This
can lead to all sorts of weird behavior and makes it harder
to maintain compatibility without breaking ABI every once
in a while.

Fix it by explicitly disallowing running different DPDK
versions as primary and secondary processes.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: unify internal config init
Anatoly Burakov [Fri, 5 Jul 2019 13:10:34 +0000 (14:10 +0100)]
eal: unify internal config init

Currently, each EAL will update internal/shared config in their
own way at init, resulting in needless duplication of code and
OS-dependent behavior. Move the functions to a common file and
add missing FreeBSD steps.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: unify wait for complete init
Anatoly Burakov [Fri, 5 Jul 2019 13:10:33 +0000 (14:10 +0100)]
eal: unify wait for complete init

Currently, mcfg completion function exists in two independent
implementations doing the same thing, which is bug prone.
Unify the two functions and move them into one place.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: uninline wait for complete init
Anatoly Burakov [Fri, 5 Jul 2019 13:10:32 +0000 (14:10 +0100)]
eal: uninline wait for complete init

Currently, the function to wait until config completion is
static inline for no reason. Move its implementation to
an EAL common file.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: remove packed attribute from mcfg structure
Anatoly Burakov [Fri, 5 Jul 2019 13:10:31 +0000 (14:10 +0100)]
eal: remove packed attribute from mcfg structure

There is no reason to pack the memconfig structure, and doing so
gives out warnings in some static analyzers. Fix it by removing
the packed attributed.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: hide shared memory config
Anatoly Burakov [Fri, 5 Jul 2019 13:10:30 +0000 (14:10 +0100)]
eal: hide shared memory config

Now that everything that has ever accessed the shared memory
config is doing so through the public API's, we can make it
internal. Since we're removing quite a few headers from
rte_eal_memconfig.h, we need to add them back in places
where this header is used.

This bumps the ABI, so also change all build files and make
update documentation.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: add API to lock/unlock mempool list
Anatoly Burakov [Fri, 5 Jul 2019 13:10:29 +0000 (14:10 +0100)]
eal: add API to lock/unlock mempool list

Currently, in order to lock access to the mempool list, a direct
access to the shared memory structure is needed. Add an API to do
the same, and search-and-replace all usages.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal: add API to lock/unlock tailq list
Anatoly Burakov [Fri, 5 Jul 2019 13:10:28 +0000 (14:10 +0100)]
eal: add API to lock/unlock tailq list

Currently, locking/unlocking the TAILQ list requires direct
access to the shared memory config. Add an API to do the same,
and search-and-replace all usages.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agomem: add API to lock/unlock memory hotplug
Anatoly Burakov [Fri, 5 Jul 2019 13:10:27 +0000 (14:10 +0100)]
mem: add API to lock/unlock memory hotplug

Currently, the memory hotplug is locked automatically by all
memory-related _walk() functions, but sometimes locking the
memory subsystem outside of them is needed. There is no
public API to do that, so it creates a dependency on shared
memory config to be public. Fix this by introducing a new
API to lock/unlock the memory hotplug subsystem.

Create a new common file for all things mem config, and a
new API namespace rte_mcfg_*, and search-and-replace all
usages of the locks with the new API.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agobus/pci: consider only usable devices for IOVA mode
Ben Walker [Fri, 14 Jun 2019 09:39:17 +0000 (11:39 +0200)]
bus/pci: consider only usable devices for IOVA mode

When selecting the preferred IOVA mode of the pci bus, the current
heuristic ("are devices bound?", "are devices bound to UIO?", "are pmd
drivers supporting IOVA as VA?" etc..) should honor the device
white/blacklist so that an unwanted device does not impact the decision.

There is no reason to consider a device which has no driver available.

This applies to all OS, so implements this in common code then call a
OS specific callback.

On Linux side:
- the VFIO special considerations should be evaluated only if VFIO
  support is built,
- there is no strong requirement on using VA rather than PA if a driver
  supports VA, so defaulting to DC in such a case.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: compute IOVA mode based on PA availability
Ben Walker [Fri, 14 Jun 2019 09:39:16 +0000 (11:39 +0200)]
eal: compute IOVA mode based on PA availability

Currently, if the bus selects IOVA as PA, the memory init can fail when
lacking access to physical addresses.
This can be quite hard for normal users to understand what is wrong
since this is the default behavior.

Catch this situation earlier in eal init by validating physical addresses
availability, or select IOVA when no clear preferrence had been expressed.

The bus code is changed so that it reports when it does not care about
the IOVA mode and let the eal init decide.

In Linux implementation, rework rte_eal_using_phys_addrs() so that it can
be called earlier but still avoid a circular dependency with
rte_mem_virt2phys().
In FreeBSD implementation, rte_eal_using_phys_addrs() always returns
false, so the detection part is left as is.

If librte_kni is compiled in and the KNI kmod is loaded,
- if the buses requested VA, force to PA if physical addresses are
  available as it was done before,
- else, keep iova as VA, KNI init will fail later.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agokni: abort when IOVA is not PA
David Marchand [Fri, 14 Jun 2019 09:39:15 +0000 (11:39 +0200)]
kni: abort when IOVA is not PA

If a forced iova-mode has been passed at init, kni is not supposed to
work.

Fixes: 075b182b54ce ("eal: force IOVA to a particular mode")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
4 years agomem: fix typo in API description
David Marchand [Fri, 5 Jul 2019 09:18:42 +0000 (11:18 +0200)]
mem: fix typo in API description

Fixes: 552afc420a67 ("mem: add contig walk function")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoraw/ioat: fix icc build
Bruce Richardson [Fri, 5 Jul 2019 11:54:24 +0000 (12:54 +0100)]
raw/ioat: fix icc build

When using _mm_set_epi64() rather than _mm_set_epi64x() intrinsic, ICC
tries to use the x87 floating point registers, leading to warnings about
not properly clearing value when switching between x87 and SSE/AVX modes.

error #13203: No EMMS instruction before call to function

Fix this by using the set64x() intrinsic.

Fixes: 0a92e63fc4cd ("raw/ioat: add local API to perform copies")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Tested-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoexamples/ntb: add example for NTB
Xiaoyun Li [Tue, 2 Jul 2019 06:25:21 +0000 (14:25 +0800)]
examples/ntb: add example for NTB

Enable an example for rawdev ntb. Support interactive mode to send
file on one host and receive file from another host. The command line
would be 'send [filepath]' and 'receive [filepath]'.

But since the FIFO is not enabled right now, use rte_memcpy as the enqueue
and dequeue functions and only support transmitting file no more than 4M.

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
4 years agoraw/ntb: add handshake process
Xiaoyun Li [Tue, 2 Jul 2019 06:25:20 +0000 (14:25 +0800)]
raw/ntb: add handshake process

Add handshake process using doorbell so that two hosts can
communicate to start and stop.

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
4 years agoraw/ntb: support Intel NTB
Xiaoyun Li [Tue, 2 Jul 2019 06:25:19 +0000 (14:25 +0800)]
raw/ntb: support Intel NTB

Add in the list of registers for the device.
And enable NTB device ops for Intel Skylake platform.

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
4 years agoraw/ntb: introduce NTB raw device driver
Xiaoyun Li [Tue, 2 Jul 2019 06:25:17 +0000 (14:25 +0800)]
raw/ntb: introduce NTB raw device driver

Introduce rawdev driver support for NTB (Non-transparent Bridge) which
can help to connect two separate hosts with each other.

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
4 years agousertools: add octeontx2 DMA device binding
Jerin Jacob [Fri, 5 Jul 2019 08:38:05 +0000 (14:08 +0530)]
usertools: add octeontx2 DMA device binding

Update the devbind script with new section of DMA devices, also
added OCTEONTX2 DMA device ID to DMA device list

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Satha Rao <skoteshwar@marvell.com>