dpdk.git
3 years agoapp/testpmd: fix queue reconfig request on Rx split update
Viacheslav Ovsiienko [Thu, 21 Jan 2021 12:46:33 +0000 (12:46 +0000)]
app/testpmd: fix queue reconfig request on Rx split update

There is the "set rxpkts" command in the testpmd interactive mode,
it configures the segment sizes to split the packet on receiving.
The mentioned segment sizes are provided on the Rx queue setup
as part of queue configuration. Hence, to take the rxpkts command
into effect the Rx queues must be explicitly reconfigured.

The explained above is related to the "set rxoffs" as well.

The patch sets the queue reconfiguration request flag for
all devices once Rx split settings are updated, to take
the changes into effect the port(s) should be restarted.

Fixes: 0f2096d7ab36 ("app/testpmd: add rxpkts commands and parameters")
Fixes: 91c78e090eed ("app/testpmd: add rxoffs commands and parameters")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/iavf: fix vector mapping with queue
Jingjing Wu [Thu, 28 Jan 2021 15:00:21 +0000 (23:00 +0800)]
net/iavf: fix vector mapping with queue

Fix the vector mapping with queue by changing the recircle when
exceeds RX_VEC_START + nb_msix;

Fixes: d6bde6b5eae9 ("net/avf: enable Rx interrupt")
Cc: stable@dpdk.org
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agonet/bnxt: fix mbuf flags for PTP packets
Kalesh AP [Thu, 28 Jan 2021 03:53:30 +0000 (09:23 +0530)]
net/bnxt: fix mbuf flags for PTP packets

Commit "899f06130724" broke the update of mbuf flags for PTP packets.
"mbuf->ol_flags" is overwritten in bnxt_set_ol_flags() function.

Fixes: 899f06130724 ("net/bnxt: add Rx logic for 58818 chips")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/octeontx_ep: add Tx path
Nalla Pradeep [Fri, 29 Jan 2021 12:45:10 +0000 (04:45 -0800)]
net/octeontx_ep: add Tx path

1. Packet transmit function for both otx and otx2 are added.
2. Flushing transmit(command) queue when pending commands are more than
   maximum allowed value (currently 16).
3. Scatter gather support if the packet spans multiple buffers.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add Rx path
Nalla Pradeep [Fri, 29 Jan 2021 12:45:09 +0000 (04:45 -0800)]
net/octeontx_ep: add Rx path

Function to deliver packets from DROQ to application is added. It also
fills DROQ with receive buffers timely such that device can fill them
with incoming packets.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add device start and stop
Nalla Pradeep [Fri, 29 Jan 2021 12:45:08 +0000 (04:45 -0800)]
net/octeontx_ep: add device start and stop

Dev start and stop operations are added. To accomplish this internal
functions to enable or disable IO queues are incorporated.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: set up IQ and OQ registers
Nalla Pradeep [Fri, 29 Jan 2021 12:45:07 +0000 (04:45 -0800)]
net/octeontx_ep: set up IQ and OQ registers

Configuring hardware registers with command queue (IQ) and driver output
queue (OQ) parameters.
List of parameters configured for IQ after making sure it is idle
1. Base address
2. Instruction size
3. Disabling interrupts for fastpath

List of parameters configured for OQ after making sure it is idle
1. Base address
2. Output buffer size
3. Clear output queue doorbell
4. Disable interrupts for fastpath

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add Tx queue setup and release
Nalla Pradeep [Fri, 29 Jan 2021 12:45:06 +0000 (04:45 -0800)]
net/octeontx_ep: add Tx queue setup and release

Transmit queue setup involves allocating memory for the command queue
considering tx descriptor count and initializing data structure
representing the queue. Transmit queue release function frees the
command queue.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add Rx queue setup and release
Nalla Pradeep [Fri, 29 Jan 2021 12:45:05 +0000 (04:45 -0800)]
net/octeontx_ep: add Rx queue setup and release

Receive queue setup involves allocating memory for the queue,
initializing data structure representing the queue and filling queue
with receive buffers of rx descriptor count. Receive queues are referred
as droq. Hardware fills the receive buffers in queue with the packet.

In receive queue release, receive buffers are freed along with the
receive queue.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add device info get and configure
Nalla Pradeep [Fri, 29 Jan 2021 12:45:04 +0000 (04:45 -0800)]
net/octeontx_ep: add device info get and configure

