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 ...
|
8e7a6b8a | 20-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: remove duplicate barriers
These barriers are duplicated by the barriers inside rte_write64(). Remove them to improve performance.
Signed-off-by: Neel Patel <neel.patel@amd.com> Signed-of
net/ionic: remove duplicate barriers
These barriers are duplicated by the barriers inside rte_write64(). Remove them to improve performance.
Signed-off-by: Neel Patel <neel.patel@amd.com> Signed-off-by: Andrew Boyer <andrew.boyer@amd.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.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 ...
|
73028be3 | 07-Feb-2024 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: fix device close
The close routine should release all resources, but not call rte_eth_dev_destroy(). As written this code will call rte_eth_dev_release_port() twice and segfault.
Instead
net/ionic: fix device close
The close routine should release all resources, but not call rte_eth_dev_destroy(). As written this code will call rte_eth_dev_release_port() twice and segfault.
Instead, move rte_eth_dev_destroy() to the remove routine. eth_ionic_dev_uninit() will call close if necessary.
Fixes: 175e4e7ed760 ("net/ionic: complete release on close") Cc: stable@dpdk.org
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
show more ...
|
081d035e | 07-Feb-2024 |
Brad Larson <bradley.larson@amd.com> |
net/ionic: add flexible firmware xstats
Assign 32 counters for flexible firmware events. These can be used as per-port or per-queue counters in certain firmware configurations. They are displayed as
net/ionic: add flexible firmware xstats
Assign 32 counters for flexible firmware events. These can be used as per-port or per-queue counters in certain firmware configurations. They are displayed as fw_flex_eventX in xstats.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com> Signed-off-by: Brad Larson <bradley.larson@amd.com>
show more ...
|
2d342155 | 07-Feb-2024 |
Vamsi Krishna Atluri <vamsi.atluri@amd.com> |
net/ionic: support 1G and 200G link speeds
The hardware supports these speeds, so we should report them correctly.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com> Signed-off-by: Vamsi Krishna At
net/ionic: support 1G and 200G link speeds
The hardware supports these speeds, so we should report them correctly.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com> Signed-off-by: Vamsi Krishna Atluri <vamsi.atluri@amd.com>
show more ...
|
1df32bfd | 07-Feb-2024 |
Akshay Dorwat <akshay.dorwat@amd.com> |
net/ionic: fix RSS query
The routine that copies out the RSS config can't use memcpy() because 'reta_conf->reta' is an array of uint16_t while 'lif->rss_ind_tbl' is an array of uint8_t. Instead, cop
net/ionic: fix RSS query
The routine that copies out the RSS config can't use memcpy() because 'reta_conf->reta' is an array of uint16_t while 'lif->rss_ind_tbl' is an array of uint8_t. Instead, copy the values individually.
Fixes: 22e7171bc63b ("net/ionic: support RSS") Cc: stable@dpdk.org
Signed-off-by: Akshay Dorwat <akshay.dorwat@amd.com> 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 ...
|
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 ...
|
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 ...
|
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 ...
|
3c02593c | 03-Nov-2022 |
Andrew Boyer <andrew.boyer@amd.com> |
net/ionic: fix false positive forward-null in Tx
If tx_pkts is NULL, nb_pkts must be 0. Coverity doesn't know this so it thinks this is a forward-NULL violation. Make things more clear by checking f
net/ionic: fix false positive forward-null in Tx
If tx_pkts is NULL, nb_pkts must be 0. Coverity doesn't know this so it thinks this is a forward-NULL violation. Make things more clear by checking for nb_pkts instead.
Coverity issue: 381614 Coverity issue: 381619 Fixes: e86a6fcc7cf3 ("net/ionic: add optimized non-scattered Rx/Tx")
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 ...
|