26799 Commits

Author SHA1 Message Date
Liron Himi
3e09b2a7dc net/mvpp2: support user defined configuration
Extend the config file with 'udf' (user-defined) settings

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
55e429ac7a net/mvpp2: skip QoS init if not requested
Skip qos init if not requested

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
cb932ddbe3 net/mvpp2: support raw flow pattern
Add support for RAW type and connect it to MUSDK UDF

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
a1559d13a1 net/mvpp2: move common functions to common location
Move common functions to common location

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
b57d1a8397 net/mvpp2: build flow table key along with rule
Currently the key is always built in network order
regardless of user input.
Besides the fact that it is not in user order,
it prevent future support for udf header between standard headers.
This patch builds the key while parsing the given rule.

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
e0ae4cf6a4 net/mvpp2: support generic flow pattern combinations
Currently only specific pattern combinations are supported.
This makes it hard to support additional pattern.
In addition there is no a real limitation that prevent any combination.
This patch iterate the input patterns and convert them to a mvpp2 API.

The doc doesn't describes those limitation so
just update the action list

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
d7eb4fb210 net/mvpp2: use generic name for global config variable
As the config file is not just for 'qos'
it is more accurate to replace the name from 'qos_cfg'
to 'cfg'

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
7da1aed6cc net/mvpp2: adjust number of unicast address
HW support 25 mac address for filtering plus one for
the primary mac address.

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Yuri Chipchev
8537663b1a net/mvpp2: add Tx flow control
Add tx flow control operations.

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
c2b5ae61c0 net/mvpp2: support DSA mode
Extend the config file with 'dsa-mode' field.
Currently 'eth' (default) and 'dsa' headers are supported.

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Liron Himi
45ea4c59e8 net/mvpp2: update Tx checksum
According to the dpdk spec, only 'ol_flags'
should be used for tx checksum generation

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Yuri Chipchev
ff0b8b10dc net/mvpp2: support VLAN offload
Enable VLAN filter configuration

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Yuri Chipchev
fc026401f4 net/mvpp2: support loopback
Add support for loopback mode

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Yuri Chipchev
5147cc7506 net/mvpp2: save initial configuration
Save configuration that was done prior 'start' as
only then the ppio is being configured.

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Yuri Chipchev
d2c37f739c net/mvpp2: align checking order
First check for 'isolated' and then for '!ppio'

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:11 +01:00
Yuri Chipchev
3617350353 net/mvpp2: do cosmetic changes to cookie usage
No need to add high address to cookie on transmit side, as it has
already 64bit value

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:10 +01:00
Yuri Chipchev
25ddbf199b net/mvpp2: update RSS tables reservation
In kernel-4.14 the pp2 kernel occupied 4 RSS tables
as opposed to 1 RSS table in older version.

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:10 +01:00
Liron Himi
1c9a958a8b net/mvpp2: fix frame size checking
Need to add CRC len to the frame-size to compare against
max_rx_pkt_len which includes it.

Fixes: 79ec62028b9a ("net/mvpp2: update MTU and MRU related calculations")
Cc: stable@dpdk.org

Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Yuri Chipchev <yuric@marvell.com>
2021-01-29 18:16:10 +01:00
Liron Himi
31536a6892 net/mvpp2: remove CRC length from MRU validation
CRC is being removed by HW before packet get
write to the buffer, so CRC len should not be
included in MRU validation

Fixes: 79ec62028b9a ("net/mvpp2: update MTU and MRU related calculations")
Cc: stable@dpdk.org

Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Yuri Chipchev <yuric@marvell.com>
2021-01-29 18:16:10 +01:00
Liron Himi
8fb1d5eba0 net/mvpp2: remove VLAN flush
VLAN-flush in MUSDK is not supported yet.
Until it does, the code should be removed as currently
an redundant error message is displayed.

Fixes: a8f3d6783a3c ("net/mrvl: support VLAN filtering")
Cc: stable@dpdk.org

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:10 +01:00
Liron Himi
fa876f3ae2 net/mvpp2: remove debug log on fast-path
In case of non-ip frame the current code reached the 'default'
case which result with function call to log a msg.
Those kind of calls should not be performed on fast-path.

The performance for this kind of frames increased by 50%

Fixes: acab7d58c81b ("net/mvpp2: convert to dynamic logging")
Cc: stable@dpdk.org

Signed-off-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:10 +01:00
Yuri Chipchev
8ce3c5db53 net/mvpp2: fix stack corruption
Fixes stack corruption in mrvl_fill_bpool function
in case num > MRVL_PP2_RXD_MAX