Add device information get and device configure operations.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add basic device setup
Nalla Pradeep [Fri, 29 Jan 2021 12:45:03 +0000 (04:45 -0800)]
net/octeontx_ep: add basic device setup

Functions to setup device, basic input queue and output queue registers
are added.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add device init and uninit
Nalla Pradeep [Fri, 29 Jan 2021 12:45:02 +0000 (04:45 -0800)]
net/octeontx_ep: add device init and uninit

Add basic init and uninit function which includes
initializing fields of ethdev private structure.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add ethdev probe and remove
Nalla Pradeep [Fri, 29 Jan 2021 12:45:01 +0000 (04:45 -0800)]
net/octeontx_ep: add ethdev probe and remove

Add basic PCIe ethdev probe and remove.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/octeontx_ep: add build and doc infrastructure
Nalla Pradeep [Fri, 29 Jan 2021 12:45:00 +0000 (04:45 -0800)]
net/octeontx_ep: add build and doc infrastructure

Adding bare minimum PMD library and doc build infrastructure
and claim the maintainership for octeontx end point PMD.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agoraw/octeontx2_ep: change PCI device ID
Nalla Pradeep [Fri, 29 Jan 2021 12:44:59 +0000 (04:44 -0800)]
raw/octeontx2_ep: change PCI device ID

Device id to be probed by octeontx_ep raw device pmd is changed from
B203 to B204. B203 is for octeontx_ep net device pmd to probe.

Signed-off-by: Nalla Pradeep <pnalla@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/ena: prevent double doorbell
Igor Chauskin [Tue, 26 Jan 2021 18:32:26 +0000 (19:32 +0100)]
net/ena: prevent double doorbell

Add per-tx-ring flag for packets that were pushed to HW but await
doorbell. That is to prevent a situation when a doorbell is sent due to
reaching Tx burst threshold and next send fails (e.g., due to queue
full). In such case we shouldn't send another doorbell because there are
no actual packets waiting for transmission.

Fixes: c7519ea5eb8d ("net/ena: call additional doorbells if needed")
Cc: stable@dpdk.org
Signed-off-by: Igor Chauskin <igorch@amazon.com>
Reviewed-by: Michal Krawczyk <mk@semihalf.com>
3 years agonet/ena: fix Tx SQ free space assessment
Igor Chauskin [Tue, 26 Jan 2021 18:32:25 +0000 (19:32 +0100)]
net/ena: fix Tx SQ free space assessment

Before starting transmission of Tx burst, the driver checked the
available space in the sq and limited the number of packets for
transmission accordingly.
The calculation was incorrect for fragmented packets and potentially had
significantly limited the length of Tx bursts.

This patch removes the assessment and pushes packets to the sq as long
as the burst is not exhausted and space is available in the sq.

Correct evaluation of the required space isn't possible before the burst
because it depends on the number of segments of each packet.
This patch adds per-packet space evaluation for each packet before
attempting to process it. In case there is not enough queue space, the
burst will just stop without error.

Fixes: 2061fe41f212 ("net/ena: linearize Tx mbuf")
Cc: stable@dpdk.org
Signed-off-by: Igor Chauskin <igorch@amazon.com>
Reviewed-by: Michal Krawczyk <mk@semihalf.com>
3 years agonet/ena: validate Rx req ID upon acquiring descriptor
Michal Krawczyk [Tue, 26 Jan 2021 18:32:24 +0000 (19:32 +0100)]
net/ena: validate Rx req ID upon acquiring descriptor

Instead of verifying the Rx descriptor each time it's being used in the
driver code, now the verification happens on the HAL side.

This simplifies code a lot as instead of doing 2 validations, only
single one is needed. The driver have to check the rc value returned
by the ena_com upon reading the Rx descriptor and trigger the reset
if needed. It was previously the responsibility of the
validate_rx_req_id() function.

As part of the change, the version of the driver was bumped to v2.2.1.

Fixes: 2061fe41f212 ("net/ena: linearize Tx mbuf")
Cc: stable@dpdk.org
Signed-off-by: Ido Segev <idose@amazon.com>
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
3 years agonet/ena: fix Tx doorbell statistics
Amit Bernstein [Tue, 26 Jan 2021 18:32:23 +0000 (19:32 +0100)]
net/ena: fix Tx doorbell statistics

Increment Tx doorbell statistics on tx_pkt_burst
after writing to doorbell and in case max burst size achieved

