History log of /dpdk/drivers/net/ionic/ionic_dev.h (Results 1 – 25 of 41)
Revision Date Author Comments
# fffea1ae 20-Feb-2024 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: support vdev for embedded applications

Add support for running DPDK applications directly on AMD Pensando
embedded HW. The platform exposes the device BARs through UIO. The
UIO code in th

net/ionic: support vdev for embedded applications

Add support for running DPDK applications directly on AMD Pensando
embedded HW. The platform exposes the device BARs through UIO. The
UIO code in the common/ionic library walks the sysfs filesystem
to identify the relevant BARs and map them into process memory.

The SoCs are named 'Capri' and 'Elba'.

The vdev device interface code is located in ionic_dev_vdev.c.

Some datapath operations are #ifdef-ed out to save on resources when
running in embedded mode.

Some control path operations are skipped by the ionic_is_embedded()
helper function.

Before ringing the doorbell, use an ARM 'dsb st' barrier. The normal
barrier inside rte_write64() is insufficient on these devices due to
a chip errata.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Neel Patel <neel.patel@amd.com>
Signed-off-by: R Mohamed Shah <mohamedshah.r@amd.com>
Signed-off-by: Alfredo Cardigliano <cardigliano@ntop.org>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

show more ...


# 484027bf 20-Feb-2024 Andrew Boyer <andrew.boyer@amd.com>

common/ionic: create common code library

Move definitions that will be shared by net/ionic and crypto/ionic.
Add the code used for discovering UIO vdevs.

Signed-off-by: Andrew Boyer <andrew.boyer@a

common/ionic: create common code library

Move definitions that will be shared by net/ionic and crypto/ionic.
Add the code used for discovering UIO vdevs.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>

show more ...


# 90fa040a 07-Feb-2024 Neel Patel <neel.patel@amd.com>

net/ionic: group descriptors when using Q-in-CMB

They can be batched together with memcpy, reducing the number
of PCIe transactions. This improves transmit PPS by up to 50% in
some configurations.

net/ionic: group descriptors when using Q-in-CMB

They can be batched together with memcpy, reducing the number
of PCIe transactions. This improves transmit PPS by up to 50% in
some configurations.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Neel Patel <neel.patel@amd.com>

show more ...


# b9ece477 07-Feb-2024 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: increase max supported MTU to 9750 bytes

Some configurations want to use values this high internally.
Allow them to do so without modifying the code.

Signed-off-by: Andrew Boyer <andrew.

net/ionic: increase max supported MTU to 9750 bytes

Some configurations want to use values this high internally.
Allow them to do so without modifying the code.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Bhuvan Mital <bhuvan.mital@amd.com>

show more ...


# a5b1ffd8 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: add watchdogs to protect each queue type

Ring the doorbell again for the following scenarios:
* No receives posted but Rx queue not empty after deadline
* No transmits posted but Tx wor

net/ionic: add watchdogs to protect each queue type

Ring the doorbell again for the following scenarios:
* No receives posted but Rx queue not empty after deadline
* No transmits posted but Tx work still pending after deadline
* Admin queue work still pending after deadline

This will help the queues recover in the extremely rare case that
a doorbell is missed by the FW.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>

show more ...


# 13133a28 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: retry init commands up to five times

In some configurations, the FW may return EAGAIN if it is not able
to respond to commands immediately. Retry the init commands in this
case to prevent

net/ionic: retry init commands up to five times

In some configurations, the FW may return EAGAIN if it is not able
to respond to commands immediately. Retry the init commands in this
case to prevent errors from reaching the client.

Fix up some return-code stuff while here, for clarity.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>

show more ...


# 07512941 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: allow to specify Tx free threshold

Some clients have opinions about how often to flush the
transmit ring.

The default value is the number of Tx descriptors minus the
default Tx burst siz

net/ionic: allow to specify Tx free threshold

Some clients have opinions about how often to flush the
transmit ring.

The default value is the number of Tx descriptors minus the
default Tx burst size.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>

show more ...


# 9de21005 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: add Q-in-CMB option

When 'ionic_cmb' is set to '1', queue memory will be allocated from
the device's onboard memory (Controller Memory Buffer). In some
configurations, this will dramatica

net/ionic: add Q-in-CMB option

When 'ionic_cmb' is set to '1', queue memory will be allocated from
the device's onboard memory (Controller Memory Buffer). In some
configurations, this will dramatically reduce packet latency and
increase PPS.

Add the WC_ACTIVATE flag to the PCI driver flags.
Write combining must be enabled to achieve the maximum PPS.

When the queue is in the CMB, descriptors cannot be prefetched.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Neel Patel <neel.patel@amd.com>

show more ...


# 7b20fc2f 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: overhaul Rx for performance

Linearize RX mbuf chains in the expanded info array.
Clean one and fill one per CQE (completions are not coalesced).
Touch the mbufs as little as possible in t

net/ionic: overhaul Rx for performance

