* [RFC 00/10] Remove weak symbols
@ 2025-02-07 8:32 David Marchand
2025-02-07 8:32 ` [RFC 01/10] bus/auxiliary: remove " David Marchand
` (9 more replies)
0 siblings, 10 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue
This is an alternative to André series:
https://inbox.dpdk.org/dev/1735009552-31906-1-git-send-email-andremue@linux.microsoft.com/
Weak symbols can be easily replaced with some linking updates, and make
it clearer which symbols are actually ending up in the final binary.
--
David Marchand
David Marchand (10):
bus/auxiliary: remove weak symbols
common/qat: remove weak symbols
drivers: remove weak symbols in Nitrox drivers
net/enic: remove weak symbols
net/hns3: remove weak symbols
net/fm10k: remove weak symbols
net/nfp: remove weak symbols
net/virtio: remove weak symbols
app/compress-perf: remove weak symbols
eal: deprecate weak symbols
app/test-compress-perf/main.c | 62 --------------------
doc/guides/rel_notes/release_25_03.rst | 2 +
drivers/bus/auxiliary/auxiliary_common.c | 6 +-
drivers/bus/auxiliary/meson.build | 1 +
drivers/common/nitrox/meson.build | 3 -
drivers/common/nitrox/nitrox_device.c | 75 +++++++++---------------
drivers/common/nitrox/nitrox_device.h | 16 +++++
drivers/common/nitrox/version.map | 1 +
drivers/common/qat/qat_qp.c | 8 ---
drivers/common/qat/qat_qp.h | 5 --
drivers/compress/nitrox/meson.build | 2 -
drivers/compress/nitrox/nitrox_comp.c | 6 ++
drivers/crypto/nitrox/meson.build | 2 -
drivers/crypto/nitrox/nitrox_sym.c | 6 ++
drivers/net/enic/enic_main.c | 8 +--
drivers/net/enic/meson.build | 1 +
drivers/net/hns3/hns3_rxtx.c | 22 ++++---
drivers/net/intel/fm10k/fm10k_ethdev.c | 20 ++++---
drivers/net/nfp/meson.build | 7 ++-
drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c | 2 +-
drivers/net/nfp/nfp_rxtx_vec_stub.c | 4 +-
drivers/net/virtio/meson.build | 5 ++
drivers/net/virtio/virtio_rxtx.c | 6 +-
drivers/net/virtio/virtio_rxtx_simple.c | 4 +-
lib/eal/include/rte_common.h | 6 +-
25 files changed, 119 insertions(+), 161 deletions(-)
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 01/10] bus/auxiliary: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 02/10] common/qat: " David Marchand
` (8 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, Parav Pandit, Xueming Li
Rather than use weak symbols, expose stubs symbols when needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/bus/auxiliary/auxiliary_common.c | 6 ++++--
drivers/bus/auxiliary/meson.build | 1 +
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/bus/auxiliary/auxiliary_common.c b/drivers/bus/auxiliary/auxiliary_common.c
index e6cbc4d356..b444eb43ef 100644
--- a/drivers/bus/auxiliary/auxiliary_common.c
+++ b/drivers/bus/auxiliary/auxiliary_common.c
@@ -36,12 +36,13 @@ auxiliary_devargs_lookup(const char *name)
return NULL;
}
+#ifndef AUXILIARY_OS_SUPPORTED
/*
* Test whether the auxiliary device exist.
*
* Stub for OS not supporting auxiliary bus.
*/
-__rte_weak bool
+bool
auxiliary_dev_exists(const char *name)
{
RTE_SET_USED(name);
@@ -53,11 +54,12 @@ auxiliary_dev_exists(const char *name)
*
* Stub for OS not supporting auxiliary bus.
*/
-__rte_weak int
+int
auxiliary_scan(void)
{
return 0;
}
+#endif /* AUXILIARY_OS_SUPPORTED */
/*
* Update a device's devargs being scanned.
diff --git a/drivers/bus/auxiliary/meson.build b/drivers/bus/auxiliary/meson.build
index 10468fd130..38d2f05d4b 100644
--- a/drivers/bus/auxiliary/meson.build
+++ b/drivers/bus/auxiliary/meson.build
@@ -7,6 +7,7 @@ sources = files(
'auxiliary_params.c',
)
if is_linux
+ cflags += '-DAUXILIARY_OS_SUPPORTED'
sources += files(
'linux/auxiliary.c',
)
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 02/10] common/qat: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
2025-02-07 8:32 ` [RFC 01/10] bus/auxiliary: remove " David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 03/10] drivers: remove weak symbols in Nitrox drivers David Marchand
` (7 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, Kai Ji
Remove dead code, those symbols are never used as the "strong" symbols
are always linked in.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/common/qat/qat_qp.c | 8 --------
drivers/common/qat/qat_qp.h | 5 -----
2 files changed, 13 deletions(-)
diff --git a/drivers/common/qat/qat_qp.c b/drivers/common/qat/qat_qp.c
index 4bf9bac23e..0d2bbdb8a5 100644
--- a/drivers/common/qat/qat_qp.c
+++ b/drivers/common/qat/qat_qp.c
@@ -944,11 +944,3 @@ qat_cq_get_fw_cipher_crc_cap(struct qat_qp *qp)
return ret;
}
#endif
-
-__rte_weak int
-qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused,
- void *op_cookie __rte_unused,
- uint64_t *dequeue_err_count __rte_unused)
-{
- return 0;
-}
diff --git a/drivers/common/qat/qat_qp.h b/drivers/common/qat/qat_qp.h
index f0ea907503..5ccaedefa7 100644
--- a/drivers/common/qat/qat_qp.h
+++ b/drivers/common/qat/qat_qp.h
@@ -156,11 +156,6 @@ int
qat_cq_get_fw_cipher_crc_cap(struct qat_qp *qp);
#endif
-/* Needed for weak function*/
-int
-qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused,
- void *op_cookie __rte_unused,
- uint64_t *dequeue_err_count __rte_unused);
int
qat_read_qp_config(struct qat_pci_device *qat_dev);
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 03/10] drivers: remove weak symbols in Nitrox drivers
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
2025-02-07 8:32 ` [RFC 01/10] bus/auxiliary: remove " David Marchand
2025-02-07 8:32 ` [RFC 02/10] common/qat: " David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 04/10] net/enic: remove weak symbols David Marchand
` (6 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev
Cc: thomas, bruce.richardson, andremue, Nagadheeraj Rottela,
Srikanth Jampala, Fan Zhang, Ashish Gupta
Make compress and crypto drivers register to the common driver.
Remove (unneeded) include_directories().
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/common/nitrox/meson.build | 3 --
drivers/common/nitrox/nitrox_device.c | 75 ++++++++++-----------------
drivers/common/nitrox/nitrox_device.h | 16 ++++++
drivers/common/nitrox/version.map | 1 +
drivers/compress/nitrox/meson.build | 2 -
drivers/compress/nitrox/nitrox_comp.c | 6 +++
drivers/crypto/nitrox/meson.build | 2 -
drivers/crypto/nitrox/nitrox_sym.c | 6 +++
8 files changed, 57 insertions(+), 54 deletions(-)
diff --git a/drivers/common/nitrox/meson.build b/drivers/common/nitrox/meson.build
index f3cb42f006..115dd8de4d 100644
--- a/drivers/common/nitrox/meson.build
+++ b/drivers/common/nitrox/meson.build
@@ -14,6 +14,3 @@ sources += files(
'nitrox_logs.c',
'nitrox_qp.c',
)
-
-includes += include_directories('../../crypto/nitrox')
-includes += include_directories('../../compress/nitrox')
diff --git a/drivers/common/nitrox/nitrox_device.c b/drivers/common/nitrox/nitrox_device.c
index 39edc440a7..6cd57faaa4 100644
--- a/drivers/common/nitrox/nitrox_device.c
+++ b/drivers/common/nitrox/nitrox_device.c
@@ -6,8 +6,6 @@
#include "nitrox_device.h"
#include "nitrox_hal.h"
-#include "nitrox_sym.h"
-#include "nitrox_comp.h"
#define PCI_VENDOR_ID_CAVIUM 0x177d
#define NITROX_V_PCI_VF_DEV_ID 0x13
@@ -63,11 +61,21 @@ ndev_release(struct nitrox_device *ndev)
rte_free(ndev);
}
+TAILQ_HEAD(ndrv_list, nitrox_driver);
+static struct ndrv_list ndrv_list = TAILQ_HEAD_INITIALIZER(ndrv_list);
+
+void
+nitrox_register_driver(struct nitrox_driver *ndrv)
+{
+ TAILQ_INSERT_TAIL(&ndrv_list, ndrv, next);
+}
+
static int
nitrox_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
struct rte_pci_device *pdev)
{
struct nitrox_device *ndev;
+ struct nitrox_driver *ndrv;
int err = -1;
/* Nitrox CSR space */
@@ -79,19 +87,21 @@ nitrox_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
return -ENOMEM;
ndev_init(ndev, pdev);
- err = nitrox_sym_pmd_create(ndev);
- if (err)
- goto sym_pmd_err;
-
- err = nitrox_comp_pmd_create(ndev);
- if (err)
- goto comp_pmd_err;
+ TAILQ_FOREACH(ndrv, &ndrv_list, next) {
+ err = ndrv->create(ndev);
+ if (err)
+ goto drv_err;
+ }
return 0;
-comp_pmd_err:
- nitrox_sym_pmd_destroy(ndev);
-sym_pmd_err:
+drv_err:
+ ndrv = TAILQ_PREV(ndrv, ndrv_list, next);
+ while (ndrv != NULL) {
+ ndrv->destroy(ndev);
+ ndrv = TAILQ_PREV(ndrv, ndrv_list, next);
+ }
+
ndev_release(ndev);
return err;
}
@@ -100,19 +110,18 @@ static int
nitrox_pci_remove(struct rte_pci_device *pdev)
{
struct nitrox_device *ndev;
+ struct nitrox_driver *ndrv;
int err;
ndev = find_ndev(pdev);
if (!ndev)
return -ENODEV;
- err = nitrox_sym_pmd_destroy(ndev);
- if (err)
- return err;
-
- err = nitrox_comp_pmd_destroy(ndev);
- if (err)
- return err;
+ TAILQ_FOREACH(ndrv, &ndrv_list, next) {
+ err = ndrv->destroy(ndev);
+ if (err)
+ return err;
+ }
ndev_release(ndev);
return 0;
@@ -133,33 +142,5 @@ static struct rte_pci_driver nitrox_pmd = {
.remove = nitrox_pci_remove,
};
-__rte_weak int
-nitrox_sym_pmd_create(struct nitrox_device *ndev)
-{
- RTE_SET_USED(ndev);
- return 0;
-}
-
-__rte_weak int
-nitrox_sym_pmd_destroy(struct nitrox_device *ndev)
-{
- RTE_SET_USED(ndev);
- return 0;
-}
-
-__rte_weak int
-nitrox_comp_pmd_create(struct nitrox_device *ndev)
-{
- RTE_SET_USED(ndev);
- return 0;
-}
-
-__rte_weak int
-nitrox_comp_pmd_destroy(struct nitrox_device *ndev)
-{
- RTE_SET_USED(ndev);
- return 0;
-}
-
RTE_PMD_REGISTER_PCI(nitrox, nitrox_pmd);
RTE_PMD_REGISTER_PCI_TABLE(nitrox, pci_id_nitrox_map);
diff --git a/drivers/common/nitrox/nitrox_device.h b/drivers/common/nitrox/nitrox_device.h
index 877bccb321..b74b71808e 100644
--- a/drivers/common/nitrox/nitrox_device.h
+++ b/drivers/common/nitrox/nitrox_device.h
@@ -6,6 +6,7 @@
#define _NITROX_DEVICE_H_
#include <bus_pci_driver.h>
+#include <rte_compat.h>
struct nitrox_sym_device;
struct nitrox_comp_device;
@@ -21,4 +22,19 @@ struct nitrox_device {
uint16_t nr_queues;
};
+struct nitrox_driver {
+ TAILQ_ENTRY(nitrox_driver) next;
+ int (*create)(struct nitrox_device *ndev);
+ int (*destroy)(struct nitrox_device *ndev);
+};
+
+__rte_internal
+void nitrox_register_driver(struct nitrox_driver *ndrv);
+
+#define NITROX_REGISTER_DRIVER(ndrv) \
+RTE_INIT(ndrv ## _register) \
+{ \
+ nitrox_register_driver(&ndrv); \
+}
+
#endif /* _NITROX_DEVICE_H_ */
diff --git a/drivers/common/nitrox/version.map b/drivers/common/nitrox/version.map
index 43295171e4..f58c044fc5 100644
--- a/drivers/common/nitrox/version.map
+++ b/drivers/common/nitrox/version.map
@@ -4,6 +4,7 @@ INTERNAL {
nitrox_logtype;
nitrox_qp_release;
nitrox_qp_setup;
+ nitrox_register_driver;
local: *;
};
diff --git a/drivers/compress/nitrox/meson.build b/drivers/compress/nitrox/meson.build
index 1becc66912..5cecc2ad66 100644
--- a/drivers/compress/nitrox/meson.build
+++ b/drivers/compress/nitrox/meson.build
@@ -12,5 +12,3 @@ sources += files(
'nitrox_comp.c',
'nitrox_comp_reqmgr.c',
)
-
-includes += include_directories('../../common/nitrox')
diff --git a/drivers/compress/nitrox/nitrox_comp.c b/drivers/compress/nitrox/nitrox_comp.c
index 1b2054c61a..41a3ee0de8 100644
--- a/drivers/compress/nitrox/nitrox_comp.c
+++ b/drivers/compress/nitrox/nitrox_comp.c
@@ -602,3 +602,9 @@ nitrox_comp_pmd_destroy(struct nitrox_device *ndev)
ndev->comp_dev = NULL;
return 0;
}
+
+static struct nitrox_driver comp_drv = {
+ .create = nitrox_comp_pmd_create,
+ .destroy = nitrox_comp_pmd_destroy,
+};
+NITROX_REGISTER_DRIVER(comp_drv);
diff --git a/drivers/crypto/nitrox/meson.build b/drivers/crypto/nitrox/meson.build
index f8887713d2..cbe2b7d6dc 100644
--- a/drivers/crypto/nitrox/meson.build
+++ b/drivers/crypto/nitrox/meson.build
@@ -13,5 +13,3 @@ sources += files(
'nitrox_sym_capabilities.c',
'nitrox_sym_reqmgr.c',
)
-
-includes += include_directories('../../common/nitrox')
diff --git a/drivers/crypto/nitrox/nitrox_sym.c b/drivers/crypto/nitrox/nitrox_sym.c
index da70121d91..7c2dc98a4b 100644
--- a/drivers/crypto/nitrox/nitrox_sym.c
+++ b/drivers/crypto/nitrox/nitrox_sym.c
@@ -798,6 +798,12 @@ nitrox_sym_pmd_destroy(struct nitrox_device *ndev)
return rte_cryptodev_pmd_destroy(ndev->sym_dev->cdev);
}
+static struct nitrox_driver sym_drv = {
+ .create = nitrox_sym_pmd_create,
+ .destroy = nitrox_sym_pmd_destroy,
+};
+NITROX_REGISTER_DRIVER(sym_drv);
+
static struct cryptodev_driver nitrox_crypto_drv;
RTE_PMD_REGISTER_CRYPTO_DRIVER(nitrox_crypto_drv,
nitrox_rte_sym_drv,
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 04/10] net/enic: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (2 preceding siblings ...)
2025-02-07 8:32 ` [RFC 03/10] drivers: remove weak symbols in Nitrox drivers David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 05/10] net/hns3: " David Marchand
` (5 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, John Daley, Hyong Youb Kim
Rather than use weak symbols, expose stubs symbols when needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/enic/enic_main.c | 8 +++-----
drivers/net/enic/meson.build | 1 +
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index b755b15d92..5ee2ae555d 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -509,15 +509,13 @@ static void enic_prep_wq_for_simple_tx(struct enic *enic, uint16_t queue_idx)
}
}
-/*
- * The 'strong' version is in enic_rxtx_vec_avx2.c. This weak version is used
- * used when that file is not compiled.
- */
-__rte_weak bool
+#ifndef ENIC_RXTX_VEC
+bool
enic_use_vector_rx_handler(__rte_unused struct rte_eth_dev *eth_dev)
{
return false;
}
+#endif /* ENIC_RXTX_VEC */
void enic_pick_rx_handler(struct rte_eth_dev *eth_dev)
{
diff --git a/drivers/net/enic/meson.build b/drivers/net/enic/meson.build
index 00f8348348..1e26338350 100644
--- a/drivers/net/enic/meson.build
+++ b/drivers/net/enic/meson.build
@@ -33,6 +33,7 @@ includes += include_directories('base')
# may not. This is to support users who build for the min supported machine
# and need to run the binary on newer CPUs too.
if dpdk_conf.has('RTE_ARCH_X86_64')
+ cflags += '-DENIC_RXTX_VEC'
enic_avx2_lib = static_library('enic_avx2_lib',
'enic_rxtx_vec_avx2.c',
dependencies: [static_rte_ethdev, static_rte_bus_pci],
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 05/10] net/hns3: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (3 preceding siblings ...)
2025-02-07 8:32 ` [RFC 04/10] net/enic: remove weak symbols David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 06/10] net/fm10k: " David Marchand
` (4 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, Jie Hai
Rather than use weak symbols, expose stubs symbols when needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/hns3/hns3_rxtx.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 09e39cb673..0b42b9826e 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -2787,18 +2787,19 @@ hns3_recv_scattered_pkts(void *rx_queue,
return nb_rx;
}
-void __rte_weak
+#ifndef RTE_ARCH_ARM64
+void
hns3_rxq_vec_setup(__rte_unused struct hns3_rx_queue *rxq)
{
}
-int __rte_weak
+int
hns3_rx_check_vec_support(__rte_unused struct rte_eth_dev *dev)
{
return -ENOTSUP;
}
-uint16_t __rte_weak
+uint16_t
hns3_recv_pkts_vec(__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
__rte_unused uint16_t nb_pkts)
@@ -2806,13 +2807,16 @@ hns3_recv_pkts_vec(__rte_unused void *rx_queue,
return 0;
}
-uint16_t __rte_weak
+#ifndef RTE_HAS_SVE_ACLE
+uint16_t
hns3_recv_pkts_vec_sve(__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
__rte_unused uint16_t nb_pkts)
{
return 0;
}
+#endif /* RTE_HAS_SVE_ACLE */
+#endif /* RTE_ARCH_ARM64 */
int
hns3_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
@@ -4256,13 +4260,14 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
return nb_tx;
}
-int __rte_weak
+#ifndef RTE_ARCH_ARM64
+int
hns3_tx_check_vec_support(__rte_unused struct rte_eth_dev *dev)
{
return -ENOTSUP;
}
-uint16_t __rte_weak
+uint16_t
hns3_xmit_pkts_vec(__rte_unused void *tx_queue,
__rte_unused struct rte_mbuf **tx_pkts,
__rte_unused uint16_t nb_pkts)
@@ -4270,13 +4275,16 @@ hns3_xmit_pkts_vec(__rte_unused void *tx_queue,
return 0;
}
-uint16_t __rte_weak
+#ifndef RTE_HAS_SVE_ACLE
+uint16_t
hns3_xmit_pkts_vec_sve(void __rte_unused * tx_queue,
struct rte_mbuf __rte_unused **tx_pkts,
uint16_t __rte_unused nb_pkts)
{
return 0;
}
+#endif /* RTE_HAS_SVE_ACLE */
+#endif /* RTE_ARCH_ARM64 */
int
hns3_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 06/10] net/fm10k: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (4 preceding siblings ...)
2025-02-07 8:32 ` [RFC 05/10] net/hns3: " David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:51 ` Bruce Richardson
2025-02-07 8:32 ` [RFC 07/10] net/nfp: " David Marchand
` (3 subsequent siblings)
9 siblings, 1 reply; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue
Rather than use weak symbols, expose stubs symbols when needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/intel/fm10k/fm10k_ethdev.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/net/intel/fm10k/fm10k_ethdev.c b/drivers/net/intel/fm10k/fm10k_ethdev.c
index 7b490bea17..633c501ce8 100644
--- a/drivers/net/intel/fm10k/fm10k_ethdev.c
+++ b/drivers/net/intel/fm10k/fm10k_ethdev.c
@@ -129,14 +129,15 @@ fm10k_mbx_unlock(struct fm10k_hw *hw)
rte_spinlock_unlock(FM10K_DEV_PRIVATE_TO_MBXLOCK(hw->back));
}
-/* Stubs needed for linkage when vPMD is disabled */
-__rte_weak int
+#ifndef RTE_ARCH_X86
+/* Stubs for non x86 architectures. */
+int
fm10k_rx_vec_condition_check(__rte_unused struct rte_eth_dev *dev)
{
return -1;
}
-__rte_weak uint16_t
+uint16_t
fm10k_recv_pkts_vec(
__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
@@ -145,7 +146,7 @@ fm10k_recv_pkts_vec(
return 0;
}
-__rte_weak uint16_t
+uint16_t
fm10k_recv_scattered_pkts_vec(
__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
@@ -154,39 +155,40 @@ fm10k_recv_scattered_pkts_vec(
return 0;
}
-__rte_weak int
+int
fm10k_rxq_vec_setup(__rte_unused struct fm10k_rx_queue *rxq)
{
return -1;
}
-__rte_weak void
+void
fm10k_rx_queue_release_mbufs_vec(
__rte_unused struct fm10k_rx_queue *rxq)
{
return;
}
-__rte_weak void
+void
fm10k_txq_vec_setup(__rte_unused struct fm10k_tx_queue *txq)
{
return;
}
-__rte_weak int
+int
fm10k_tx_vec_condition_check(__rte_unused struct fm10k_tx_queue *txq)
{
return -1;
}
-__rte_weak uint16_t
+uint16_t
fm10k_xmit_fixed_burst_vec(__rte_unused void *tx_queue,
__rte_unused struct rte_mbuf **tx_pkts,
__rte_unused uint16_t nb_pkts)
{
return 0;
}
+#endif /* RTE_ARCH_X86 */
/*
* reset queue to initial state, allocate software buffers used when starting
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 07/10] net/nfp: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (5 preceding siblings ...)
2025-02-07 8:32 ` [RFC 06/10] net/fm10k: " David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:44 ` Chaoyong He
2025-02-07 8:32 ` [RFC 08/10] net/virtio: " David Marchand
` (2 subsequent siblings)
9 siblings, 1 reply; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, Chaoyong He
Rather than use weak symbols, link stubs code when needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/nfp/meson.build | 7 +++++--
drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c | 2 +-
drivers/net/nfp/nfp_rxtx_vec_stub.c | 4 ++--
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build
index 4052846dc2..39762bd45a 100644
--- a/drivers/net/nfp/meson.build
+++ b/drivers/net/nfp/meson.build
@@ -17,7 +17,6 @@ sources = files(
'flower/nfp_flower_service.c',
'nfd3/nfp_nfd3_dp.c',
'nfdk/nfp_nfdk_dp.c',
- 'nfdk/nfp_nfdk_vec_stub.c',
'nfpcore/nfp_cppcore.c',
'nfpcore/nfp_crc.c',
'nfpcore/nfp_elf.c',
@@ -45,7 +44,6 @@ sources = files(
'nfp_net_flow.c',
'nfp_net_meta.c',
'nfp_rxtx.c',
- 'nfp_rxtx_vec_stub.c',
'nfp_service.c',
)
@@ -67,6 +65,11 @@ if arch_subdir == 'x86'
)
objs += nfp_avx2_lib.extract_all_objects(recursive: true)
+else
+ sources += files(
+ 'nfp_rxtx_vec_stub.c',
+ 'nfdk/nfp_nfdk_vec_stub.c',
+ )
endif
deps += ['hash', 'security', 'common_nfp']
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c b/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
index 146ec21d51..4f905bce6b 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
@@ -5,7 +5,7 @@
#include "nfp_nfdk_vec.h"
-uint16_t __rte_weak
+uint16_t
nfp_net_nfdk_vec_avx2_xmit_pkts(__rte_unused void *tx_queue,
__rte_unused struct rte_mbuf **tx_pkts,
__rte_unused uint16_t nb_pkts)
diff --git a/drivers/net/nfp/nfp_rxtx_vec_stub.c b/drivers/net/nfp/nfp_rxtx_vec_stub.c
index c480f61ef0..201965afbe 100644
--- a/drivers/net/nfp/nfp_rxtx_vec_stub.c
+++ b/drivers/net/nfp/nfp_rxtx_vec_stub.c
@@ -10,13 +10,13 @@
#include "nfp_rxtx_vec.h"
-bool __rte_weak
+bool
nfp_net_get_avx2_supported(void)
{
return false;
}
-uint16_t __rte_weak
+uint16_t
nfp_net_vec_avx2_recv_pkts(__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
__rte_unused uint16_t nb_pkts)
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 08/10] net/virtio: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (6 preceding siblings ...)
2025-02-07 8:32 ` [RFC 07/10] net/nfp: " David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 09/10] app/compress-perf: " David Marchand
2025-02-07 8:32 ` [RFC 10/10] eal: deprecate " David Marchand
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, Maxime Coquelin, Chenbo Xia
Rather than use weak symbols, expose stubs symbols when needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/virtio/meson.build | 5 +++++
drivers/net/virtio/virtio_rxtx.c | 6 ++++--
drivers/net/virtio/virtio_rxtx_simple.c | 4 +++-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build
index c708ea5258..56c763e96f 100644
--- a/drivers/net/virtio/meson.build
+++ b/drivers/net/virtio/meson.build
@@ -28,6 +28,7 @@ cflags += no_wvla_cflag
if arch_subdir == 'x86'
if cc_has_avx512
cflags += ['-DCC_AVX512_SUPPORT']
+ cflags += ['-DVIRTIO_RXTX_PACKED_VEC']
virtio_avx512_lib = static_library('virtio_avx512_lib',
'virtio_rxtx_packed.c',
dependencies: [static_rte_ethdev,
@@ -43,11 +44,15 @@ if arch_subdir == 'x86'
cflags += '-DVIRTIO_ICC_UNROLL_PRAGMA'
endif
endif
+ cflags += ['-DVIRTIO_RXTX_VEC']
sources += files('virtio_rxtx_simple_sse.c')
elif arch_subdir == 'ppc'
+ cflags += ['-DVIRTIO_RXTX_VEC']
sources += files('virtio_rxtx_simple_altivec.c')
elif arch_subdir == 'arm' and dpdk_conf.get('RTE_ARCH_64')
+ cflags += ['-DVIRTIO_RXTX_PACKED_VEC']
sources += files('virtio_rxtx_packed.c')
+ cflags += ['-DVIRTIO_RXTX_VEC']
sources += files('virtio_rxtx_simple_neon.c')
endif
diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index b67f063b31..2a0d1b6101 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -2045,7 +2045,8 @@ virtio_xmit_pkts_inorder(void *tx_queue,
return nb_tx;
}
-__rte_weak uint16_t
+#ifndef VIRTIO_RXTX_PACKED_VEC
+uint16_t
virtio_recv_pkts_packed_vec(void *rx_queue __rte_unused,
struct rte_mbuf **rx_pkts __rte_unused,
uint16_t nb_pkts __rte_unused)
@@ -2053,10 +2054,11 @@ virtio_recv_pkts_packed_vec(void *rx_queue __rte_unused,
return 0;
}
-__rte_weak uint16_t
+uint16_t
virtio_xmit_pkts_packed_vec(void *tx_queue __rte_unused,
struct rte_mbuf **tx_pkts __rte_unused,
uint16_t nb_pkts __rte_unused)
{
return 0;
}
+#endif /* DVIRTIO_RXTX_PACKED_VEC */
diff --git a/drivers/net/virtio/virtio_rxtx_simple.c b/drivers/net/virtio/virtio_rxtx_simple.c
index 439e00a7e1..aa96c9c488 100644
--- a/drivers/net/virtio/virtio_rxtx_simple.c
+++ b/drivers/net/virtio/virtio_rxtx_simple.c
@@ -43,8 +43,9 @@ virtio_rxq_vec_setup(struct virtnet_rx *rxq)
return 0;
}
+#ifndef VIRTIO_RXTX_VEC
/* Stub for linkage when arch specific implementation is not available */
-__rte_weak uint16_t
+uint16_t
virtio_recv_pkts_vec(void *rx_queue __rte_unused,
struct rte_mbuf **rx_pkts __rte_unused,
uint16_t nb_pkts __rte_unused)
@@ -52,3 +53,4 @@ virtio_recv_pkts_vec(void *rx_queue __rte_unused,
rte_panic("Wrong weak function linked by linker\n");
return 0;
}
+#endif /* VIRTIO_RXTX_VEC */
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 09/10] app/compress-perf: remove weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (7 preceding siblings ...)
2025-02-07 8:32 ` [RFC 08/10] net/virtio: " David Marchand
@ 2025-02-07 8:32 ` David Marchand
2025-02-07 8:32 ` [RFC 10/10] eal: deprecate " David Marchand
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue
Remove dead code, those symbols are never used as the "strong" symbols
are always linked in.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
app/test-compress-perf/main.c | 62 -----------------------------------
1 file changed, 62 deletions(-)
diff --git a/app/test-compress-perf/main.c b/app/test-compress-perf/main.c
index fa366123ed..70ce4316cc 100644
--- a/app/test-compress-perf/main.c
+++ b/app/test-compress-perf/main.c
@@ -521,65 +521,3 @@ main(int argc, char **argv)
}
return ret;
}
-
-__rte_weak void *
-cperf_cyclecount_test_constructor(uint8_t dev_id __rte_unused,
- uint16_t qp_id __rte_unused,
- struct comp_test_data *options __rte_unused)
-{
- RTE_LOG(INFO, USER1, "Cycle count test is not supported yet\n");
- return NULL;
-}
-
-__rte_weak void
-cperf_cyclecount_test_destructor(void *arg __rte_unused)
-{
- RTE_LOG(INFO, USER1, "Something wrong happened!!!\n");
-}
-
-__rte_weak int
-cperf_cyclecount_test_runner(void *test_ctx __rte_unused)
-{
- return 0;
-}
-
-__rte_weak void *
-cperf_throughput_test_constructor(uint8_t dev_id __rte_unused,
- uint16_t qp_id __rte_unused,
- struct comp_test_data *options __rte_unused)
-{
- RTE_LOG(INFO, USER1, "Benchmark test is not supported yet\n");
- return NULL;
-}
-
-__rte_weak void
-cperf_throughput_test_destructor(void *arg __rte_unused)
-{
-
-}
-
-__rte_weak int
-cperf_throughput_test_runner(void *test_ctx __rte_unused)
-{
- return 0;
-}
-__rte_weak void *
-cperf_verify_test_constructor(uint8_t dev_id __rte_unused,
- uint16_t qp_id __rte_unused,
- struct comp_test_data *options __rte_unused)
-{
- RTE_LOG(INFO, USER1, "Verify test is not supported yet\n");
- return NULL;
-}
-
-__rte_weak void
-cperf_verify_test_destructor(void *arg __rte_unused)
-{
-
-}
-
-__rte_weak int
-cperf_verify_test_runner(void *test_ctx __rte_unused)
-{
- return 0;
-}
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC 10/10] eal: deprecate weak symbols
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
` (8 preceding siblings ...)
2025-02-07 8:32 ` [RFC 09/10] app/compress-perf: " David Marchand
@ 2025-02-07 8:32 ` David Marchand
9 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2025-02-07 8:32 UTC (permalink / raw)
To: dev; +Cc: thomas, bruce.richardson, andremue, Tyler Retzlaff
Mark __rte_weak as deprecated.
It will avoid having to support such feature with other linkers,
plus this was never really needed.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
doc/guides/rel_notes/release_25_03.rst | 2 ++
lib/eal/include/rte_common.h | 6 +++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/doc/guides/rel_notes/release_25_03.rst b/doc/guides/rel_notes/release_25_03.rst
index 269ab6f68a..e9a9abbb13 100644
--- a/doc/guides/rel_notes/release_25_03.rst
+++ b/doc/guides/rel_notes/release_25_03.rst
@@ -125,6 +125,8 @@ API Changes
* eal: The ``__rte_packed`` macro for packing data is replaced with
``__rte_packed_begin`` / ``__rte_packed_end``.
+* eal: The ``__rte_weak`` macro is deprecated and will be removed in a future release.
+
* build: The Intel networking drivers:
cpfl, e1000, fm10k, i40e, iavf, ice, idpf, igc, ipn3ke and ixgbe,
have been moved from ``drivers/net`` to a new ``drivers/net/intel`` directory.
diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index 7a252c1997..2e0ee9dc7e 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -181,7 +181,11 @@ typedef uint16_t unaligned_uint16_t;
/**
* Mark a function or variable to a weak reference.
*/
-#define __rte_weak __attribute__((__weak__))
+#ifdef RTE_TOOLCHAIN_MSVC
+#define __rte_weak RTE_DEPRECATED(__rte_weak)
+#else
+#define __rte_weak RTE_DEPRECATED(__rte_weak) __attribute__((__weak__))
+#endif
/**
* Mark a function to be pure.
--
2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [RFC 07/10] net/nfp: remove weak symbols
2025-02-07 8:32 ` [RFC 07/10] net/nfp: " David Marchand
@ 2025-02-07 8:44 ` Chaoyong He
0 siblings, 0 replies; 13+ messages in thread
From: Chaoyong He @ 2025-02-07 8:44 UTC (permalink / raw)
To: David Marchand, dev; +Cc: thomas, bruce.richardson, andremue
Seems ok for me.
Acked-by: Chaoyong He <chaoyong.he@corigine.com>
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Friday, February 7, 2025 4:33 PM
> To: dev@dpdk.org
> Cc: thomas@monjalon.net; bruce.richardson@intel.com;
> andremue@linux.microsoft.com; Chaoyong He <chaoyong.he@corigine.com>
> Subject: [RFC 07/10] net/nfp: remove weak symbols
>
> Rather than use weak symbols, link stubs code when needed.
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> drivers/net/nfp/meson.build | 7 +++++--
> drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c | 2 +-
> drivers/net/nfp/nfp_rxtx_vec_stub.c | 4 ++--
> 3 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index
> 4052846dc2..39762bd45a 100644
> --- a/drivers/net/nfp/meson.build
> +++ b/drivers/net/nfp/meson.build
> @@ -17,7 +17,6 @@ sources = files(
> 'flower/nfp_flower_service.c',
> 'nfd3/nfp_nfd3_dp.c',
> 'nfdk/nfp_nfdk_dp.c',
> - 'nfdk/nfp_nfdk_vec_stub.c',
> 'nfpcore/nfp_cppcore.c',
> 'nfpcore/nfp_crc.c',
> 'nfpcore/nfp_elf.c',
> @@ -45,7 +44,6 @@ sources = files(
> 'nfp_net_flow.c',
> 'nfp_net_meta.c',
> 'nfp_rxtx.c',
> - 'nfp_rxtx_vec_stub.c',
> 'nfp_service.c',
> )
>
> @@ -67,6 +65,11 @@ if arch_subdir == 'x86'
> )
>
> objs += nfp_avx2_lib.extract_all_objects(recursive: true)
> +else
> + sources += files(
> + 'nfp_rxtx_vec_stub.c',
> + 'nfdk/nfp_nfdk_vec_stub.c',
> + )
> endif
>
> deps += ['hash', 'security', 'common_nfp'] diff --git
> a/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
> b/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
> index 146ec21d51..4f905bce6b 100644
> --- a/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
> +++ b/drivers/net/nfp/nfdk/nfp_nfdk_vec_stub.c
> @@ -5,7 +5,7 @@
>
> #include "nfp_nfdk_vec.h"
>
> -uint16_t __rte_weak
> +uint16_t
> nfp_net_nfdk_vec_avx2_xmit_pkts(__rte_unused void *tx_queue,
> __rte_unused struct rte_mbuf **tx_pkts,
> __rte_unused uint16_t nb_pkts)
> diff --git a/drivers/net/nfp/nfp_rxtx_vec_stub.c
> b/drivers/net/nfp/nfp_rxtx_vec_stub.c
> index c480f61ef0..201965afbe 100644
> --- a/drivers/net/nfp/nfp_rxtx_vec_stub.c
> +++ b/drivers/net/nfp/nfp_rxtx_vec_stub.c
> @@ -10,13 +10,13 @@
>
> #include "nfp_rxtx_vec.h"
>
> -bool __rte_weak
> +bool
> nfp_net_get_avx2_supported(void)
> {
> return false;
> }
>
> -uint16_t __rte_weak
> +uint16_t
> nfp_net_vec_avx2_recv_pkts(__rte_unused void *rx_queue,
> __rte_unused struct rte_mbuf **rx_pkts,
> __rte_unused uint16_t nb_pkts)
> --
> 2.48.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC 06/10] net/fm10k: remove weak symbols
2025-02-07 8:32 ` [RFC 06/10] net/fm10k: " David Marchand
@ 2025-02-07 8:51 ` Bruce Richardson
0 siblings, 0 replies; 13+ messages in thread
From: Bruce Richardson @ 2025-02-07 8:51 UTC (permalink / raw)
To: David Marchand; +Cc: dev, thomas, andremue
On Fri, Feb 07, 2025 at 09:32:46AM +0100, David Marchand wrote:
> Rather than use weak symbols, expose stubs symbols when needed.
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> drivers/net/intel/fm10k/fm10k_ethdev.c | 20 +++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-02-07 8:51 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-07 8:32 [RFC 00/10] Remove weak symbols David Marchand
2025-02-07 8:32 ` [RFC 01/10] bus/auxiliary: remove " David Marchand
2025-02-07 8:32 ` [RFC 02/10] common/qat: " David Marchand
2025-02-07 8:32 ` [RFC 03/10] drivers: remove weak symbols in Nitrox drivers David Marchand
2025-02-07 8:32 ` [RFC 04/10] net/enic: remove weak symbols David Marchand
2025-02-07 8:32 ` [RFC 05/10] net/hns3: " David Marchand
2025-02-07 8:32 ` [RFC 06/10] net/fm10k: " David Marchand
2025-02-07 8:51 ` Bruce Richardson
2025-02-07 8:32 ` [RFC 07/10] net/nfp: " David Marchand
2025-02-07 8:44 ` Chaoyong He
2025-02-07 8:32 ` [RFC 08/10] net/virtio: " David Marchand
2025-02-07 8:32 ` [RFC 09/10] app/compress-perf: " David Marchand
2025-02-07 8:32 ` [RFC 10/10] eal: deprecate " David Marchand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).