Fixes: c7519ea5eb8d ("net/ena: call additional doorbells if needed")
Cc: stable@dpdk.org
Signed-off-by: Amit Bernstein <amitbern@amazon.com>
Reviewed-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
3 years agonet/ena: flush Rx buffers memory pool cache
Ido Segev [Tue, 26 Jan 2021 18:32:22 +0000 (19:32 +0100)]
net/ena: flush Rx buffers memory pool cache

As the refill called as part of ena_start(), we end up the refill
progress with stuck buffers at the caller core cache.

Calling to flush the cache results with invalidate this cache and free
those stuck buffers.

Fixes: 1173fca25af9 ("ena: add polling-mode driver")
Cc: stable@dpdk.org
Signed-off-by: Ido Segev <idose@amazon.com>
Reviewed-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
3 years agonet/nfp: read chip model from PluDevice register
Heinrich Kuhn [Mon, 25 Jan 2021 15:25:44 +0000 (17:25 +0200)]
net/nfp: read chip model from PluDevice register

For newer smartNIC NVRAM versions the chip model should be read from the
PluDevice register as it provides the authoritative chip model/revision.
This method of reading the chip model is backwards compatible with
legacy NVRAM versions too.

Since the model number is purely used for reporting purposes, follow the
hardware team convention of subtracting 0x10 from the PluDevice register
to obtain the chip model/revision number.

Fixes: c7e9729da6b5 ("net/nfp: support CPP")
Cc: stable@dpdk.org
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>
3 years agoapp/testpmd: avoid exit without terminal restore
Dapeng Yu [Mon, 25 Jan 2021 03:29:53 +0000 (11:29 +0800)]
app/testpmd: avoid exit without terminal restore

In interactive mode, if testpmd exit by calling rte_exit without
restore terminal attributes, terminal will not echo keyboard input.

register a function with atexit() in prompt(), when exit() in
rte_exit() is called, the registered function restores terminal
attributes.

Fixes: 5a8fb55c48ab ("app/testpmd: support unidirectional configuration")
Cc: stable@dpdk.org
Signed-off-by: Dapeng Yu <dapengx.yu@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
3 years agoapp/testpmd: support sending cloned packets in flowgen
Igor Russkikh [Thu, 21 Jan 2021 18:05:30 +0000 (19:05 +0100)]
app/testpmd: support sending cloned packets in flowgen

When testing high performance numbers, it is often that CPU performance
limits the max values device can reach (both in pps and in gbps)

Here instead of recreating each packet separately, we use clones counter
to resend the same mbuf to the line multiple times.

PMDs handle that transparently due to reference counting inside of mbuf.

Reaching max PPS on small packet sizes helps here:
Some data from our 2 port x 50G device. Using 2*6 tx queues, 64b packets,
PowerEdge R7525, AMD EPYC 7452:

./build/app/dpdk-testpmd -l 32-63  -- --forward-mode=flowgen \
  --rxq=6 --txq=6  --disable-crc-strip --burst=512 \
  --flowgen-clones=0 --txd=4096 --stats-period=1 --txpkts=64

Gives ~46MPPS TX output:

  Tx-pps:     22926849          Tx-bps:  11738590176
  Tx-pps:     23642629          Tx-bps:  12105024112

Setting flowgen-clones to 512 pushes TX almost to our device
physical limit (68MPPS) using same 2*6 queues(cores):

  Tx-pps:     34357556          Tx-bps:  17591073696
  Tx-pps:     34353211          Tx-bps:  17588802640

Doing similar measurements per core, I see one core can do
6.9MPPS (without clones) vs 11MPPS (with clones)

Verified on Marvell qede and atlantic PMDs.

Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agoapp/testpmd: fix setting maximum packet length
Steve Yang [Thu, 28 Jan 2021 12:07:08 +0000 (12:07 +0000)]
app/testpmd: fix setting maximum packet length

"port config all max-pkt-len" command fails because it doesn't set the
'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag properly.

Commit in the fixes line moved the 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload
flag update from 'cmd_config_max_pkt_len_parsed()' to 'init_config()'.
'init_config()' function is only called during testpmd startup, but the
flag status needs to be calculated whenever 'max_rx_pkt_len' changes.

The issue can be reproduced as [1], where the 'max-pkt-len' reduced and
'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag should be cleared but it
didn't.

