#
27595cd8 |
| 15-Apr-2024 |
Tyler Retzlaff <roretzla@linux.microsoft.com> |
drivers: move alignment attribute on types for MSVC
Move location of __rte_aligned(a) to new conventional location. The new placement between {struct,union} and the tag allows the desired alignment
drivers: move alignment attribute on types for MSVC
Move location of __rte_aligned(a) to new conventional location. The new placement between {struct,union} and the tag allows the desired alignment to be imparted on the type regardless of the toolchain being used for both C and C++. Additionally, it avoids confusion by Doxygen when generating documentation.
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.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 ...
|
#
ea81e9f2 |
| 07-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: add completion queue entries processed stats
When completion coalescing is turned on in the FW, there will be fewer CQE than Tx packets. Expose the stat through debug logging.
Signed-off
net/ionic: add completion queue entries processed stats
When completion coalescing is turned on in the FW, there will be fewer CQE than Tx packets. Expose the stat through debug logging.
Signed-off-by: Andrew Boyer <andrew.boyer@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 ...
|
#
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 ...
|
#
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 ...
|
#
218afd82 |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: do bulk allocations of Rx mbufs
Do bulk allocations to improve performance.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
|
#
9ac234ee |
| 18-Oct-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: support mbuf fast free
Use a put() rather than a free() in the optimized case.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
|
#
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 ...
|
#
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>
|
#
e19eea1e |
| 16-Feb-2021 |
Andrew Boyer <aboyer@pensando.io> |
net/ionic: store Tx fragment limit in queue
A future patch will allow Tx scatter/gather to be disabled. Store the value in the queue so it can be changed at runtime based on the configuration.
Sign
net/ionic: store Tx fragment limit in queue
A future patch will allow Tx scatter/gather to be disabled. Store the value in the queue so it can be changed at runtime based on the configuration.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
show more ...
|
#
ed522a3f |
| 16-Feb-2021 |
Andrew Boyer <aboyer@pensando.io> |
net/ionic: log queue counters when tearing down
This improves debuggability.
To see the logs, use EAL arg: --log-level=pmd.net.ionic,debug
While here, stop counting fragments, but start counting m
net/ionic: log queue counters when tearing down
This improves debuggability.
To see the logs, use EAL arg: --log-level=pmd.net.ionic,debug
While here, stop counting fragments, but start counting mtods.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
show more ...
|
#
8ec5ad7f |
| 16-Feb-2021 |
Andrew Boyer <aboyer@pensando.io> |
net/ionic: use socket id passed in for Rx and Tx queues
Pipe the value from the queue setup routines through to ionic_qcq_alloc().
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
|
#
be39f75c |
| 16-Feb-2021 |
Andrew Boyer <aboyer@pensando.io> |
net/ionic: split up queue-completion queue structure
Create a unique Q-CQ struct for adminq, notifyq, rxq, and txq to reduce the size of each object.
Minimize the size of each field to squeeze into
net/ionic: split up queue-completion queue structure
Create a unique Q-CQ struct for adminq, notifyq, rxq, and txq to reduce the size of each object.
Minimize the size of each field to squeeze into as few cachelines as possible.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
show more ...
|
#
aeb70a00 |
| 16-Feb-2021 |
Andrew Boyer <aboyer@pensando.io> |
net/ionic: remove unused interrupt free function
This will conserve resources.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
|
#
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 ...
|
#
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 ...
|
#
68591087 |
| 18-Jan-2021 |
Andrew Boyer <aboyer@pensando.io> |
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
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>
show more ...
|
#
c5d15850 |
| 18-Jan-2021 |
Andrew Boyer <aboyer@pensando.io> |
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@pens
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>
show more ...
|