History log of /dpdk/drivers/net/ionic/ionic_rxtx.c (Results 1 – 25 of 62)
Revision Date Author Comments
# d46b9fa8 01-Jul-2024 Andrew Boyer <andrew.boyer@amd.com>

net/ionic: fix mbuf double-free when emptying array

The bulk-allocation array is used back to front, so we need to free
everything before the marker, not after it. Flip ionic_empty_array()
so that i

net/ionic: fix mbuf double-free when emptying array

The bulk-allocation array is used back to front, so we need to free
everything before the marker, not after it. Flip ionic_empty_array()
so that it frees from 0 to the provided index. Adjust the callers
as needed.

Fixes: 218afd825bca ("net/ionic: do bulk allocations of Rx mbufs")
CC: stable@dpdk.org

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

show more ...


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


# 463ad260 07-Feb-2024 Neel Patel <neel.patel@amd.com>

net/ionic: fix missing volatile type for cqe pointers

This memory may be changed by the hardware, so the volatile
keyword is required for correctness.

Fixes: e86a6fcc7cf3 ("net/ionic: add optimized

net/ionic: fix missing volatile type for cqe pointers

This memory may be changed by the hardware, so the volatile
keyword is required for correctness.

Fixes: e86a6fcc7cf3 ("net/ionic: add optimized non-scattered Rx/Tx")
Cc: stable@dpdk.org

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Neel Patel <neel.patel@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 ...


# ba6a168a 01-Feb-2024 Sivaramakrishnan Venkat <venkatx.sivaramakrishnan@intel.com>

drivers/net: return number of supported packet types

Missing "RTE_PTYPE_UNKNOWN" ptype causes buffer overflow.
Enhance code such that the dev_supported_ptypes_get()
function pointer now returns the

drivers/net: return number of supported packet types

Missing "RTE_PTYPE_UNKNOWN" ptype causes buffer overflow.
Enhance code such that the dev_supported_ptypes_get()
function pointer now returns the number of elements to
eliminate the need for "RTE_PTYPE_UNKNOWN" as the last item.

Same applied to 'buffer_split_supported_hdr_ptypes_get()' dev_ops too.

Signed-off-by: Sivaramakrishnan Venkat <venkatx.sivaramakrishnan@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@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 ...


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

net/ionic: support Tx descriptor status

This may be useful for clients.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com>


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

net/ionic: support Rx descriptor status

These may be useful for clients.

Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com>


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

net/ionic: advertise supported packet types

This improves performance, since clients may be able to skip SW
packet classification.

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


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

net/ionic: add lookup table for checksum flags

This improves performance by reducing branching.

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


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

net/ionic: add lookup table for packet type

This improves performance by reducing branching.

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


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


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


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

net/ionic: do one-time init of Rx descriptors

These fields don't need to be set in the hot path.
This improves performance.

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


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

net/ionic: use helper variable in Tx

This improves readability.

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


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


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

net/ionic: replace void pointer with actual type

This makes the code safer by helping the compiler catch errors.
Rename the variables, too; they're not callbacks anymore.

Signed-off-by: Andrew Boye

net/ionic: replace void pointer with actual type

This makes the code safer by helping the compiler catch errors.
Rename the variables, too; they're not callbacks anymore.

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

show more ...


123