Adding the 'update_jumbo_frame_offload()' helper function to update
'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag and 'max_rx_pkt_len'. This
function is called both by 'init_config()' and
'cmd_config_max_pkt_len_parsed()'.

Default 'max-pkt-len' value set to zero, 'update_jumbo_frame_offload()'
updates it to "RTE_ETHER_MTU + PMD specific Ethernet overhead" when it
is zero.
If '--max-pkt-len=N' argument provided, it will be used instead.
And with each "port config all max-pkt-len" command, the
'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag, 'max-pkt-len' and MTU is
updated.

[1]
--------------------------------------------------------------------------
dpdk-testpmd -c 0xf -n 4 -- -i --max-pkt-len=9000 --tx-offloads=0x8000
--rxq=4 --txq=4 --disable-rss
testpmd>  set verbose 3
testpmd>  port stop all
testpmd>  port config all max-pkt-len 1518
testpmd>  port start all

// Got fail error info without this patch
Configuring Port 0 (socket 1)
Ethdev port_id=0 rx_queue_id=0, new added offloads 0x800 must be
within per-queue offload capabilities 0x0 in rte_eth_rx_queue_setup()
Fail to configure port 0 rx queues //<-- Fail error info;
--------------------------------------------------------------------------

Bugzilla ID: 625
Fixes: 761c4d66900f ("app/testpmd: fix max Rx packet length for VLAN packets")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Lance Richardson <lance.richardson@broadcom.com>
Acked-by: Wisam Jaddo <wisamm@nvidia.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Tested-by: Bo Chen <box.c.chen@intel.com>
3 years agonet/hns3: adjust format specifier for enum
Lijun Ou [Fri, 22 Jan 2021 10:18:51 +0000 (18:18 +0800)]
net/hns3: adjust format specifier for enum

Here uses %d as printing output for enumeration member.

Fixes: c37ca66f2b27 ("net/hns3: support RSS")
Cc: stable@dpdk.org
Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: remove unnecessary parentheses
Lijun Ou [Fri, 22 Jan 2021 10:18:50 +0000 (18:18 +0800)]
net/hns3: remove unnecessary parentheses

Remove unnecessary parentheses as well as keep a reasonable
blank line.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: adjust some comments
Lijun Ou [Fri, 22 Jan 2021 10:18:49 +0000 (18:18 +0800)]
net/hns3: adjust some comments

Fix some error comments and remove some meaningless comments.

Fixes: f8e7fcbfd0b8 ("net/hns3: support flow action of queue region")
Fixes: fcba820d9b9e ("net/hns3: support flow director")
Fixes: c37ca66f2b27 ("net/hns3: support RSS")
Fixes: ec674cb742e5 ("net/hns3: fix flushing RSS rule")
Cc: stable@dpdk.org
Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: rename RSS functions
Lijun Ou [Fri, 22 Jan 2021 10:18:48 +0000 (18:18 +0800)]
net/hns3: rename RSS functions

Rename some function about RSS implement functions
in order to make the functions naming style more
reasonable and consistency.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: fix interrupt resources in Rx interrupt mode
Chengchang Tang [Fri, 22 Jan 2021 10:18:47 +0000 (18:18 +0800)]
net/hns3: fix interrupt resources in Rx interrupt mode

For Kunpeng930, the NIC engine support 1280 tqps being taken over by
a PF. In this case, a maximum of 1281 interrupt resources are also
supported in this PF. To support the maximum number of queues, several
patches are made. But the interrupt related modification are missing.
So, in RX interrupt mode, a large number of queues will be aggregated
into one interrupt due to insufficient interrupts. It will lead to
waste of interrupt resources and reduces usability.

To utilize all these interrupt resources, related IMP command has been
extended. And, the I/O address of the extended interrupt resources are
different from the existing ones. So, a function used for calculating
the address offset has been added.

Fixes: 76d794566d43 ("net/hns3: maximize queue number")
Fixes: 27911a6e62e5 ("net/hns3: add Rx interrupts compatibility")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
3 years agonet/hns3: fix memory leak on secondary process exit
Lijun Ou [Fri, 22 Jan 2021 10:18:46 +0000 (18:18 +0800)]
net/hns3: fix memory leak on secondary process exit

The secondary process is applied a memory for the process_private
during initialization. Therefore, the memory needs to be released
when exiting.

