dpdk.git
5 years agovhost: clear batch copy index at copy time
Maxime Coquelin [Fri, 6 Jul 2018 07:07:13 +0000 (09:07 +0200)]
vhost: clear batch copy index at copy time

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: make indirect desc table copy desc type agnostic
Maxime Coquelin [Fri, 6 Jul 2018 07:07:12 +0000 (09:07 +0200)]
vhost: make indirect desc table copy desc type agnostic

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: clear shadow used table index at flush time
Maxime Coquelin [Fri, 6 Jul 2018 07:07:11 +0000 (09:07 +0200)]
vhost: clear shadow used table index at flush time

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: add vring address setup for packed queues
Yuanhan Liu [Fri, 6 Jul 2018 07:07:10 +0000 (09:07 +0200)]
vhost: add vring address setup for packed queues

Add code to set up packed queues when enabled.

Signed-off-by: Yuanhan Liu <yliu@fridaylinux.org>
Signed-off-by: Jens Freimann <jfreimann@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: add helpers for packed virtqueues
Jens Freimann [Fri, 6 Jul 2018 07:07:09 +0000 (09:07 +0200)]
vhost: add helpers for packed virtqueues

Add some helper functions to check descriptor flags
and check if a vring is of type packed.

Signed-off-by: Jens Freimann <jfreimann@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: add virtio packed virtqueue defines
Jens Freimann [Fri, 6 Jul 2018 07:07:08 +0000 (09:07 +0200)]
vhost: add virtio packed virtqueue defines

Signed-off-by: Jens Freimann <jfreimann@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: improve prefetching in enqueue path
Maxime Coquelin [Fri, 6 Jul 2018 07:04:49 +0000 (09:04 +0200)]
vhost: improve prefetching in enqueue path

This is an optimization to prefetch next buffer while the
current one is being processed.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: prefetch first descriptor in dequeue path
Maxime Coquelin [Fri, 6 Jul 2018 07:04:48 +0000 (09:04 +0200)]
vhost: prefetch first descriptor in dequeue path

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: improve prefetching in dequeue path
Maxime Coquelin [Fri, 6 Jul 2018 07:04:47 +0000 (09:04 +0200)]
vhost: improve prefetching in dequeue path

This is an optimization to prefetch next buffer while the
current one is being processed.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: use buffer vectors in dequeue path
Maxime Coquelin [Fri, 6 Jul 2018 07:04:46 +0000 (09:04 +0200)]
vhost: use buffer vectors in dequeue path

To ease packed ring layout integration, this patch makes
the dequeue path to re-use buffer vectors implemented for
enqueue path.

Doing this, copy_desc_to_mbuf() is now ring layout type
agnostic.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agovhost: use shadow used ring in dequeue path
Maxime Coquelin [Fri, 6 Jul 2018 07:04:45 +0000 (09:04 +0200)]
vhost: use shadow used ring in dequeue path

Relax used ring contention by reusing the shadow used
ring feature used by enqueue path.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agodoc: update CRC feature with new offload flag
Ferruh Yigit [Wed, 4 Jul 2018 17:15:49 +0000 (18:15 +0100)]
doc: update CRC feature with new offload flag

Fixes: 3d12dceed2df ("ethdev: add new offload flag to keep CRC")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
5 years agoexamples: fix RSS hash function configuration
Ferruh Yigit [Wed, 4 Jul 2018 20:02:21 +0000 (21:02 +0100)]
examples: fix RSS hash function configuration

ethdev layer introduced checks for application requested RSS hash
functions and returns error for ones unsupported by hardware

This check breaks some sample applications which blindly configures
RSS hash functions without checking underlying hardware support.

Updated examples to mask out unsupported RSS has functions during device
configuration.
Prints a log if configuration values updated by this check.

Fixes: aa1a6d87f15d ("ethdev: force RSS offload rules again")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Meijuan Zhao <meijuanx.zhao@intel.com>
Tested-by: Yingya Han <yingyax.han@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
5 years agonet/bonding: do not clear active slave count
Chas Williams [Wed, 4 Jul 2018 02:28:32 +0000 (22:28 -0400)]
net/bonding: do not clear active slave count

When the bond PMD is stopped, the active slave count is reset.
For 802.3ad mode this potentially leaks memory and clears state since
a second sequential activate_slave() will occur when the bond PMD is
restarted and the LSC callback is triggered while the active slave
count is 0. To fix this, don't clear the active slave count when
stopping. Only deactivate_slave() should be used to clear the slaves.

Fixes: 2efb58cbab6e ("bond: new link bonding library")
Cc: stable@dpdk.org
Signed-off-by: Chas Williams <chas3@att.com>
5 years agonet/cxgbevf: add missing Tx byte counters
Rahul Lakkireddy [Fri, 29 Jun 2018 19:23:55 +0000 (00:53 +0530)]
net/cxgbevf: add missing Tx byte counters

Fixes: a0a344a8f728 ("net/cxgbe: add VF port statistics")
Cc: stable@dpdk.org
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: fix Rx channel map and queue type
Rahul Lakkireddy [Fri, 29 Jun 2018 19:23:54 +0000 (00:53 +0530)]
net/cxgbe: fix Rx channel map and queue type

Set the Rx channel map and ingress queue type properly to allow firmware
to manage the internal mapping correctly.

