#
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>
|