Fixes: c203571b3602 ("net/hns3: register and add log interface")
Cc: stable@dpdk.org
Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: refactor reset event report function
Lijun Ou [Fri, 22 Jan 2021 10:18:45 +0000 (18:18 +0800)]
net/hns3: refactor reset event report function

Here encapsulate the process code of the imp reset report and
global reset report into function in order to reduce the
complexity of the hns3_check_event_cause function.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: extract common checks for flow director
Lijun Ou [Fri, 22 Jan 2021 10:18:44 +0000 (18:18 +0800)]
net/hns3: extract common checks for flow director

When parse flow director with all types, it needs to judge the spec
of item and mask of item for all packet types. The judgement is the
same for all types. Therefore, we move it into the concentrated
location.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: reconstruct Rx interrupt map
Chengchang Tang [Fri, 22 Jan 2021 10:18:43 +0000 (18:18 +0800)]
net/hns3: reconstruct Rx interrupt map

This patch reconstruct the Rx interrupt map to reduce the cyclic
complexity and improve readability and maintainability.

Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: refactor flow checks into own functions
Lijun Ou [Fri, 22 Jan 2021 10:18:42 +0000 (18:18 +0800)]
net/hns3: refactor flow checks into own functions

Here moves some judgement conditions to a separated function
for parsing IPv4 hdr and TCP hdr in hns3_parse_normal function.
Also, move the check of the selected input tuple of RSS to a
separated functions named hns3_rss_input_tuple_supported
in order to enhance scalability and complexity.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: refactor converting descriptor error
Lijun Ou [Fri, 22 Jan 2021 10:18:41 +0000 (18:18 +0800)]
net/hns3: refactor converting descriptor error

Use errno array instead of switch-case for refactor
the hns3_cmd_convert_err_code function.

Besides, we add a type for ROH(RDMA Over HCCS) check
cmdq return error in Kunpeng930 NIC hardware.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: move queue stats to xstats
Huisong Li [Fri, 22 Jan 2021 10:18:40 +0000 (18:18 +0800)]
net/hns3: move queue stats to xstats

One of the hot discussions in community recently was moving queue stats
to xstats. In this solution, a temporary
'RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS' device flag is created to implement
the smooth switch. And the first half of this work has been completed in
the ethdev framework. Now driver needs to remove the flag from the
driver initialization process and does the rest of work.

For better readability and reasonability, per-queue stats also should be
cleared when rte_eth_stats is cleared. Otherwise, the sum of one item in
per-queue stats may be greater than corresponding item in rte_eth_stats.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agonet/hns3: encapsulate DFX stats in datapath
Huisong Li [Fri, 22 Jan 2021 10:18:39 +0000 (18:18 +0800)]
net/hns3: encapsulate DFX stats in datapath

pkt_len_errors and l2_errors in Rx datapath indicate that driver
needs to discard received packets. And driver does not discard
packets for l3/l4/ol3/ol4_csum_errors in Rx datapath and others
stats in Tx datapath. Therefore, it is necessary for improving
code readability and maintainability to encapsulate error stats
and dfx stats.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
3 years agoapp/testpmd: fix sample action for RSS with no key
Jiawei Wang [Tue, 26 Jan 2021 03:49:42 +0000 (05:49 +0200)]
app/testpmd: fix sample action for RSS with no key

When the RSS with null key was set in sample actions list, it
caused the segmentation fault since the RSS key pointer was
NULL while did the memory copy.

This patch adds the RSS key NULL pointer checking before copying
to fix the segmentation fault issue.

Fixes: 11b1b0eddade ("app/testpmd: support RSS in sample action")

Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/i40e: fix register setting for hash enable
Dapeng Yu [Tue, 26 Jan 2021 09:52:11 +0000 (17:52 +0800)]
net/i40e: fix register setting for hash enable

The original code causes wrong value to be set into PFQF_HENA
register because unnecessary calling to get translated pctype
value for X722 NIC. As a result RSS is not working.

So remove the unnecessary translation.

Fixes: ef4c16fd9148 ("net/i40e: refactor RSS flow")
Cc: stable@dpdk.org
Signed-off-by: Dapeng Yu <dapengx.yu@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agonet/ice/base: do not set VLAN mode in DCF mode
Haiyue Wang [Wed, 27 Jan 2021 16:05:16 +0000 (00:05 +0800)]
net/ice/base: do not set VLAN mode in DCF mode