Fixes: 6c2809628cd5 ("net/cxgbe: improve latency for slow traffic")
Cc: stable@dpdk.org
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: query firmware for max queues available
Rahul Lakkireddy [Fri, 29 Jun 2018 19:23:53 +0000 (00:53 +0530)]
net/cxgbe: query firmware for max queues available

Query firmware for max Tx and Rx queues that can be allocated.
Move the code to determine max queues to common place for both
PF and VF.

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: enable more RSS hash functions
Rahul Lakkireddy [Fri, 29 Jun 2018 19:23:52 +0000 (00:53 +0530)]
net/cxgbe: enable more RSS hash functions

Enable RSS on IPv4 fragmented packets and IPv6 packets with extension
headers based on 2-tuple hash.

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: add link up and down ops
Rahul Lakkireddy [Fri, 29 Jun 2018 19:23:51 +0000 (00:53 +0530)]
net/cxgbe: add link up and down ops

Add ops to set link up and down for both PF and VF. If wait_to_complete
is set, poll for link update for up to 10 seconds max.

Original work by Surendra Mobiya <surendra@chelsio.com>

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: support to redirect packets to egress port
Shagun Agrawal [Fri, 29 Jun 2018 18:12:24 +0000 (23:42 +0530)]
net/cxgbe: support to redirect packets to egress port

Add action to redirect matched packets to specified egress physical
port without sending them to host.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: support to match on ingress physical port
Shagun Agrawal [Fri, 29 Jun 2018 18:12:23 +0000 (23:42 +0530)]
net/cxgbe: support to match on ingress physical port

Add support to match packets based on ingress physical port.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: support to flush flows in HASH region
Shagun Agrawal [Fri, 29 Jun 2018 18:12:22 +0000 (23:42 +0530)]
net/cxgbe: support to flush flows in HASH region

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: query hit counters for flows in HASH region
Shagun Agrawal [Fri, 29 Jun 2018 18:12:21 +0000 (23:42 +0530)]
net/cxgbe: query hit counters for flows in HASH region

Add interface to enable hit counters for flows offloaded in HASH
region.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: support to delete flows in HASH region
Shagun Agrawal [Fri, 29 Jun 2018 18:12:20 +0000 (23:42 +0530)]
net/cxgbe: support to delete flows in HASH region

Add interface to delete offloaded flows in HASH region. Use the
hash index saved during insertion to delete the corresponding flow.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: support to offload flows to HASH region
Shagun Agrawal [Fri, 29 Jun 2018 18:12:19 +0000 (23:42 +0530)]
net/cxgbe: support to offload flows to HASH region

Add interface to offload flows to HASH region. Translate internal
filter specification to requests to offload flows to HASH region.
Save the returned hash index of the offloaded flow for deletion later.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: add Compressed Local IP region
Shagun Agrawal [Fri, 29 Jun 2018 18:12:18 +0000 (23:42 +0530)]
net/cxgbe: add Compressed Local IP region

CLIP region holds destination IPv6 addresses to be matched for
corresponding flows. Query firmware for CLIP resources and allocate
table to manage them. Also update LE-TCAM to use CLIP to reduce
number of slots needed to offload IPv6 flows.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: validate flows offloaded to HASH region
Shagun Agrawal [Fri, 29 Jun 2018 18:12:17 +0000 (23:42 +0530)]
net/cxgbe: validate flows offloaded to HASH region

Fetch supported match items in HASH region. Ensure the mask
is all set for all the supported match items to be offloaded
to HASH region. Otherwise, offload them to LE-TCAM region.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agonet/cxgbe: query firmware for HASH filter resources
Shagun Agrawal [Fri, 29 Jun 2018 18:12:16 +0000 (23:42 +0530)]
net/cxgbe: query firmware for HASH filter resources

Fetch available HASH filter resources and allocate table for managing
them. Currently only supported on Chelsio T6 family of NICs.

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
5 years agoethdev: remove old offload API
Ferruh Yigit [Mon, 2 Jul 2018 21:27:50 +0000 (23:27 +0200)]
ethdev: remove old offload API

In DPDK 17.11, the ethdev offloads API has changed:
commit cba7f53b717d ("ethdev: introduce Tx queue offloads API")
commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API")
The new API is documented in the programmer's guide:
http://doc.dpdk.org/guides/prog_guide/poll_mode_drv.html#hardware-offload

For reminder, the main concepts in the new API were:
- All offloads are disabled by default
- Distinction between per port and per queue offloads.

The transition bits are now removed:
- Translation of the old API in ethdev
- rte_eth_conf.rxmode.ignore_offload_bitfield
- ETH_TXQ_FLAGS_IGNORE

The old API bits are now removed:
- Rx per-port rte_eth_conf.rxmode.[bit-fields]
- Tx per-queue rte_eth_txconf.txq_flags
- ETH_TXQ_FLAGS_NO*

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/fm10k: remove unused constant
Thomas Monjalon [Mon, 2 Jul 2018 21:27:49 +0000 (23:27 +0200)]
net/fm10k: remove unused constant

The macro FM10K_SIMPLE_TX_FLAG was used with old Tx queue flags.
It is no longer used and was forgotten when cleaning old Tx flags.

Fixes: 1778ef67e2e7 ("net/fm10k: remove dependence on Tx queue flags")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agoethdev: convert remaining apps to new offload API
Thomas Monjalon [Mon, 2 Jul 2018 21:27:48 +0000 (23:27 +0200)]
ethdev: convert remaining apps to new offload API

