[v3,2/9] raw/cnxk_rvu_lf: add PMD API to get npa/sso pffunc

Message ID 20241008184915.1356089-3-gakhil@marvell.com (mailing list archive)
State Changes Requested
Delegated to: Jerin Jacob
Headers
Series drivers/raw: introduce cnxk rvu lf device driver |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Akhil Goyal Oct. 8, 2024, 6:49 p.m. UTC
Added rte_pmd_rvu_lf_npa_pf_func_get and
rte_pmd_rvu_lf_sso_pf_func_get APIs to get NPA and
SSO pffunc for the application use.

Signed-off-by: Akhil Goyal <gakhil@marvell.com>
---
 doc/api/doxy-api-index.md                     |  1 +
 doc/guides/rawdevs/cnxk_rvu_lf.rst            |  7 +++
 drivers/common/cnxk/roc_npa.c                 |  6 +++
 drivers/common/cnxk/roc_npa.h                 |  3 ++
 drivers/common/cnxk/roc_sso.c                 |  6 +++
 drivers/common/cnxk/roc_sso.h                 |  3 ++
 drivers/common/cnxk/version.map               |  2 +
 drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c         | 13 +++++
 drivers/raw/cnxk_rvu_lf/meson.build           |  1 +
 drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h | 51 +++++++++++++++++++
 10 files changed, 93 insertions(+)
 create mode 100644 drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h
  

Comments

David Marchand Oct. 23, 2024, 2:13 p.m. UTC | #1
On Tue, Oct 8, 2024 at 8:49 PM Akhil Goyal <gakhil@marvell.com> wrote:
>
> Added rte_pmd_rvu_lf_npa_pf_func_get and
> rte_pmd_rvu_lf_sso_pf_func_get APIs to get NPA and
> SSO pffunc for the application use.
>
> Signed-off-by: Akhil Goyal <gakhil@marvell.com>

You are missing some update of drivers/raw/cnxk_rvu_lf/version.map.
Without it, symbols from this library won't be exported in .so.


> ---
>  doc/api/doxy-api-index.md                     |  1 +
>  doc/guides/rawdevs/cnxk_rvu_lf.rst            |  7 +++
>  drivers/common/cnxk/roc_npa.c                 |  6 +++
>  drivers/common/cnxk/roc_npa.h                 |  3 ++
>  drivers/common/cnxk/roc_sso.c                 |  6 +++
>  drivers/common/cnxk/roc_sso.h                 |  3 ++
>  drivers/common/cnxk/version.map               |  2 +
>  drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c         | 13 +++++
>  drivers/raw/cnxk_rvu_lf/meson.build           |  1 +
>  drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h | 51 +++++++++++++++++++
>  10 files changed, 93 insertions(+)
>  create mode 100644 drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h
  

Patch

diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md
index f9f0300126..b4dbe51727 100644
--- a/doc/api/doxy-api-index.md
+++ b/doc/api/doxy-api-index.md
@@ -52,6 +52,7 @@  The public API headers are grouped by topics:
   [cnxk_crypto](@ref rte_pmd_cnxk_crypto.h),
   [cnxk_eventdev](@ref rte_pmd_cnxk_eventdev.h),
   [cnxk_mempool](@ref rte_pmd_cnxk_mempool.h),
+  [cnxk_rvu_lf](@ref rte_pmd_cnxk_rvu_lf.h),
   [dpaa](@ref rte_pmd_dpaa.h),
   [dpaa2](@ref rte_pmd_dpaa2.h),
   [mlx5](@ref rte_pmd_mlx5.h),
diff --git a/doc/guides/rawdevs/cnxk_rvu_lf.rst b/doc/guides/rawdevs/cnxk_rvu_lf.rst
index 8a0bc22dd5..13184ad4dc 100644
--- a/doc/guides/rawdevs/cnxk_rvu_lf.rst
+++ b/doc/guides/rawdevs/cnxk_rvu_lf.rst
@@ -38,3 +38,10 @@  kernel driver. When querying the status of the devices, they will appear under
 the category of "Misc (rawdev) devices", i.e. the command
 ``dpdk-devbind.py --status-dev misc`` can be used to see the state of those
 devices alone.
+
+Get NPA and SSO PF FUNC
+-----------------------
+
+APIs ``rte_pmd_rvu_lf_npa_pf_func_get()`` and ``rte_pmd_rvu_lf_sso_pf_func_get()``
+can be used to get the cnxk NPA PF func and SSO PF func which application
+can use for NPA/SSO specific configuration.
diff --git a/drivers/common/cnxk/roc_npa.c b/drivers/common/cnxk/roc_npa.c
index 934d7361a9..a33f9a8499 100644
--- a/drivers/common/cnxk/roc_npa.c
+++ b/drivers/common/cnxk/roc_npa.c
@@ -17,6 +17,12 @@  roc_npa_lf_init_cb_register(roc_npa_lf_init_cb_t cb)
 	return 0;
 }
 
+uint16_t
+roc_npa_pf_func_get(void)
+{
+	return idev_npa_pffunc_get();
+}
+
 void
 roc_npa_pool_op_range_set(uint64_t aura_handle, uint64_t start_iova,
 			  uint64_t end_iova)