The PF will set the VLAN mode globally, DCF just needs to get the VLAN
mode.

Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Qiming Yang <qiming.yang@intel.com>
3 years agonet/mlx5: fix wire vport hint
Viacheslav Ovsiienko [Wed, 27 Jan 2021 13:53:05 +0000 (15:53 +0200)]
net/mlx5: fix wire vport hint

In order to optimize number of hops in the steering tables there
was the hint field of source vport in the matcher. If this hint
was provided for the wire port the actual vport match, used by
kernel, was not set in the matcher metadata register field.
This could led to not creating the rule in hardware and E-Switch
malfunction if kernel used non-zero metadata value for the wire
vport.

This patch always sets the match for the vport metadata register
value besides the hint.

Fixes: aaf34de5d801 ("net/mlx5: add wire vport hint")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
3 years agonet/mlx5: support modify field flow action
Alexander Kozyrev [Thu, 28 Jan 2021 08:00:14 +0000 (08:00 +0000)]
net/mlx5: support modify field flow action

Add support for new MODIFY_FIELD action to the Mellanox PMD.
This is the generic API that allows to manipulate any packet
header field by copying data from another packet field or
mark, metadata, tag, or immediate value (or pointer to it).

Since the API is generic and covers a lot of action under its
umbrella it makes sense to implement all the mechanics gradually
in order to move to this API for any packet field manipulations
in the future. This is the first step of RTE flows consolidation.

The modify field RTE flow action supports three operations: set,
add and sub. This patch brings to live only the "set" operation.
Support is provided for any packet header field as well as
meta/tag/mark and immediate value can be used as a source.

There are few limitations for this first version of API support:
- encapsulation levels are not supported, just outermost header
can be manipulated for now.
- offsets can only be 4-bytes aligned: 32, 64 and 96 for IPv6.
- the special ITEM_START ID is not supported as we do not allow
to cross packet header field boundaries yet.

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
3 years agocommon/mlx5: add GTP TEID modification ID
Alexander Kozyrev [Mon, 25 Jan 2021 17:01:13 +0000 (17:01 +0000)]
common/mlx5: add GTP TEID modification ID

Define hardware ID for GTP TEID modification. This value
can be used later in the RTE modify field API.

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
3 years agonet/mlx5: fix count actions query in sample flow
Jiawei Wang [Tue, 26 Jan 2021 15:37:56 +0000 (17:37 +0200)]
net/mlx5: fix count actions query in sample flow

If the count action was presented in sample actions list, MLX5 PMD
created the counter resource and saved the index of counter in the
sample resource only, the counter index of flow was not updated.

This patch removes the counter index in the sampler resource and
saves it into the flow, and adds the checking to make sure only one
count be created once per flow, it's used for all sample sub flows.

Fixes: 0756228b2704 ("net/mlx5: update translate function for sample action")
Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
3 years agonet/mvpp2: add fill buffs to configuration file
Dana Vardi [Wed, 27 Jan 2021 16:09:48 +0000 (18:09 +0200)]
net/mvpp2: add fill buffs to configuration file

Extend config file with 'fill_bpool_buffs'
which control the amount of refill buffers

Signed-off-by: Dana Vardi <danat@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: update QoS defaults variable name
Dana Vardi [Wed, 27 Jan 2021 16:09:47 +0000 (18:09 +0200)]
net/mvpp2: update QoS defaults variable name

'global_default' is only being used for 'qos'
so adding 'qos' into its name

Signed-off-by: Dana Vardi <danat@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: support forwarding bad packets
Dana Vardi [Wed, 27 Jan 2021 16:09:46 +0000 (18:09 +0200)]
net/mvpp2: support forwarding bad packets

Extend the config file with option to forward packets
that were marked as "l2 bad pkts".
By default the driver drop those packets

Signed-off-by: Dana Vardi <danat@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: support custom header in config file
Dana Vardi [Wed, 27 Jan 2021 16:09:45 +0000 (18:09 +0200)]
net/mvpp2: support custom header in config file

Extend 'start_hdr' options with custom header.

Signed-off-by: Dana Vardi <danat@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: consider packet type in checksum info
Liron Himi [Wed, 27 Jan 2021 16:09:44 +0000 (18:09 +0200)]
net/mvpp2: consider packet type in checksum info

Provide checksum information based on the ptype.

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: update start header name in config file
Dana Vardi [Wed, 27 Jan 2021 16:09:43 +0000 (18:09 +0200)]
net/mvpp2: update start header name in config file