Some test applications and examples were not converted
to the new offload API introduced in 17.11.

For reference, see "Hardware Offload" in
doc/guides/prog_guide/poll_mode_drv.rst

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agotest: remove unused configuration for bonding
Thomas Monjalon [Mon, 2 Jul 2018 21:27:47 +0000 (23:27 +0200)]
test: remove unused configuration for bonding

The global variables rx_mode and fdir_conf
are not used in this test file.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agodoc: remove code from KNI example guide
Thomas Monjalon [Mon, 2 Jul 2018 21:27:46 +0000 (23:27 +0200)]
doc: remove code from KNI example guide

The example code is showing how to use KNI, and can be found in
examples/kni/
The documentation guide for this example is explaining the code
to ease the understanding of the example.
And inside this documentation, there are a lot of examples code
which are copy/pasted. It is really too much and hard to maintain.

The code inside this documentation is replaced by the name
of the functions.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agotest/virtual_pmd: report CRC strip capability
Phil Yang [Wed, 4 Jul 2018 01:31:45 +0000 (09:31 +0800)]
test/virtual_pmd: report CRC strip capability

Add DEV_RX_OFFLOAD_CRC_STRIP to virtual drivers since they don't
use CRC at all, when an application requires this offload virtual
PMDs should not return error.

Fixes: 3d12dceed2df ("ethdev: add new offload flag to keep CRC")

Signed-off-by: Phil Yang <phil.yang@arm.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/ark: use SPDX tags
Ed Czeck [Tue, 3 Jul 2018 21:36:42 +0000 (17:36 -0400)]
net/ark: use SPDX tags

Replace the BSD license header with the SPDX tag.

Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/sfc: support Rx descriptor status for EF10 ESSB datapath
Andrew Rybchenko [Fri, 29 Jun 2018 15:41:31 +0000 (16:41 +0100)]
net/sfc: support Rx descriptor status for EF10 ESSB datapath

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
5 years agonet/sfc: support ops to check ready descriptors in ESSB Rx
Andrew Rybchenko [Fri, 29 Jun 2018 15:41:30 +0000 (16:41 +0100)]
net/sfc: support ops to check ready descriptors in ESSB Rx

Implement EF10 ESSB Rx datapath callback to get number of pending
descriptors.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
5 years agonet/sfc: fix double-free in EF10 ESSB Rx queue purge
Andrew Rybchenko [Fri, 29 Jun 2018 15:41:06 +0000 (16:41 +0100)]
net/sfc: fix double-free in EF10 ESSB Rx queue purge

Number of buffers left in completed descriptor may be 0. If so,
all buffers of the descriptor are freed once again.

Fixes: 390f9b8d82c9 ("net/sfc: support equal stride super-buffer Rx mode")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
5 years agonet/sfc: discard packets with bad CRC on EF10 ESSB Rx
Andrew Rybchenko [Fri, 29 Jun 2018 15:27:05 +0000 (16:27 +0100)]
net/sfc: discard packets with bad CRC on EF10 ESSB Rx

Fixes: 390f9b8d82c9 ("net/sfc: support equal stride super-buffer Rx mode")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
5 years agonet/pcap: capture only ingress packets from Rx iface
Ido Goshen [Sun, 1 Jul 2018 11:05:34 +0000 (14:05 +0300)]
net/pcap: capture only ingress packets from Rx iface

Support rx of in direction packets only
Useful for apps that also tx to eth_pcap ports in order to not see them
echoed back in as rx when out direction is also captured

Example:
In case using rx_iface and sending *single* packet to eth1
it will loop forever as the when it is sent to tx_iface=eth1
it will be captured again on the rx_iface=eth1 and so on
  $RTE_TARGET/app/testpmd l 0-3 -n 4 \
--vdev 'net_pcap0,rx_iface=eth1,tx_iface=eth1'
  …
  ---------------------- Forward statistics for port 0  ------------
  RX-packets: 758            RX-dropped: 0             RX-total: 758
  TX-packets: 758            TX-dropped: 0             TX-total: 758
  ------------------------------------------------------------------
While if using rx_iface_in it will not be captured on the way out and
be forwarded only once
  $RTE_TARGET/app/testpmd l 0-3 -n 4 \
--vdev 'net_pcap0,rx_iface_in=eth1,tx_iface=eth1'
  …
  ---------------------- Forward statistics for port 0  ------------
  RX-packets: 1              RX-dropped: 0             RX-total: 1
  TX-packets: 1              TX-dropped: 0             TX-total: 1
  ------------------------------------------------------------------

Signed-off-by: Ido Goshen <ido@cgstowernetworks.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/sfc: cut non VLAN ID bits from TCI
Andrew Rybchenko [Fri, 29 Jun 2018 15:23:31 +0000 (16:23 +0100)]
net/sfc: cut non VLAN ID bits from TCI

TCI may contain PCP or DEI bits. Matching of these bits is not
supported, but the bits still may be set in specification value and
not covered by mask. So, these bits should be ignored.

Fixes: 894080975e1e ("net/sfc: support VLAN in flow API filters")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
5 years agoethdev: document xstats API assumption
Ferruh Yigit [Thu, 28 Jun 2018 14:16:02 +0000 (15:16 +0100)]
ethdev: document xstats API assumption