diff --git a/drivers/common/cnxk/roc_npa.h b/drivers/common/cnxk/roc_npa.h
index fbf75b2fca..f7cb4460e7 100644
--- a/drivers/common/cnxk/roc_npa.h
+++ b/drivers/common/cnxk/roc_npa.h
@@ -820,6 +820,9 @@  int __roc_api roc_npa_aura_bp_configure(uint64_t aura_id, uint16_t bpid, uint8_t
 typedef int (*roc_npa_lf_init_cb_t)(struct plt_pci_device *pci_dev);
 int __roc_api roc_npa_lf_init_cb_register(roc_npa_lf_init_cb_t cb);
 
+/* Utility functions */
+uint16_t __roc_api roc_npa_pf_func_get(void);
+
 /* Debug */
 int __roc_api roc_npa_ctx_dump(void);
 int __roc_api roc_npa_dump(void);
diff --git a/drivers/common/cnxk/roc_sso.c b/drivers/common/cnxk/roc_sso.c
index 2e3b134bfc..aed8819a1b 100644
--- a/drivers/common/cnxk/roc_sso.c
+++ b/drivers/common/cnxk/roc_sso.c
@@ -319,6 +319,12 @@  roc_sso_hwgrp_base_get(struct roc_sso *roc_sso, uint16_t hwgrp)
 	return dev->bar2 + (RVU_BLOCK_ADDR_SSO << 20 | hwgrp << 12);
 }
 
+uint16_t
+roc_sso_pf_func_get(void)
+{
+	return idev_sso_pffunc_get();
+}
+
 uint64_t
 roc_sso_ns_to_gw(uint64_t base, uint64_t ns)
 {
diff --git a/drivers/common/cnxk/roc_sso.h b/drivers/common/cnxk/roc_sso.h
index 4ac901762e..3e293a0a69 100644
--- a/drivers/common/cnxk/roc_sso.h
+++ b/drivers/common/cnxk/roc_sso.h
@@ -103,6 +103,9 @@  int __roc_api roc_sso_hwgrp_stash_config(struct roc_sso *roc_sso,
 void __roc_api roc_sso_hws_gwc_invalidate(struct roc_sso *roc_sso, uint8_t *hws,
 					  uint8_t nb_hws);
 
+/* Utility function */
+uint16_t __roc_api roc_sso_pf_func_get(void);
+
 /* Debug */
 void __roc_api roc_sso_dump(struct roc_sso *roc_sso, uint8_t nb_hws,
 			    uint16_t hwgrp, FILE *f);
diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
index 9f7c804542..dd56caef16 100644
--- a/drivers/common/cnxk/version.map
+++ b/drivers/common/cnxk/version.map
@@ -451,6 +451,7 @@  INTERNAL {
 	roc_npa_dev_unlock;
 	roc_npa_dump;
 	roc_npa_lf_init_cb_register;
+	roc_npa_pf_func_get;
 	roc_npa_pool_create;
 	roc_npa_pool_destroy;
 	roc_npa_pool_op_pc_reset;
@@ -518,6 +519,7 @@  INTERNAL {
 	roc_sso_hws_gwc_invalidate;
 	roc_sso_hws_unlink;
 	roc_sso_ns_to_gw;
+	roc_sso_pf_func_get;
 	roc_sso_rsrc_fini;
 	roc_sso_rsrc_init;
 	roc_tim_fini;
diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c
index 36067909be..43d3a6fa87 100644
--- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c
+++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c
@@ -14,6 +14,19 @@ 
 #include <roc_api.h>
 
 #include "cnxk_rvu_lf.h"
+#include "rte_pmd_cnxk_rvu_lf.h"
+
+uint16_t
+rte_pmd_rvu_lf_npa_pf_func_get(void)
+{
+	return roc_npa_pf_func_get();
+}
+
+uint16_t
+rte_pmd_rvu_lf_sso_pf_func_get(void)
+{
+	return roc_sso_pf_func_get();
+}
 
 static const struct rte_rawdev_ops rvu_lf_rawdev_ops = {
 	.dev_selftest = NULL,
diff --git a/drivers/raw/cnxk_rvu_lf/meson.build b/drivers/raw/cnxk_rvu_lf/meson.build
index 32081e147f..a1a010319b 100644
--- a/drivers/raw/cnxk_rvu_lf/meson.build
+++ b/drivers/raw/cnxk_rvu_lf/meson.build
@@ -6,4 +6,5 @@  deps += ['bus_pci', 'common_cnxk', 'rawdev']
 sources = files(
         'cnxk_rvu_lf.c',
 )
+headers = files('rte_pmd_cnxk_rvu_lf.h')
 require_iova_in_mbuf = false
diff --git a/drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h b/drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h
new file mode 100644
index 0000000000..ea03e7ac8c
--- /dev/null
+++ b/drivers/raw/cnxk_rvu_lf/rte_pmd_cnxk_rvu_lf.h
@@ -0,0 +1,51 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2024 Marvell.
+ */
+
+#ifndef _RTE_PMD_CNXK_RVU_LF_H_
+#define _RTE_PMD_CNXK_RVU_LF_H_
+
+#include <stdint.h>
+
+#include <rte_common.h>
+#include <rte_dev.h>
+#include <rte_malloc.h>
+#include <rte_memcpy.h>
+#include <rte_rawdev.h>
+
+/**
+ * @file rte_pmd_cnxk_rvu_lf.h
+ *
+ * Marvell RVU LF raw PMD specific structures and interface
+ *
+ * This API allows applications to manage RVU LF device in user space along with
+ * installing interrupt handlers for low latency signal processing.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Obtain NPA PF func
+ *
+ * @return
+ *   Returns NPA pf_func on success, 0 in case of invalid pf_func.
+ */
+__rte_experimental
+uint16_t rte_pmd_rvu_lf_npa_pf_func_get(void);
+
+/**
+ * Obtain SSO PF func
+ *
+ * @return
+ *   Returns SSO pf_func on success, 0 in case of invalid pf_func.
+ */
+__rte_experimental
+uint16_t rte_pmd_rvu_lf_sso_pf_func_get(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTE_PMD_CNXK_RVU_LF_H_ */