Change 'dsa_mode' to 'start_hdr' in config file

Signed-off-by: Dana Vardi <danat@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: apply flow control after port init
Liron Himi [Wed, 27 Jan 2021 16:09:42 +0000 (18:09 +0200)]
net/mvpp2: apply flow control after port init

In case ppio was not initialized yet (only at 'start' function)
the flow-ctrl setting should be saved for later stage.

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: add 2.5G link info
Meir Levi [Wed, 27 Jan 2021 16:09:41 +0000 (18:09 +0200)]
net/mvpp2: add 2.5G link info

Update capability with 2.5G support

Signed-off-by: Meir Levi <mlevi4@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: expose max MTU
Liron Himi [Wed, 27 Jan 2021 16:09:40 +0000 (18:09 +0200)]
net/mvpp2: expose max MTU

Expose max-MTU based on the max frame size that
l4 checksum generation can be done by HW.

Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Yuri Chipchev <yuric@marvell.com>
3 years agonet/mvpp2: update flow control autoneg disable handling
Yuri Chipchev [Wed, 27 Jan 2021 16:09:39 +0000 (18:09 +0200)]
net/mvpp2: update flow control autoneg disable handling

Flow control autoneg disable is not supported

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: introduce fixup for FIFO overrun
Liron Himi [Wed, 27 Jan 2021 16:09:38 +0000 (18:09 +0200)]
net/mvpp2: introduce fixup for FIFO overrun

Currently the HW is configured with only one pool which its
buffer size may be larger than the rx-fifo-size.
In that situation, frame size larger than the fifo-size
is gets dropped due to fifo overrun.
This is cause because the HW works in cut-through mode which
waits to have in the fifo at least the amount of bytes as define
in the smallest pool's buffer size.

This patch add a dummy pool which its buffer size
is very small (smaller than 64B frame). This tricks the HW and
any frame size is gets passed from the FIFO to the PP2.

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: rearrange functions order
Liron Himi [Wed, 27 Jan 2021 16:09:37 +0000 (18:09 +0200)]
net/mvpp2: rearrange functions order

Rearrange functions order

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: support user defined configuration
Liron Himi [Wed, 27 Jan 2021 16:09:36 +0000 (18:09 +0200)]
net/mvpp2: support user defined configuration

Extend the config file with 'udf' (user-defined) settings

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: skip QoS init if not requested
Liron Himi [Wed, 27 Jan 2021 16:09:35 +0000 (18:09 +0200)]
net/mvpp2: skip QoS init if not requested