Documents the assumption that 'xstats[i].id == i' and
key=xstats_names[i].name, value=xstats[i].value

xstats[i].id is still used for xstats _by_id() APIs.

This patch reverts some part of the commit 6d52d1d4afb4 ("ethdev:
clarify extended statistics documentation")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: David Marchand <david.marchand@6wind.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
5 years agonet/virtio: improve offload check performance
Maxime Coquelin [Mon, 2 Jul 2018 15:25:47 +0000 (17:25 +0200)]
net/virtio: improve offload check performance

Instead of checking the multiple Virtio features bits for
every packet, let's do the check once at configure time and
store it in virtio_hw struct.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agonet/virtio: do not use simple Rx if TCP LRO or VLAN strip
Maxime Coquelin [Mon, 2 Jul 2018 15:25:46 +0000 (17:25 +0200)]
net/virtio: do not use simple Rx if TCP LRO or VLAN strip

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agonet/virtio: improve Tx offload features negotiation
Maxime Coquelin [Mon, 2 Jul 2018 15:25:45 +0000 (17:25 +0200)]
net/virtio: improve Tx offload features negotiation

This patch improves the Tx offload features selection depending
on whether the application request for offloads.

When the application doesn't request for Tx offload features,
the corresponding features bits aren't negotiated.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agonet/virtio: remove simple Tx path
Maxime Coquelin [Mon, 2 Jul 2018 15:25:44 +0000 (17:25 +0200)]
net/virtio: remove simple Tx path

The simple Tx path does not comply with the Virtio specification.
Now that VIRTIO_F_IN_ORDER feature is supported by the Virtio PMD,
let's use this optimized path instead.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
5 years agonet/mlx5: activate Verbs cleanup on removal
Matan Azrad [Mon, 2 Jul 2018 05:13:18 +0000 (05:13 +0000)]
net/mlx5: activate Verbs cleanup on removal

Starting from rdma-core v19, Mellanox OFED 4.4, the Verbs resources
cleanup is properly activated in plug-out process when setting the
MLX5_DEVICE_FATAL_CLEANUP environment variable to 1.

Set the aforementioned variable to 1.

Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
5 years agodoc: update release notes with new enic features
John Daley [Fri, 29 Jun 2018 09:29:44 +0000 (02:29 -0700)]
doc: update release notes with new enic features

Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Hyong Youb Kim <hyonkim@cisco.com>
5 years agonet/enic: cap Rx packet processing to end of desc ring
John Daley [Fri, 29 Jun 2018 09:29:43 +0000 (02:29 -0700)]
net/enic: cap Rx packet processing to end of desc ring

In the default Rx handler stop processing packets at the end of
the completion ring so that wrapping doesn't have to be checked
in the inner while loop.

Also, check the color bit in the completion without using a conditional.

Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Hyong Youb Kim <hyonkim@cisco.com>
5 years agonet/enic: add simple Rx handler
John Daley [Fri, 29 Jun 2018 09:29:42 +0000 (02:29 -0700)]
net/enic: add simple Rx handler

Add an optimized Rx handler for non-scattered Rx.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Signed-off-by: John Daley <johndale@cisco.com>
5 years agonet/enic: check maximum packet size in Tx prepare handler
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:41 +0000 (02:29 -0700)]
net/enic: check maximum packet size in Tx prepare handler

The default tx handler checks the maximum packet size. Check it in the
prepare handler too. WQ stops working if the app/driver tries to send
oversized packets, so these checks are unavoidable.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: add the simple version of Tx handler
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:40 +0000 (02:29 -0700)]
net/enic: add the simple version of Tx handler

Add a much-simplified handler that works when all offloads are
disabled, except mbuf fast free. When compared against the default
handler, under ideal conditions, cycles per packet drop by 60+%.
The driver tries to use the simple handler first.

The idea of using specialized/simplified handlers is from the Intel
and Mellanox drivers.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: reduce Tx completion updates
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:39 +0000 (02:29 -0700)]
net/enic: reduce Tx completion updates

Request one completion update per roughly 32 buffers. It saves DMA
resources on the NIC, PCIe utilization, and cache miss rates.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: support mbuf fast free offload
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:38 +0000 (02:29 -0700)]
net/enic: support mbuf fast free offload

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: use mbuf pointer array for inflight Tx packets
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:37 +0000 (02:29 -0700)]
net/enic: use mbuf pointer array for inflight Tx packets

WQ is currently using vnic_wq_buf to store mbuf pointers for Tx
packets. But, it contains an unused mempool pointer and mbuf is
unnecessarily cast to void pointer. Remove vnic_wq_buf entirely and
use an mbuf pointer array instead.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: add handlers to add/delete vxlan port number
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:36 +0000 (02:29 -0700)]
net/enic: add handlers to add/delete vxlan port number

The NIC has one configurable VXLAN port, which is set to the default
4789 upon vNIC reset. Adding a non-default port replaces this single
VXLAN port. Deleting the previously added non-default port restores
the VXLAN port to the hardware default.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: add devarg to specify ingress VLAN rewrite mode
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:35 +0000 (02:29 -0700)]
net/enic: add devarg to specify ingress VLAN rewrite mode

Add a new devarg "ig-vlan-rewrite" to allow the user to set
non-default rewrite mode. The UCS VIC may add/remove/modify the VLAN
header of an ingress packet depending on the ingress VLAN rewrite
mode.