Fixes: c3637258d894 ("net/mrvl: fix Rx descriptors number")
Cc: stable@dpdk.org

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
2021-01-29 18:16:10 +01:00
Ajit Khaparde
2addc463ee net/bnxt: update copyright year
Update copyright year in various files.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
2021-01-29 18:16:10 +01:00
Heinrich Kuhn
147d898d67 net/nfp: free port private data on close
Free the private data of a port when the .dev_close() callback is
invoked. For NFP6000/4000 devices multiple ports may exist under a
single PF device. In this situation the PF resources will only be freed
when all the ports associated with the PF has been freed too.

PF hot plugging isn't explicitly supported for NFP6000/4000 devices but
all the private data of all the ports under the PF in question will be
freed upon device removal.

Signed-off-by: Heinrich Kuhn <heinrich.kuhn@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Reviewed-by: Louis Peens <louis.peens@netronome.com>
2021-01-29 18:16:10 +01:00
Heinrich Kuhn
5e15e799d6 net/nfp: create separate entity for PF device
Before this change memory for the private data of all physical ports
where allocated with single rte_zmalloc() call. Specific port private
data was accessed by means of an offset into this memory. This scheme is
problematic when attempting to free only one port's private data at a
time.

To address this, a new entity is created called struct nfp_pf_dev. This
struct represents the PF device. It has a number of PF specific members.
Notably it has a pointer of type rte_eth_dev that points to the eth_dev
associated with the first physical port of the device. It also has an
array of nfp_net_hw's containing pointers to all the physical ports
under the PF.

Memory is first allocated for the PF and PF specific initialization is
attempted. Next, all the physical ports under the PF is iterated and
memory is allocated separately for the private data of each port. Port 0
is skipped during this phase because memory has already been allocated
and an eth_dev already exits for the 0th port.

Signed-off-by: Heinrich Kuhn <heinrich.kuhn@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Reviewed-by: Louis Peens <louis.peens@netronome.com>
2021-01-29 18:16:10 +01:00
Andrew Boyer
7c3a867ba2 net/ionic: fix address handling in Tx
Don't assume standard headroom.
Use helper variables to improve readability.

Fixes: a27d901331da ("net/ionic: add Rx and Tx handling")
Cc: stable@dpdk.org
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
0de3e209af net/ionic: fix up function attribute tags
One function marked cold is in the hot path.
Make sure to always inline hot path functions.

Fixes: a27d901331da ("net/ionic: add Rx and Tx handling")
Cc: stable@dpdk.org

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
68591087ac net/ionic: convert per-queue offloads into queue flags
This will conserve resources by reducing struct ionic_qcq.

Saving a cacheline or two in the rxq and txq structs helps when
running in embedded configurations where CPU cache space is at a
premium.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
f603eebc43 net/ionic: allow separate L3 and L4 checksum offload
DTS, at least, expects to be able to specify L4 checksum offload
without L3 csum offload. Split up the flag checks.

Fixes: a27d901331da ("net/ionic: add Rx and Tx handling")
Cc: stable@dpdk.org

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
f3926b1f87 net/ionic: observe endiannness in ioread/iowrite
The IONIC FW is little-endian.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
d318c6464c net/ionic: inline queue space function
This is a hot-path function.
Remove ionic_q_has_space() while here.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
bef60d87ad net/ionic: inline queue flush function
This is hot-path function.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Signed-off-by: Neel Patel <neel@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
c5d1585035 net/ionic: query firmware for supported queue versions
This allows the PMD to better support FW changes.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Signed-off-by: Shannon Nelson <snelson@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
a27e0e96ab net/ionic: observe endianness in Rx filter
The IONIC firmware is little-endian.
Add a new field to struct ionic_rx_filter to store the CPU-endian
match type.
Use a local variable for the VLAN when searching the hash table.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
09f806e95d net/ionic: observe endianness in firmware commands
The IONIC firmware is little-endian.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Andrew Boyer
4c8f8d57f6 net/ionic: strip out unneeded interrupt code
Only the NotifyQ uses an interrupt, so simplify the other queues.

Simplify ionic_dev_cmd_adminq_init() and ionic_cq_init().
Move ionic_intr_alloc() into ionic_notify_qcq_alloc().
Create ionic_lif_notifyq_deinit().
Simplify ionic_lif_qcq_deinit().
Remove unneeded flags and defines.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
2021-01-29 18:16:10 +01:00
Matan Azrad
f00e5a15af vdpa/mlx5: fix configuration mutex cleanup
When the vDPA device is closed, the driver polling thread is canceled.
The polling thread locks the configuration mutex while it polls the CQs.

When the cancellation happens, it may terminate the thread inside the
critical section what remains the configuration mutex locked.

After device close, the driver may be configured again, in this case,
for example, when the first queue state is updated, the driver tries to
lock the mutex again and deadlock appears.

Initialize the mutex after the polling thread cancellation.

Fixes: 99abbd62c272 ("vdpa/mlx5: fix queue update synchronization")
Cc: stable@dpdk.org

