#
d026a6b0 |
| 19-Apr-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: clean up logging
Switch to the new RTE_LOG_LINE_PREFIX logging macro. While here, fix up some trailing-newline issues reported by the new macro.
Signed-off-by: Andrew Boyer <andrew.boyer
net/ionic: clean up logging
Switch to the new RTE_LOG_LINE_PREFIX logging macro. While here, fix up some trailing-newline issues reported by the new macro.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
#
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 ...
|
#
0033e92f |
| 07-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: optimize device start
Split the queue_start operation into first-half and second-half helpers.
This allows us to batch up the queue commands during dev_start(), reducing the outage windo
net/ionic: optimize device start
Split the queue_start operation into first-half and second-half helpers.
This allows us to batch up the queue commands during dev_start(), reducing the outage window when restarting the process by about 1ms per queue.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
show more ...
|
#
7bb08900 |
| 07-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: optimize device stop
Split the queue_stop operation into first-half and second-half helpers. Move the command context from the stack into each Rx/Tx queue struct. Expose some needed admin
net/ionic: optimize device stop
Split the queue_stop operation into first-half and second-half helpers. Move the command context from the stack into each Rx/Tx queue struct. Expose some needed adminq interfaces.
This allows us to batch up the queue commands during dev_stop(), reducing the outage window when restarting the process by about 1ms per queue.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
show more ...
|
#
1a9afd1f |
| 07-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: optimize device close
Use a single device reset command to speed up dev_close(). The LIF stop and port reset commands are not needed. This reduces the outage window when restarting the pr
net/ionic: optimize device close
Use a single device reset command to speed up dev_close(). The LIF stop and port reset commands are not needed. This reduces the outage window when restarting the process by about 2ms plus another 1ms per queue.
Signed-off-by: Andrew Boyer <andrew.boyer@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 ...
|
#
51de3175 |
| 07-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: do not auto-enable Rx scatter-gather second time
The receive side will enable scatter-gather if required based on the mbuf size. If the client already enabled it in the config, it does no
net/ionic: do not auto-enable Rx scatter-gather second time
The receive side will enable scatter-gather if required based on the mbuf size. If the client already enabled it in the config, it does not need to be enabled again. This reduces log output.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
show more ...
|
#
4b53e980 |
| 03-Nov-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: fix sign extension in queue allocation
(uint16_t * uint16_t) promoted to uint64_t has a sign extension problem reported by Coverity. Cast one arg to uint64_t first to eliminate the sign e
net/ionic: fix sign extension in queue allocation
(uint16_t * uint16_t) promoted to uint64_t has a sign extension problem reported by Coverity. Cast one arg to uint64_t first to eliminate the sign extension.
Coverity issue: 381617 Coverity issue: 381618 Fixes: 7b20fc2f3c06 ("net/ionic: overhaul Rx for performance")
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 ...
|
#
15770e98 |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: use helper variable for page size
This improves readability.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
|
#
e86a6fcc |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: add optimized non-scattered Rx/Tx
The code is very similar, but the simple case can skip a few branches in the hot path. This improves PPS when 10KB mbufs are used.
S/G is enabled on the
net/ionic: add optimized non-scattered Rx/Tx
The code is very similar, but the simple case can skip a few branches in the hot path. This improves PPS when 10KB mbufs are used.
S/G is enabled on the Rx side by offload DEV_RX_OFFLOAD_SCATTER. S/G is enabled on the Tx side by offload DEV_TX_OFFLOAD_MULTI_SEGS.
S/G is automatically enabled on the Rx side if the provided mbufs are too small to hold the maximum possible frame.
To enable S/G in testpmd, add these args: --rx-offloads=0x2000 --tx-offloads=0x8000
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com> Signed-off-by: R Mohamed Shah <mohamedshah.r@amd.com>
show more ...
|
#
c5d0bb79 |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: add alignment and socket info in allocations
This will avoid memory access penalties on NUMA systems.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
|
#
c663c7ec |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: use calloc for array allocations
Use rte_calloc() where appropriate. This makes the code clearer.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
|
#
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 ...
|
#
b4beb84a |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: overhaul Tx for performance
Linearize Tx mbuf chains in the info array. This avoids walking the mbuf chain during flush. Move a few branches out of the hot path.
Signed-off-by: Andrew Bo
net/ionic: overhaul Tx for performance
Linearize Tx mbuf chains in the info array. This avoids walking the mbuf chain during flush. Move a few branches out of the hot path.
Signed-off-by: Andrew Boyer <andrew.boyer@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 ...
|
#
0a00bdaf |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: request notifyq interrupt only if supported
Enable the interrupt if the platform & device support it. This prevents spurious interrupts on virtual platforms.
Signed-off-by: Andrew Boyer
net/ionic: request notifyq interrupt only if supported
Enable the interrupt if the platform & device support it. This prevents spurious interrupts on virtual platforms.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
show more ...
|
#
84cf25bd |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: remove doorbell map helper
There is only one doorbell page in DPDK configurations, so no helper function is needed.
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>
|
#
26cc5dc2 |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: fix reported error stats
Report descriptor errors in ierrors instead of imissed. Don't report rx_queue_empty or rx_queue_disabled in imissed, since those packet errors are already include
net/ionic: fix reported error stats
Report descriptor errors in ierrors instead of imissed. Don't report rx_queue_empty or rx_queue_disabled in imissed, since those packet errors are already included in the rx_*_drop_packets counters. This makes the reported stats correct.
Fixes: 3cdfd90579e7 ("net/ionic: add stats") Cc: stable@dpdk.org
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
show more ...
|
#
295968d1 |
| 22-Oct-2021 |
Ferruh Yigit <ferruh.yigit@intel.com> |
ethdev: add namespace
Add 'RTE_ETH' namespace to all enums & macros in a backward compatible way. The macros for backward compatibility can be removed in next LTS. Also updated some struct names to
ethdev: add namespace
Add 'RTE_ETH' namespace to all enums & macros in a backward compatible way. The macros for backward compatibility can be removed in next LTS. Also updated some struct names to have 'rte_eth' prefix.
All internal components switched to using new names.
Syntax fixed on lines that this patch touches.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com> Acked-by: Jerin Jacob <jerinj@marvell.com> Acked-by: Wisam Jaddo <wisamm@nvidia.com> Acked-by: Rosen Xu <rosen.xu@intel.com> Acked-by: Chenbo Xia <chenbo.xia@intel.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> Acked-by: Somnath Kotur <somnath.kotur@broadcom.com>
show more ...
|