By default, the driver sets the pass-through mode, which tells the NIC
"do not touch VLAN header and preserve it as is". This mode is usually
sufficient, but can complicate deployments for certain environments.
For example, OVS-DPDK in UCS blade environments may want to use "untag
default VLAN mode", which removes the VLAN header from an ingress
packet if it matches vNIC's default VLAN.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: report ring limits and preferred default values
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:34 +0000 (02:29 -0700)]
net/enic: report ring limits and preferred default values

Report min/max ring sizes, alignments, and so on, and rely on the
common checks implemented in the rte_ethdev layer.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: initialize RQ fetch index before enabling RQ
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:33 +0000 (02:29 -0700)]
net/enic: initialize RQ fetch index before enabling RQ

The fetch index must be initialized only when RQ is
disabled. Otherwise, it may lead to stale entries in IG descriptor
cache on the VIC.

Fixes: a74629cfa3a1 ("net/enic: enable RQ first and then post Rx buffers")
Cc: stable@dpdk.org
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: do not overwrite admin Tx queue limit
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:32 +0000 (02:29 -0700)]
net/enic: do not overwrite admin Tx queue limit

Currently, enic_alloc_wq (via rte_eth_tx_queue_setup) may overwrite
the admin limit with a lower value. This is wrong as seen in the
following sequence.

1. UCS admin-set Tx queue limit (config.wq_desc_count) = 4096
2. Set up tx queue with 512 descriptors
   The admin limit (config.wq_desc_count) becomes 512.
3. Stop ports and now set up Tx queue with 1024 descriptors.
   This fails because 1024 is greater than the admin limit (512).

Do not modify the admin limit, and when queried, report the current
number of descriptors instead of the admin limit. The rx queue setup
(enic_alloc_rq) does not this problem.

Fixes: fefed3d1e62c ("enic: new driver")
Cc: stable@dpdk.org
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: update the UDP RSS detection mechanism
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:31 +0000 (02:29 -0700)]
net/enic: update the UDP RSS detection mechanism

The UDP RSS interface has changed in the release firmware for 100G VIC
adapters. The capability bit is now in NIC_CFG. Also the driver is
supposed to use CMD_NIC_CFG_CHK and check if RSS config is
successful. No more changes are expected with respect to UDP RSS API.

Fixes: 94c351895888 ("net/enic: update UDP RSS controls")
Cc: stable@dpdk.org
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/enic: fix receive packet types
Hyong Youb Kim [Fri, 29 Jun 2018 09:29:30 +0000 (02:29 -0700)]
net/enic: fix receive packet types

Fix missing or incorrect packet types discovered by DTS.
- Non-IP inner packets
  Set the tunnel flag.
- Inner Ethernet packets
  All supported tunnel packets have Ethernet as inner packets. So, set
  INNER_L2_ETHER for all tunnel types.
- IPv4 fragments carrying TCP/UDP
  The NIC indicates TCP/UDP based on the protocol in IP header. For
  fragments, ignore that bit and always set L4_FRAG.
- IPv6 fragments
  The NIC does regconize fragments (IPv6 packets with fragment extension
  headers). Set packet types for these.

Fixes: 93fb21fdbe23 ("net/enic: enable overlay offload for VXLAN and GENEVE")
Cc: stable@dpdk.org
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
5 years agonet/mlx4: refine Rx packet type report
Moti Haimovsky [Thu, 28 Jun 2018 06:30:28 +0000 (09:30 +0300)]
net/mlx4: refine Rx packet type report

This commit refines the Rx Packet type flags reported by the PMD
for each packet being received in order to make the report more
accurate.

Signed-off-by: Moti Haimovsky <motih@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
5 years agonet/e1000: support descriptor status API
Wei Zhao [Fri, 29 Jun 2018 01:52:45 +0000 (09:52 +0800)]
net/e1000: support descriptor status API

rte_eth_rx_descritpr_status and rte_eth_tx_descriptor_status
are supported by igb VF.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
5 years agonet/fm10k: support descriptor status API
Wei Zhao [Mon, 2 Jul 2018 07:15:58 +0000 (15:15 +0800)]
net/fm10k: support descriptor status API

rte_eth_rx_descritpr_status and rte_eth_tx_descriptor_status
are supported by fm10K.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
5 years agonet/i40e: remove VF interrupt handler
Qi Zhang [Wed, 27 Jun 2018 13:15:27 +0000 (21:15 +0800)]
net/i40e: remove VF interrupt handler

For i40evf, internal rx interrupt and adminq interrupt share the same
source, that cause a lot cpu cycles be wasted on interrupt handler
on rx path. This is complained by customers which require low latency
(when set I40E_ITR_INTERVAL to small value), but have to be sufferred by
tremendous interrupts handling that eat significant CPU resources.

The patch disable pci interrupt and remove the interrupt handler,
replace it with a low frequency (50ms) interrupt polling daemon
which is implemented by registering a alarm callback periodly, this
save CPU time significently: On a typical x86 server with 2.1GHz CPU,
with low latency configure (32us) we saw CPU usage from top commmand
reduced from 20% to 0% on management core in testpmd).

Also with the new method we can remove compile option: I40E_ITR_INTERVAL
which is used to balance between low latency and low CPU usage previously.
Now we don't need it since we can reach both at same time.