Signed-off-by: Matan Azrad <matan@nvidia.com>
Acked-by: Xueming Li <xuemingl@nvidia.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2021-01-29 18:16:10 +01:00
Joyce Kong
1790c29e2a net/virtio: fix Arm build with old compiler
In file included from ../drivers/net/virtio/virtio_rxtx_packed.c:22:0:
../drivers/net/virtio/virtio_rxtx_packed_neon.h:
In function ‘virtqueue_enqueue_batch_packed_vec’:
../drivers/net/virtio/virtio_rxtx_packed_neon.h:74:2: warning:
implicit declaration of function ‘vreinterpretq_p128_u32’
[-Wimplicit-function-declaration]
poly128_t cmp1 = vreinterpretq_p128_u32(~vceqq_u32(ref_seg, def_ref_seg));

The message shows ‘vreinterpretq_p128_u32’ intrinsic is not supported
because an old version gcc (gcc 4.8.5) is used. So fix the issue with
implementing the logic with other intrinsics.

Bugzilla ID: 621
Fixes: 530887469350 ("net/virtio: add vectorized packed ring NEON Tx")
Fixes: 5971ce5e2a59 ("net/virtio: add vectorized packed ring NEON Rx")

Reported-by: Subhi Masri <subhim@nvidia.com>
Signed-off-by: Joyce Kong <joyce.kong@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Subhi Masri <subhim@nvidia.com>
2021-01-29 18:16:10 +01:00
Cheng Jiang
a68ba8e0a6 examples/vhost: refactor vhost data path
Change the vm2vm data path to batch enqueue for better performance.
Support latest async vhost API, refactor vhost async data path,
replace rte_atomicNN_xxx to __atomic_XXX and clean some codes.

Signed-off-by: Cheng Jiang <cheng1.jiang@intel.com>
Reviewed-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2021-01-29 18:16:09 +01:00
Cheng Jiang
2aa47e94bf examples/vhost: add ioat ring space count and check
Add ioat ring space count and check, if ioat ring space is not enough
for the next async vhost packet enqueue, then just return to prevent
enqueue failure. Add rte_ioat_completed_ops() fail handler.

Signed-off-by: Cheng Jiang <cheng1.jiang@intel.com>
Reviewed-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
2e4c1b50d4 net/virtio: handle virtio-user setup failure properly
This patch fixes virtio_user_dev_setup() error path,
by cleaning all resources it allocates. It introduces
virtio_user_dev_uninit_notify() that cleans all open
FDs. It implies assigning all FDs to -1 at init time.

With these changes done, virtio_user_dev_init_notify()
can be simplified.

Suggested-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
432a195f09 net/virtio: improve vhost-user error logging
This patch improves error logging in vhost_user_read,
especially printing errno when recv() fails.

Suggested-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
4173c55ac8 net/virtio: move vhost-vDPA data to its backend
As done earlier for Vhost-user and Vhost-kernel, this
patch moves the Vhost-vDPA specific data to its backend
file.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
86388a3a83 net/virtio: move vhost-kernel data to its backend
As done earlier for Vhost-user, this patch moves the
Vhost-Kernel specific data to its backend file.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
949735312f net/virtio: move vhost-user specifics to its backend
This patch moves all the Vhost-user backend specific
logic like Vhost FD, listen FD and interrupt handling
to the vhost-user backend implementation.

In order to achieve that, new ops are created to update
the link status, disconnect and reconnect the server,
and fetch the link state interrupt FD.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
748e5ea58a net/virtio: introduce backend data
The goal of this patch is to introduce backend-specific
data in order to better isolate what is backend-specific
from what is generic to Virtio-user.

For now, only Vhost-user protocol features are moved to
Vhost-user backend data.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
5b75b63c32 net/virtio: move protocol features to vhost-user
Since only protocol features are specific to Vhost-user
backend, this patch moves all related code to Vhost-user
file.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
9af79db20f net/virtio: make server mode blocking
This patch makes the Vhost-user backend server mode
blocking at init, waiting for the client connection.

The goal is to make the driver more reliable, as without
waiting for client connection, the Virtio driver has to
assume the Vhost-user backend will support all the
features it has advertized, which could lead to undefined
behaviour.

For example, without this patch, if the user enables packed
ring Virtio feature but the backend does not support it,
the ring initialized by the driver will not be compatible
with the backend.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
47e2ad0748 net/virtio: move vhost-user requests to vhost-user backend
Now that we have a proper isolation of the backends,
we can move Vhost-user requests declaration to the
Vhost-user backend file.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00
Maxime Coquelin
a3fb6b1dfa net/virtio: improve virtio-user errors handling
This patch adds error logs and propagates errors reported
by the backend. It also adds the device path in error logs
to make it easier to distinguish which device is facing the
issue.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-01-29 18:16:09 +01:00