Add support for .get_reg eth_dev ops which will be used to collect the
firmware debug data.
PMD on detecting on some HW errors will collect the FW/HW Dump to a
buffer and then it will save it to a file implemented in
qede_save_fw_dump().
Dump file location and name:
Location: <RTE_SDK> or DPDK root
Name: qede_pmd_dump_mm-dd-yy_hh-mm-ss.bin
DPDK applications can initiate a debug data collection by invoking DPDK
library’s rte_eth_dev_get_reg_info() API. This API invokes .get_reg()
interface in the PMD.
PMD implementation of .get_reg() collects the FW/HW Dump, saves it to
data field of rte_dev_reg_info and passes it to the application. It’s
the responsibility of the application to save the FW/HW Dump to a file.
We recommendation using the file name format used by qede_save_fw_dump().
Signed-off-by: Rasesh Mody <rmody@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
net/qede: add infrastructure for debug data collection
The patch adds QEDE PMD ops and APIs to calculate the size and collect
the debug dump for various firmware components. The patch adds new files
qede_debug.[ch] that has all the firmware debug data collection
infrastructure changes.
Signed-off-by: Rasesh Mody <rmody@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
net/qede/base: add changes for debug data collection
This patch adds base driver APIs required for debug data collection.
It adds support for dumping internal lookup tables(ilt), reading nvram
image, register definitions.
Signed-off-by: Rasesh Mody <rmody@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
This patch rearranges some of the base driver structures which will be
also used by debug data collection (DDC) implementation. It adds a new
file ecore_hsi_func_common.h with Physical, Virtual memory descriptors.
Signed-off-by: Rasesh Mody <rmody@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Long Li [Wed, 24 Jun 2020 01:11:45 +0000 (18:11 -0700)]
net/netvsc: fix underflow when Rx external mbuf
When rte_pktmbuf_attach_extbuf() is used, the driver should not decrease
the reference count in its callback function hn_rx_buf_free_cb, because
the reference count is already decreased by rte_pktmbuf. Doing it twice
may result in underflow and driver may never send an ack packet over
vmbus to host.
Also declares rxbuf_outstanding as atomic, because this value is shared
among all receive queues.
Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device") Cc: stable@dpdk.org Signed-off-by: Long Li <longli@microsoft.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
David Marchand [Tue, 16 Jun 2020 09:46:37 +0000 (11:46 +0200)]
net/bonding: fix socket ID check
Caught by code review, rte_eth_dev_socket_id() returns -1 on error.
The code should behave the same, but still, do not use LCORE_ID_ANY for
something that is not a lcore id.
Fixes: c15c5897340d ("net/bonding: avoid allocating mempool on unknown socket") Cc: stable@dpdk.org Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Chas Williams <chas3@att.com>
net/bnxt: avoid hard coded values when reading counters
Instead of using hardcoded values for the byte/pkt value shifts/masks
to read from the HW counters, use the shift/mask values from the device
template params
Added support for set transport port source and destination
rewrite action items. This allows changing the tcp or udp
source/destination ports for a given flow.
net/bnxt: add conditional opcodes for mapper result table
Added support for conditional mapper result opcodes. The conditional
opcodes allows to set the action details in hardware based on the
actions configured for the flow. This allows aggregation of multiple
templates.
Added port configuration changes to support full offload
rules when VF representor ports are used. The direction of
the flow is determined using the configured direction and the
configured match and action ports of the flow create.
Added support for the PF and VF port action items in the flow
create. During flow create the output port action can now be specified
as PF or VF port and those ports are parsed accordingly and converted
to vnic or vport as per the flow direction.
net/bnxt: move VXLAN outer IP protocol ID in encap
The outer ip protocol was not encapsulated in the right location
when ip header is sent by the application. The order of encapsulation
has to be reversed.
net/bnxt: remove VNIC and vport bits from template match
Removed the vnic and vport bitmaps from template matching. It
is assumed that these will be populated implicitly and based
on the direction the appropriate action property shall be used.
The return value of some functions is explicitly ignored
in cases where scope id may not be valid for internal EM
entries.
Additional minor refactoring and cleanups
- Change log level for some log messages to DEBUG instead of ERR.
- Check data size conformity and log appropriate message.
Signed-off-by: Michael Wildt <michael.wildt@broadcom.com> Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com> Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com> Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
The bnxt vector mode receive handler does not support the rte_flow
'mark' action. Since we cannot know in advance whether this action
will be required, add support for dynamically switching from vector
to non-vector receive when the first flow create request with a
mark action is processed.
Fixes: 94eb699bc82e ("net/bnxt: support flow mark action") Cc: stable@dpdk.org Suggested-by: Thomas Monjalon <thomas@monjalon.net> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Jun Yang [Tue, 7 Jul 2020 09:22:42 +0000 (14:52 +0530)]
net/dpaa2: support flow API FS miss action configuration
1) dpni_set_rx_hash_dist and dpni_set_rx_fs_dist used for TC
configuration instead of dpni_set_rx_tc_dist. Otherwise,
re-configuration of default TC of QoS fails.
2) Default miss action is to drop. "export
DPAA2_FLOW_CONTROL_MISS_FLOW=flow_id" is used receive the missed
packets from flow with flow ID specified.
Signed-off-by: Jun Yang <jun.yang@nxp.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Jun Yang [Tue, 7 Jul 2020 09:22:35 +0000 (14:52 +0530)]
net/dpaa2: define size of table entry
If entry size is not bigger than 27, MC alloc one TCAM entry,
otherwise, alloc 2 TCAM entries.
Extracts size by HW must be not bigger than TCAM entry size(27 or 54).
So define the flow entry size as 54.
Signed-off-by: Jun Yang <jun.yang@nxp.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
For DPAA devices the memory maps stored in the FMAN interface
information is per process. Store them in the device process specific
area.
This is required to support multi-process apps.
The patch adds support for portal migration by disabling stashing
for the portals which is used in the non-affined threads, or on
threads affined to multiple cores
bus/fslmc: rework portal allocation to per-thread basis
The patch reworks the portal allocation which was previously
being done on per lcore basis to a per thread basis.
Now user can also create its own threads and use DPAA2 portals
for packet I/O.
Ferruh Yigit [Wed, 24 Jun 2020 09:35:20 +0000 (10:35 +0100)]
ethdev: verify reserved HW ring
Function 'rte_eth_dma_zone_reserve()' returns an existing memzone based
on name match, but other requested attributes are discarded.
This may cause driver using a memzone with wrong size or alignment.
Verify size, alignment and socket_id for matched memzone, and do not use
memzone if any one of the attributes are not justified.
It is possible to free the existing memzone and allocate again with the
requested attributes but it is better caller do the explicit free.
Chenxu Di [Wed, 8 Jul 2020 01:18:41 +0000 (01:18 +0000)]
app/testpmd: support RSS config in flow query
This patch support RSS action in flow query.
It can display the RSS configuration of the specified rule.
For example:
we can create an RSS rule by command "flow create 0 ingress
pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp
l3-src-only l4-dst-only end queues end func symmetric_toeplitz
/ end" and then query it "flow query 0 0 rss"
the log will be follow
RSS:
queues: none
function: symmetric_toeplitz
types:
ipv4-tcp
l3-src-only
l4-dst-only
Signed-off-by: Chenxu Di <chenxux.di@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
Chenxu Di [Wed, 8 Jul 2020 01:18:39 +0000 (01:18 +0000)]
app/testpmd: replace legacy filter usage
The legacy filter API will be superseded. This patch use
private api to change the implementation of commands
global_config <port_id> gre-key-len <key_len> and
show port fdir <port_id>
Signed-off-by: Chenxu Di <chenxux.di@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
Chenxu Di [Wed, 8 Jul 2020 01:18:38 +0000 (01:18 +0000)]
net/ixgbe: add private APIs for flow filtering
The legacy filter API will be superseded by rte_flow.
There are also several small features which can not be
implemented in rte_flow. This patch re-implemented these
features as private API.
Two APIs are added:
rte_pmd_ixgbe_get_fdir_info.
rte_pmd_ixgbe_get_fdir_stats.
Signed-off-by: Chenxu Di <chenxux.di@intel.com> Acked-by: Jeff Guo <jia.guo@intel.com>
Chenxu Di [Wed, 8 Jul 2020 01:18:37 +0000 (01:18 +0000)]
net/i40e: add private APIs for flow filtering
The legacy filter API will be superseded by rte_flow.
There are also several small features which can not be
implemented in rte_flow. This patch re-implemented these
features as private API.
Three APIs are added:
rte_pmd_i40e_get_fdir_info.
rte_pmd_i40e_get_fdir_stats.
rte_pmd_i40e_set_gre_key_len.
Signed-off-by: Chenxu Di <chenxux.di@intel.com> Acked-by: Jeff Guo <jia.guo@intel.com>
Guinan Sun [Wed, 8 Jul 2020 07:40:58 +0000 (07:40 +0000)]
net/i40e: support cloud filter with L4 port
This patch enables cloud filter for IPv4/6_UDP/TCP/SCTP with
SRC port only or DST port only.
This supports different filter types for the same packet type.
E.g. one IPv4_UDP rules with SRC port only and another IPv4_UDP rule
with DST port only.
Signed-off-by: Guinan Sun <guinanx.sun@intel.com> Acked-by: Beilei Xing <beilei.xing@intel.com>
net/iavf: support flow director GTPU outer IPv4/IPv6
Add FDir support for MAC_IPV4_GTPU and MAC_IPV6_GTPU type with outer
IPv4/IPv6 address, teid and qfi fields matching. Note that outer IPv4
and IPv6 matching fields here include both SRC & DST of both IPv4 &
IPv6.
net/ice: support flow director GTPU outer IPv4/IPv6
Add FDir support for MAC_IPV4_GTPU and MAC_IPV6_GTPU type with outer
IPv4/IPv6 address, teid and qfi fields matching. Note that outer IPv4
and IPv6 matching fields here include both SRC & DST of both IPv4 &
IPv6.
Zhirun Yan [Wed, 8 Jul 2020 12:43:07 +0000 (12:43 +0000)]
net/ice: support src MAC filter for flow director
This patch enables FDIR with src mac filter and change the logic for
only supporting ether type field without IP pattern. Application may
set ether type with IP. It is redundant for flow, ignore ether type
except for ICE_FLTR_PTYPE_NON_IP_L2.
Also, remove redundant code for checking next_type.
Signed-off-by: Zhirun Yan <zhirun.yan@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com>
If we download a NVGRE rule like "eth / ipv4 / nvgre / eth / ipv4 src
is 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end"
the special word will not be added because of rm->n_grp_count = 1,
so we have to change the ice_add_special_words() function before
ice_create_recipe_group(), then the special words will be add
into rm->rg_list.
Btw, the flag match_tun_mask is useless now and no need to add special
words in function ice_add_sw_recipe().
Interrupt callback unregister can fail with -EAGAIN
when interrupt handler is active in interrupt thread.
Hence retry before reporting a failure or proceeding further.
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
Adrian Moreno [Mon, 6 Jul 2020 11:24:50 +0000 (13:24 +0200)]
vhost: support virtio status message
This patch adds support to the new Virtio device get status
Vhost-user message.
The driver can send this new message to read the device status.
One of the uses of this message is to ensure the feature negotiation has
succeeded. According to the virtio spec, after completing the feature
negotiation, the driver sets the FEATURE_OK status bit and re-reads it
to ensure the device has accepted the features.
This patch also clears the FEATURE_OK status bit if the feature
negotiation has failed to let the driver know about his failure.
Signed-off-by: Adrian Moreno <amorenoz@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Maxime Coquelin [Mon, 6 Jul 2020 11:24:49 +0000 (13:24 +0200)]
vhost: support virtio status
This patch adds support to the new Virtio device status
Vhost-user protocol feature.
Getting such information in the backend helps to know
when the driver is done with the device configuration
and so makes the initialization phase more robust.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Maxime Coquelin [Mon, 6 Jul 2020 11:24:47 +0000 (13:24 +0200)]
vhost: make some vDPA callbacks mandatory
Some of the vDPA callbacks have to be implemented
for vDPA to work properly.
This patch marks them as mandatory in the API doc and
simplify code calling these ops with removing
unnecessary checks that are now done at registration
time.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Maxime Coquelin [Mon, 6 Jul 2020 11:24:45 +0000 (13:24 +0200)]
vhost: fix virtio ready flag check
Before checking whether the device is ready is done
a check on whether the RUNNING flag is set. Then the
READY flag is set if virtio_is_ready() returns true.
While it seems to not cause any issue, it makes more
sense to check whether the READY flag is set and not
the RUNNING one.
Fixes: c0674b1bc898 ("vhost: move the device ready check at proper place") Cc: stable@dpdk.org Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Maxime Coquelin [Fri, 3 Jul 2020 15:57:27 +0000 (17:57 +0200)]
net/virtio-user: support reply-ack
This patch adds support reply-ack vhost-user protocol
feature, which is for now only used to ensure
VHOST_USER_SET_MEM_TABLE requests are handled by the
slave, but later will be used for VHOST_USER_SET_STATUS.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Maxime Coquelin [Fri, 3 Jul 2020 15:57:26 +0000 (17:57 +0200)]
net/virtio: support vhost-user protocol features
This patch adds support for Vhost-user protocol features.
It is required to support protocol features that were not in
initial Vhost-user specification, such as reply-ack, MTU...
Also, this patch prevents Virtio multiqueue feature negotiation
if the slave does not support MQ protocol feature as stated
in Vhost-user specification:
"The multiple queues feature is supported only when the protocol
feature ``VHOST_USER_PROTOCOL_F_MQ`` (bit 0) is set."
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
David Marchand [Fri, 10 Jul 2020 09:45:50 +0000 (11:45 +0200)]
eal/linux: truncate thread name
pthread_setname_np refuses names larger than 16 bytes (\0 included).
Rather than return an error, truncate the name to this limit in the
rte_thread_setname helper.
Caught with ixgbe which creates control thread with name
"ixgbe-link-handler":
Configuring Port 0 (socket 0)
EAL: Cannot set name for ctrl thread
...
EAL: Cannot set name for ctrl thread
Port 0: link state change event
...
EAL: Cannot set name for ctrl thread
Port 0: link state change event
Note: before this change, the thread would keep its original name, which
meant in my test for the ixgbe handler either "dpdk-testpmd" or
"eal-intr-thread".
Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
Currently, the application does support running without the power
library being initialized, but it has to be specifically requested. On
platforms without support for frequency scaling using the power library,
we can just enable interrupt-only mode by default.
Anatoly Burakov [Fri, 19 Jun 2020 10:53:54 +0000 (11:53 +0100)]
power: add environment capability probing
Currently, there is no way to know if the power management env is
supported without trying to initialize it. The init API also does
not distinguish between failure due to some error and failure due to
power management not being available on the platform in the first
place.
Thus, add an API that provides capability of probing support for a
specific power management API.
Suggested-by: Jerin Jacob <jerinj@marvell.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Anatoly Burakov [Fri, 19 Jun 2020 10:53:53 +0000 (11:53 +0100)]
examples/l3fwd-power: add interrupt-only mode
In addition to existing modes, add a mode which is very similar to
legacy mode, but does not do frequency scaling, and thus does not
depend on the power library.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: Yinan Wang <yinan.wang@intel.com>
Anatoly Burakov [Fri, 19 Jun 2020 10:53:52 +0000 (11:53 +0100)]
examples/l3fwd-power: add legacy mode option
Currently, legacy mode is the implicit default, but it is not possible
to directly request using legacy mode. Add the argument to enable
requesting legacy mode, and also make it the default.
Anatoly Burakov [Fri, 19 Jun 2020 10:53:50 +0000 (11:53 +0100)]
examples/l3fwd-power: allow only supported environments
Currently, l3fwd-power will attempt to run even if the power env
is set to KVM, which is not supported. Fix this by preventing the
app from initializing unless the env is set to one of the supported
modes.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: Yinan Wang <yinan.wang@intel.com>
Anatoly Burakov [Fri, 19 Jun 2020 10:53:49 +0000 (11:53 +0100)]
examples/l3fwd-power: disable interrupts by default
Currently, interrupts are enabled in telemetry and empty poll modes, but
they are not used. Switch to disabling interrupts by default, and only
enable interrupts for modes that require them.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: Yinan Wang <yinan.wang@intel.com>
Thomas Monjalon [Fri, 10 Jul 2020 09:47:37 +0000 (11:47 +0200)]
pci: keep API compatibility with mmap values
The function pci_map_resource() returns MAP_FAILED in case of error.
When replacing the call to mmap() by rte_mem_map(),
the error code became NULL, breaking the API.
This function is probably not used outside of DPDK,
but it is still a problem for two reasons:
- the deprecation process was not followed
- the Linux function pci_vfio_mmap_bar() is broken for i40e
The error code is reverted to the Unix value MAP_FAILED.
Windows needs to define this special value (-1 as in Unix).
After proper deprecation process, the API could be changed again
if really needed.
Because of the switch from mmap() to rte_mem_map(),
another part of the API was changed: "int additional_flags"
are defined as "additional flags for the mapping range"
without mentioning it was directly used in mmap().
Currently it is directly used in rte_mem_map(),
that's why the values rte_map_flags must be mapped (sic) on the mmap ones
in case of Unix OS.
These are side effects of a badly defined API using Unix values.
Bugzilla ID: 503 Fixes: 2fd3567e5425 ("pci: use OS generic memory mapping functions") Reported-by: David Marchand <david.marchand@redhat.com> Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Tested-by: Lihong Ma <lihongx.ma@intel.com>
Harman Kalra [Wed, 24 Jun 2020 10:20:47 +0000 (15:50 +0530)]
eal: fix parentheses in alignment macros
Found an issue while using RTE_ALIGN_MUL_NEAR with an
expression, like as passed in estimate_tsc_freq().
RTE_ALIGN_MUL_FLOOR resulted in unexpected value as
parathesis are required to evaluate an expression.
Fixes: 5120203d753f ("eal: add macros to align value to multiple") Cc: stable@dpdk.org Signed-off-by: Harman Kalra <hkalra@marvell.com>
eal/windows: detect insufficient privileges for hugepages
AdjustTokenPrivileges() succeeds even if no requested privileges have
been granted; this behavior is documented. Check last error code in
addition to return value to detect such case.
Make error messages more specific and add troubleshooting hint.
Per RFC768:
If the computed checksum is zero, it is transmitted as all ones.
An all zero transmitted checksum value means that the transmitter
generated no checksum.
RFC793 for TCP has no such special treatment for the checksum of zero.
Joyce Kong [Fri, 10 Jul 2020 02:38:50 +0000 (10:38 +0800)]
vhost: restrict pointer aliasing for packed ring
Restrict pointer aliasing to allow the compiler to vectorize loop
more aggressively.
With this patch, a 9.6% improvement is observed in throughput for
the packed virtio-net PVP case, and a 2.8% improvement in throughput
for the packed virtio-user PVP case. All performance data are measured
on ThunderX-2 platform under 0.001% acceptable packet loss with 1 core
on both vhost and virtio side.
Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Phil Yang <phil.yang@arm.com> Acked-by: Adrián Moreno <amorenoz@redhat.com>