Suggested-by: Jingjing Wu <jingjing.wu@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
5 years agonet/virtio: advertise support in-order feature
Marvin Liu [Mon, 2 Jul 2018 13:56:42 +0000 (21:56 +0800)]
net/virtio: advertise support in-order feature

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio: add in-order Rx/Tx into selection
Marvin Liu [Mon, 2 Jul 2018 13:56:41 +0000 (21:56 +0800)]
net/virtio: add in-order Rx/Tx into selection

After IN_ORDER Rx/Tx paths added, need to update Rx/Tx path selection
logic.

Rx path select logic: If IN_ORDER and merge-able are enabled will select
IN_ORDER Rx path. If IN_ORDER is enabled, Rx offload and merge-able are
disabled will select simple Rx path. Otherwise will select normal Rx
path.

Tx path select logic: If IN_ORDER is enabled will select IN_ORDER Tx
path. Otherwise will select default Tx path.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio: support in-order Rx and Tx
Marvin Liu [Mon, 2 Jul 2018 13:56:40 +0000 (21:56 +0800)]
net/virtio: support in-order Rx and Tx

IN_ORDER Rx function depends on merge-able feature. Descriptors
allocation and free will be done in bulk.

Virtio dequeue logic:
    dequeue_burst_rx(burst mbufs)
    for (each mbuf b) {
            if (b need merge) {
                    merge remained mbufs
                    add merged mbuf to return mbufs list
            } else {
                    add mbuf to return mbufs list
            }
    }
    if (last mbuf c need merge) {
            dequeue_burst_rx(required mbufs)
            merge last mbuf c
    }
    refill_avail_ring_bulk()
    update_avail_ring()
    return mbufs list

IN_ORDER Tx function can support offloading features. Packets which
matched "can_push" option will be handled by simple xmit function. Those
packets can't match "can_push" will be handled by original xmit function
with in-order flag.

Virtio enqueue logic:
    xmit_cleanup(used descs)
    for (each xmit mbuf b) {
            if (b can inorder xmit) {
                    add mbuf b to inorder burst list
                    continue
            } else {
                    xmit inorder burst list
                    xmit mbuf b by original function
            }
    }
    if (inorder burst list not empty) {
            xmit inorder burst list
    }
    update_avail_ring()

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio: extract common part for in-order functions
Marvin Liu [Mon, 2 Jul 2018 13:56:39 +0000 (21:56 +0800)]
net/virtio: extract common part for in-order functions

IN_ORDER virtio-user Tx function support Tx checksum offloading and
TSO which also support on normal Tx function. So extracts common part
into separated function for reuse.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio: free in-order descriptors before device start
Marvin Liu [Mon, 2 Jul 2018 13:56:38 +0000 (21:56 +0800)]
net/virtio: free in-order descriptors before device start

Add new function for freeing IN_ORDER descriptors. As descriptors will
be allocated and freed sequentially when IN_ORDER feature was
negotiated. There will be no need to utilize chain for freed descriptors
management, only index update is enough.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio-user: add mrg-rxbuf and in-order vdev parameters
Marvin Liu [Mon, 2 Jul 2018 13:56:37 +0000 (21:56 +0800)]
net/virtio-user: add mrg-rxbuf and in-order vdev parameters

Add parameters for configuring VIRTIO_NET_F_MRG_RXBUF and
VIRTIO_F_IN_ORDER feature bits. If feature is disabled, also update
corresponding unsupported feature bit.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio-user: add unsupported features mask
Marvin Liu [Mon, 2 Jul 2018 13:56:36 +0000 (21:56 +0800)]
net/virtio-user: add unsupported features mask

This patch introduces unsupported features mask for virtio-user device.
For virtio-user server mode, when reconnecting virtio-user will retrieve
vhost device features as base and then unmask unsupported features.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio: add in-order feature bit definition
Marvin Liu [Mon, 2 Jul 2018 13:56:35 +0000 (21:56 +0800)]
net/virtio: add in-order feature bit definition

If VIRTIO_F_IN_ORDER has been negotiated, driver will use descriptors in
ring order: starting from offset 0 in the table, and wrapping around at
the end of the table. Also introduce use_inorder_[rt]x flag for
selection of IN_ORDER [RT]x handlers.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agovhost: advertise support in-order feature
Marvin Liu [Mon, 2 Jul 2018 13:56:34 +0000 (21:56 +0800)]
vhost: advertise support in-order feature

If devices always use descriptors in the same order in which they have
been made available. These devices can offer the VIRTIO_F_IN_ORDER
feature. If negotiated, this knowledge allows devices to notify the use
of a batch of buffers to virtio driver by only writing used ring index.

Vhost user device has supported this feature by default. If vhost
dequeue zero is enabled, should disable VIRTIO_F_IN_ORDER as vhost can’t
assure that descriptors returned from NIC are in order.

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/bnxt: use correct flags during VLAN configuration
Somnath Kotur [Thu, 28 Jun 2018 20:15:49 +0000 (13:15 -0700)]
net/bnxt: use correct flags during VLAN configuration

Setting of VLAN filter cmd was being done with incorrect flag value.
We need to use inner vlan fields instead of outer vlan.

Fixes: 7fe5668d2ea3 ("net/bnxt: support VLAN filter and strip")
Cc: stable@dpdk.org
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix Rx ring count limitation
Ajit Khaparde [Thu, 28 Jun 2018 20:15:48 +0000 (13:15 -0700)]
net/bnxt: fix Rx ring count limitation