Linearize RX mbuf chains in the expanded info array.
Clean one and fill one per CQE (completions are not coalesced).
Touch the mbufs as little as possible in the fill stage.
When touching the mbuf in the clean stage, use the rearm_data unions.
Ring the doorbell once at the end of the bulk clean/fill.

Signed-off-by: Neel Patel <neel.patel@amd.com>
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>

show more ...


# d5850081 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: precalculate segment lengths on Rx side

The first (header) segment includes the standard headroom.
Subsequent segments do not.

Store the fragment counts in the queue structure.

Precalcu

net/ionic: precalculate segment lengths on Rx side

The first (header) segment includes the standard headroom.
Subsequent segments do not.

Store the fragment counts in the queue structure.

Precalculating improves performance by reducing
how much work must be done in the hot path.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>

show more ...


# e7222f94 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: free all buffers during Rx queue stop

Free all of the mbufs in the receive queue when the queue is
stopped. This will allow them to be resized when the MTU is
changed.

Signed-off-by: And

net/ionic: free all buffers during Rx queue stop

Free all of the mbufs in the receive queue when the queue is
stopped. This will allow them to be resized when the MTU is
changed.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>

show more ...


# 8eaafff3 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: move PCI-specific code to separate file

For future support of virtual devices, move the PCI code to its own
file. Create a new device interface, struct ionic_dev_intf, to plug
in to commo

net/ionic: move PCI-specific code to separate file

For future support of virtual devices, move the PCI code to its own
file. Create a new device interface, struct ionic_dev_intf, to plug
in to common code.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Neel Patel <neel.patel@amd.com>
Signed-off-by: R Mohamed Shah <mohamedshah.r@amd.com>

show more ...


# 2233544b 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: remove unused identifiers

These bits are not used. Remove them to simplify the code.
Fix the spacing on the IONIC_ALIGN #define.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>


# b671e69a 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: update MTU calculations

Test min and max MTU against values read from firmware, for correctness.
Update the firmware field name, for clarity.
The device must be stopped before changing MT

net/ionic: update MTU calculations

Test min and max MTU against values read from firmware, for correctness.
Update the firmware field name, for clarity.
The device must be stopped before changing MTU, for correctness.
Store the calculated frame size in the queue, for performance.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: R Mohamed Shah <mohamedshah.r@amd.com>

show more ...


# 76668754 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: update license terms to remove GPL

Remove GPL2 and leave only BSD-3-Clause. This is more in line with
the norms of the DPDK community.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>


# a5205992 18-Oct-2022 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: update documentation and copyrights

Pensando Systems has been acquired by AMD.
Update all copyright strings and email addresses.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>


# dd10c5b4 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: break up queue post function

Break it up rather than inlining it, so that we can remove
branches from the hot path.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>


# 4ad56b7a 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: cut down queue structure

This will conserve resources.

Rename ionic_qcq_alloc() arg from 'base' to 'type_name' for clarity.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>


# c6a9a6fb 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: remove unused field from queue structure

This will conserve resources.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>


# 700f974d 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: convert info array to generic pointers

Drop the callback part of the object and store only the pointers.
This saves a bit of space and simplifies the code.

Signed-off-by: Andrew Boyer <a

net/ionic: convert info array to generic pointers

Drop the callback part of the object and store only the pointers.
This saves a bit of space and simplifies the code.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>

show more ...


# 750aebd5 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: consolidate adminq code

The adminq is the only caller of ionic_q_service(), so absorb it
into ionic_adminq_service().
Move all of the adminq code together into ionic_main.c.
Staticize a f

net/ionic: consolidate adminq code

The adminq is the only caller of ionic_q_service(), so absorb it
into ionic_adminq_service().
Move all of the adminq code together into ionic_main.c.
Staticize a few things.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>

show more ...


# 0f2b55a4 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: remove unused filter delete function

This function is unused.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>


# 2aed9865 16-Feb-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: cut down completion queue structure

Add Q_NEXT_TO_POST() and Q_NEXT_TO_SRVC() macros.
Use a precomputed size mask.

This will conserve resources.

Signed-off-by: Andrew Boyer <aboyer@pens

net/ionic: cut down completion queue structure

Add Q_NEXT_TO_POST() and Q_NEXT_TO_SRVC() macros.
Use a precomputed size mask.

This will conserve resources.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>

show more ...


# 56117636 29-Jan-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: clean up Tx queue version support

The ionic PMD only supports Tx queue version 1 or greater.
Version 1 introduced a new SGL format with support for more
fragments per descriptor.

Add rel

net/ionic: clean up Tx queue version support

The ionic PMD only supports Tx queue version 1 or greater.
Version 1 introduced a new SGL format with support for more
fragments per descriptor.

Add release notes and an explanation to the docs.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>

show more ...


# f3926b1f 18-Jan-2021 Andrew Boyer <aboyer@pensando.io>

net/ionic: observe endiannness in ioread/iowrite

The IONIC FW is little-endian.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>


12