net: sparx5: add new VCAP constants to match data
authorDaniel Machon <daniel.machon@microchip.com>
Fri, 1 Nov 2024 07:09:09 +0000 (08:09 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 5 Nov 2024 12:31:08 +0000 (13:31 +0100)
In preparation for lan969x VCAP support, add the following three new
VCAP constants to match data:

    - vcaps_cfg (contains configuration data for each VCAP).

    - vcaps (contains auto-generated information about VCAP keys and
      actions).

    - vcap_stats: (contains auto-generated string names of all the keys
      and actions)

Add these constants to the Sparx5 match data constants and use them to
initialize the VCAP's in sparx5_vcap_init().

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Reviewed-by: Jens Emil Schulz Østergaard <jensemil.schulzostergaard@microchip.com>
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/microchip/sparx5/sparx5_main.c
drivers/net/ethernet/microchip/sparx5/sparx5_main.h
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_ag_api.h
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c

index 4f2d5413a64fde17a46dc537324564a7974b3e8e..bac87e885bf11b37e719476585a6121103d27087 100644 (file)
@@ -30,6 +30,8 @@
 #include "sparx5_main.h"
 #include "sparx5_port.h"
 #include "sparx5_qos.h"
+#include "sparx5_vcap_ag_api.h"
+#include "sparx5_vcap_impl.h"
 
 const struct sparx5_regs *regs;
 
@@ -1063,6 +1065,9 @@ static const struct sparx5_consts sparx5_consts = {
        .qres_max_prio_idx   = 630,
        .qres_max_colour_idx = 638,
        .tod_pin             = 4,
+       .vcaps               = sparx5_vcaps,
+       .vcaps_cfg           = sparx5_vcap_inst_cfg,
+       .vcap_stats          = &sparx5_vcap_stats,
 };
 
 static const struct sparx5_ops sparx5_ops = {
index 146bdc938adcbf6ccc7b272a1dd0d269dca47b35..d5dd953b0a71d9b60c932b561dc51955c6e62e54 100644 (file)
@@ -303,6 +303,9 @@ struct sparx5_consts {
        u32 qres_max_prio_idx;   /* Maximum QRES prio index */
        u32 qres_max_colour_idx; /* Maximum QRES colour index */
        u32 tod_pin;             /* PTP TOD pin */
+       const struct sparx5_vcap_inst *vcaps_cfg;
+       const struct vcap_info *vcaps;
+       const struct vcap_statistics *vcap_stats;
 };
 
 struct sparx5_ops {
index 7d106f1276fe5567297766821ce45f6cc4dce76d..e68f5639a40a543fa255a1603d910e94867c8e65 100644 (file)
@@ -10,6 +10,8 @@
 #ifndef __SPARX5_VCAP_AG_API_H__
 #define __SPARX5_VCAP_AG_API_H__
 
+#include "vcap_api.h"
+
 /* VCAPs */
 extern const struct vcap_info sparx5_vcaps[];
 extern const struct vcap_statistics sparx5_vcap_stats;
index bbff8158a3de50c372bedd9004859fa1c886ce6b..25066ddb8d4d66133dcf67944ce571dd73463f24 100644 (file)
@@ -2053,14 +2053,14 @@ int sparx5_vcap_init(struct sparx5 *sparx5)
 
        sparx5->vcap_ctrl = ctrl;
        /* select the sparx5 VCAP model */
-       ctrl->vcaps = sparx5_vcaps;
-       ctrl->stats = &sparx5_vcap_stats;
+       ctrl->vcaps = consts->vcaps;
+       ctrl->stats = consts->vcap_stats;
        /* Setup callbacks to allow the API to use the VCAP HW */
        ctrl->ops = &sparx5_vcap_ops;
 
        INIT_LIST_HEAD(&ctrl->list);
        for (idx = 0; idx < ARRAY_SIZE(sparx5_vcap_inst_cfg); ++idx) {
-               cfg = &sparx5_vcap_inst_cfg[idx];
+               cfg = &consts->vcaps_cfg[idx];
                admin = sparx5_vcap_admin_alloc(sparx5, ctrl, cfg);
                if (IS_ERR(admin)) {
                        err = PTR_ERR(admin);