Fixed size of fw_grp_ids in VNIC is limiting the number of Rx rings
being created. With this patch we are allocating fw_grp_ids dynamically,
allowing us to get over this artificial limit.

Fixes: 9738793f28ec ("net/bnxt: add VNIC functions and structs")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: check VF resources if resource manager is enabled
Ajit Khaparde [Thu, 28 Jun 2018 20:15:47 +0000 (13:15 -0700)]
net/bnxt: check VF resources if resource manager is enabled

If HWRM resource manager is enabled, check VF resources before proceeding.
Make sure there are enough resources allocated and return an error in case
of insufficient error.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix to move a flow to a different queue
Somnath Kotur [Thu, 28 Jun 2018 20:15:46 +0000 (13:15 -0700)]
net/bnxt: fix to move a flow to a different queue

While moving a flow to a different destination queue,
the l2_filter_id being passed to the FW command was incorrect.
Fix it by re-using the matching filter's l2_filter_id since
that is supposed to be the same in this case.

Fixes: 5ef3b79fdfe6 ("net/bnxt: support flow filter ops")
Cc: stable@dpdk.org
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: allocate RSS context only if RSS mode is enabled
Ajit Khaparde [Thu, 28 Jun 2018 20:15:45 +0000 (13:15 -0700)]
net/bnxt: allocate RSS context only if RSS mode is enabled

allocate RSS context only if RSS mode is enabled.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix incorrect IO address handling in Tx
Ajit Khaparde [Thu, 28 Jun 2018 20:15:44 +0000 (13:15 -0700)]
net/bnxt: fix incorrect IO address handling in Tx

rte_mbuf_data_iova returns a 64-bit address. But we are incorrectly
using only 32-bits of that. Use rte_cpu_to_le_64 instead of
rte_cpu_to_le_32

Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix set MTU
Ajit Khaparde [Thu, 28 Jun 2018 20:15:43 +0000 (13:15 -0700)]
net/bnxt: fix set MTU

There is no need to update bnxt_hwrm_vnic_plcmode_cfg if new MTU is
not greater than the max data the mbuf can accommodate.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: check filter type before clearing it
Ajit Khaparde [Thu, 28 Jun 2018 20:15:42 +0000 (13:15 -0700)]
net/bnxt: check filter type before clearing it

In bnxt_free_filter_mem(), check the filter type and call the
appropriate HWRM command to clear the filter from HW.

Fixes: 5ef3b79fdfe6 ("net/bnxt: support flow filter ops")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: revert reset of L2 filter id
Somnath Kotur [Thu, 28 Jun 2018 20:15:41 +0000 (13:15 -0700)]
net/bnxt: revert reset of L2 filter id

The L2 filter id is needed in many scenarios particularly when
we are repurposing the same ntuple filter with different destination
queues. This patch reverts a commit in which the L2 filter id was being
reset in clear_ntuple_filter().

Fixes: 1383434c9089 ("net/bnxt: reset L2 filter id once filter is freed")
Cc: stable@dpdk.org
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
5 years agonet/bnxt: fix Tx with multiple mbuf
Xiaoxin Peng [Thu, 28 Jun 2018 20:15:40 +0000 (13:15 -0700)]
net/bnxt: fix Tx with multiple mbuf

When using multi-mbuf to xmit large packets, we need to use total
packet lengths (sum of all segments) to set txbd->flags_type.
Packets will not be sent when using tx_pkt->data_len(The first
segment of packets).

Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
Cc: stable@dpdk.org
Signed-off-by: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Reviewed-by: Herry Chen <herry.chen@broadcom.com>
Reviewed-by: Jason He <jason.he@broadcom.com>
Reviewed-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: update HWRM API to v1.9.2.9
Rob Miller [Thu, 28 Jun 2018 20:15:39 +0000 (13:15 -0700)]
net/bnxt: update HWRM API to v1.9.2.9

update HWRM API to v1.9.2.9

Signed-off-by: Rob Miller <rob.miller@broadcom.com>
Reviewed-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
5 years agonet/bnxt: check for invalid vNIC id
Jay Ding [Thu, 28 Jun 2018 20:15:38 +0000 (13:15 -0700)]
net/bnxt: check for invalid vNIC id

Passing an invalid fw_vnic_id to the firmware will cause the
bnxt_hwrm_vnic_plcmode_cfg command to fail.
Add a check for VNIC id before sending message to firmware.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
Cc: stable@dpdk.org
Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: refactor filter/flow
Ajit Khaparde [Thu, 28 Jun 2018 20:15:37 +0000 (13:15 -0700)]
net/bnxt: refactor filter/flow

In preparation of more rte_flow support it has been decided to
separate out filter and flow into their own files. Functionally the
same.

Signed-off-by: Michael Wildt <michael.wildt@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: move function check zero bytes
Scott Branden [Thu, 28 Jun 2018 20:15:36 +0000 (13:15 -0700)]
net/bnxt: move function check zero bytes

Move check_zero_bytes into new bnxt_util.h file.

Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix queue start/stop operations
Ajit Khaparde [Thu, 28 Jun 2018 20:15:35 +0000 (13:15 -0700)]
net/bnxt: fix queue start/stop operations