Skip qos init if not requested

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: support raw flow pattern
Liron Himi [Wed, 27 Jan 2021 16:09:34 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: move common functions to common location
Liron Himi [Wed, 27 Jan 2021 16:09:33 +0000 (18:09 +0200)]
net/mvpp2: move common functions to common location

Move common functions to common location

Signed-off-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: build flow table key along with rule
Liron Himi [Wed, 27 Jan 2021 16:09:32 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: support generic flow pattern combinations
Liron Himi [Wed, 27 Jan 2021 16:09:31 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: use generic name for global config variable
Liron Himi [Wed, 27 Jan 2021 16:09:30 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: adjust number of unicast address
Liron Himi [Wed, 27 Jan 2021 16:09:29 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: add Tx flow control
Yuri Chipchev [Wed, 27 Jan 2021 16:09:28 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: support DSA mode
Liron Himi [Wed, 27 Jan 2021 16:09:27 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: update Tx checksum
Liron Himi [Wed, 27 Jan 2021 16:09:26 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: support VLAN offload
Yuri Chipchev [Wed, 27 Jan 2021 16:09:25 +0000 (18:09 +0200)]
net/mvpp2: support VLAN offload

Enable VLAN filter configuration

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: support loopback
Yuri Chipchev [Wed, 27 Jan 2021 16:09:24 +0000 (18:09 +0200)]
net/mvpp2: support loopback

Add support for loopback mode

Signed-off-by: Yuri Chipchev <yuric@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
3 years agonet/mvpp2: save initial configuration
Yuri Chipchev [Wed, 27 Jan 2021 16:09:23 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: align checking order
Yuri Chipchev [Wed, 27 Jan 2021 16:09:22 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: do cosmetic changes to cookie usage
Yuri Chipchev [Wed, 27 Jan 2021 16:09:21 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: update RSS tables reservation
Yuri Chipchev [Wed, 27 Jan 2021 16:09:20 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: fix frame size checking
Liron Himi [Wed, 27 Jan 2021 16:09:19 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: remove CRC length from MRU validation
Liron Himi [Wed, 27 Jan 2021 16:09:18 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: remove VLAN flush
Liron Himi [Wed, 27 Jan 2021 16:09:17 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: remove debug log on fast-path
Liron Himi [Wed, 27 Jan 2021 16:09:16 +0000 (18:09 +0200)]
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>
3 years agonet/mvpp2: fix stack corruption
Yuri Chipchev [Wed, 27 Jan 2021 16:09:15 +0000 (18:09 +0200)]
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>
3 years agonet/bnxt: update copyright year
Ajit Khaparde [Wed, 27 Jan 2021 16:09:43 +0000 (08:09 -0800)]
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>
3 years agonet/nfp: free port private data on close
Heinrich Kuhn [Tue, 19 Jan 2021 11:56:17 +0000 (13:56 +0200)]
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>
3 years agonet/nfp: create separate entity for PF device
Heinrich Kuhn [Tue, 19 Jan 2021 11:56:16 +0000 (13:56 +0200)]
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>
3 years agonet/ionic: fix address handling in Tx
Andrew Boyer [Mon, 18 Jan 2021 20:35:08 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: fix up function attribute tags
Andrew Boyer [Mon, 18 Jan 2021 20:35:07 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: convert per-queue offloads into queue flags
Andrew Boyer [Mon, 18 Jan 2021 20:35:06 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: allow separate L3 and L4 checksum offload
Andrew Boyer [Mon, 18 Jan 2021 20:35:05 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: observe endiannness in ioread/iowrite
Andrew Boyer [Mon, 18 Jan 2021 20:35:04 +0000 (12:35 -0800)]
net/ionic: observe endiannness in ioread/iowrite

The IONIC FW is little-endian.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
3 years agonet/ionic: inline queue space function
Andrew Boyer [Mon, 18 Jan 2021 20:35:03 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: inline queue flush function
Andrew Boyer [Mon, 18 Jan 2021 20:35:02 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: query firmware for supported queue versions
Andrew Boyer [Mon, 18 Jan 2021 20:35:00 +0000 (12:35 -0800)]
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>
3 years agonet/ionic: observe endianness in Rx filter
Andrew Boyer [Mon, 18 Jan 2021 20:34:58 +0000 (12:34 -0800)]
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>
3 years agonet/ionic: observe endianness in firmware commands
Andrew Boyer [Mon, 18 Jan 2021 20:34:57 +0000 (12:34 -0800)]
net/ionic: observe endianness in firmware commands

The IONIC firmware is little-endian.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
3 years agonet/ionic: strip out unneeded interrupt code
Andrew Boyer [Mon, 18 Jan 2021 20:34:56 +0000 (12:34 -0800)]
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>
3 years agovdpa/mlx5: fix configuration mutex cleanup
Matan Azrad [Wed, 6 Jan 2021 06:43:29 +0000 (06:43 +0000)]
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>
3 years agonet/virtio: fix Arm build with old compiler
Joyce Kong [Tue, 26 Jan 2021 09:57:43 +0000 (17:57 +0800)]
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>
3 years agoexamples/vhost: refactor vhost data path
Cheng Jiang [Tue, 12 Jan 2021 04:38:57 +0000 (04:38 +0000)]
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>
3 years agoexamples/vhost: add ioat ring space count and check
Cheng Jiang [Tue, 12 Jan 2021 04:38:56 +0000 (04:38 +0000)]
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>
3 years agonet/virtio: handle virtio-user setup failure properly
Maxime Coquelin [Tue, 26 Jan 2021 10:16:39 +0000 (11:16 +0100)]
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>
3 years agonet/virtio: improve vhost-user error logging
Maxime Coquelin [Tue, 26 Jan 2021 10:16:38 +0000 (11:16 +0100)]
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>
3 years agonet/virtio: move vhost-vDPA data to its backend
Maxime Coquelin [Tue, 26 Jan 2021 10:16:37 +0000 (11:16 +0100)]
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>
3 years agonet/virtio: move vhost-kernel data to its backend
Maxime Coquelin [Tue, 26 Jan 2021 10:16:36 +0000 (11:16 +0100)]
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>