Packets destined to the to-be-stopped queue should not be dropped
(neither in HW nor in the driver), so re-program the RSS Table without
this queue on stop and add it back to the table on start unless it
is a Representor VF.

Since 0th entry is used for default ring, use fw_grp_id + 1 to change
the RSS table population logic by programming valid IDs instead of the
default zeroth entry in case of an invalid fw_grp_id.

Destroy and recreate the trio of Rx rings(compl, Rx, AG) every time in
start so that HW is in sync with software.

Fixes: 9b63c6fd70e3 ("net/bnxt: support Rx/Tx queue start/stop")
Cc: stable@dpdk.org
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: support a StingRay VF id
Ajit Khaparde [Thu, 28 Jun 2018 20:15:34 +0000 (13:15 -0700)]
net/bnxt: support a StingRay VF id

Add support for StingRay VF device 0xd800

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix HW Tx checksum offload check
Ajit Khaparde [Thu, 28 Jun 2018 20:15:33 +0000 (13:15 -0700)]
net/bnxt: fix HW Tx checksum offload check

Add more checks for checksum calculation offload.
Also check for tunnel frames and select the proper
buffer descriptor size.

Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
Cc: stable@dpdk.org
Signed-off-by: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Jason He <jason.he@broadcom.com>
Reviewed-by: Qingmin Liu <qingmin.liu@broadcom.com>
5 years agonet/bnxt: set ring coalesce parameters for Stratus NIC
Ajit Khaparde [Thu, 28 Jun 2018 20:15:32 +0000 (13:15 -0700)]
net/bnxt: set ring coalesce parameters for Stratus NIC

Set ring coalesce parameters for Stratus NIC.
Other skews don't necessarily need this.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix close operation
Ajit Khaparde [Thu, 28 Jun 2018 20:15:31 +0000 (13:15 -0700)]
net/bnxt: fix close operation

We are not cleaning up all the memory and also not unregistering
the driver during device close operation. This patch fixes the issue.

Fixes: 893074951314 ("net/bnxt: free memory in close operation")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: set descriptor rings limits
Ajit Khaparde [Thu, 28 Jun 2018 20:15:30 +0000 (13:15 -0700)]
net/bnxt: set descriptor rings limits

Set MIN and MAX descriptor count for TX and RX rings.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: optimize Rx processing
Ajit Khaparde [Thu, 28 Jun 2018 20:15:29 +0000 (13:15 -0700)]
net/bnxt: optimize Rx processing

1) Use nb_rx_pkts instead of checking producer indices of Rx and
aggregator rings to decide if any Rx completions were processed.
2) Post Rx buffers early in Rx processing instead of waiting for
the budgeted burst quota.
3) Ring Rx CQ DB after Rx buffers are posted.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: support Tx batching
Ajit Khaparde [Thu, 28 Jun 2018 20:15:28 +0000 (13:15 -0700)]
net/bnxt: support Tx batching

Batch more than one Tx requests such that only one completion
is generarted by the HW. We request a Tx completion for first
and last Tx request in the batch.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agonet/bnxt: fix clear port stats
Ajit Khaparde [Thu, 28 Jun 2018 20:15:27 +0000 (13:15 -0700)]
net/bnxt: fix clear port stats

PORT_CLR_STATS is not allowed for VFs, NPAR, MultiHost functions
or when SR-IOV is enabled.
Don't send the HWRM command in such cases.

Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
5 years agoethdev: add new offload flag to keep CRC
Ferruh Yigit [Fri, 29 Jun 2018 12:41:13 +0000 (13:41 +0100)]
ethdev: add new offload flag to keep CRC

DEV_RX_OFFLOAD_KEEP_CRC offload flag is added. PMDs that support
keeping CRC should advertise this offload capability.

DEV_RX_OFFLOAD_CRC_STRIP flag will remain one more release
default behavior in PMDs are to keep the CRC until this flag removed

Until DEV_RX_OFFLOAD_CRC_STRIP flag is removed:
- Setting both KEEP_CRC & CRC_STRIP is INVALID
- Setting only CRC_STRIP PMD should strip the CRC
- Setting only KEEP_CRC PMD should keep the CRC
- Not setting both PMD should keep the CRC

A helper function rte_eth_dev_is_keep_crc() has been added to be able to
change the no flag behavior with minimal changes in PMDs.

The PMDs that doesn't report the DEV_RX_OFFLOAD_KEEP_CRC offload can
remove rte_eth_dev_is_keep_crc() checks next release, related code
commented to help the maintenance task.

And DEV_RX_OFFLOAD_CRC_STRIP has been added to virtual drivers since
they don't use CRC at all, when an application requires this offload
virtual PMDs should not return error.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Allain Legacy <allain.legacy@windriver.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoethdev: add flow API to expand RSS flows
Nelio Laranjeiro [Thu, 28 Jun 2018 16:01:21 +0000 (18:01 +0200)]
ethdev: add flow API to expand RSS flows

Introduce an helper for PMD to expand easily flows items list with RSS
action into multiple flow items lists with priority information.

For instance a user items list being "eth / end" with rss action types
"ipv4-udp ipv6-udp end" needs to be expanded into three items lists:

 - eth
 - eth / ipv4 / udp
 - eth / ipv6 / udp

to match the user request.  Some drivers are unable to reach such
request without this expansion, this API is there to help those.
Only PMD should use such API for their internal cooking, the application
will still handle a single flow.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>