From: Jie Liu <[email protected]>

This patch enhances the representor device initialization with:

- Add statistics initialization in sxe2_repr_dev_init
  * Call sxe2_stats_init to setup statistics infrastructure
  * Add proper error handling path for stats init failure

- Add representor device naming and NUMA node assignment:
  * Update device name format to use base device name prefix
  * Set numa_node from parent device data for proper NUMA locality
  * Ensures representor devices are allocated on the same NUMA node

- Code style improvements:
  * Align struct member fields in sxe2_adapter for consistency

Signed-off-by: Jie Liu <[email protected]>
---
 drivers/net/sxe2/sxe2_ethdev.h      | 24 ++++++++++++------------
 drivers/net/sxe2/sxe2_ethdev_repr.c | 13 +++++++++++--
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/drivers/net/sxe2/sxe2_ethdev.h b/drivers/net/sxe2/sxe2_ethdev.h
index cfcb7fcf00..d0a0f41ceb 100644
--- a/drivers/net/sxe2/sxe2_ethdev.h
+++ b/drivers/net/sxe2/sxe2_ethdev.h
@@ -314,10 +314,10 @@ struct sxe2_fc_state_ctxt {
 };
 
 struct sxe2_adapter {
-       struct sxe2_common_device      *cdev;
-       struct sxe2_dev_info            dev_info;
-       struct rte_pci_device            *pci_dev;
-       struct sxe2_repr_private_data  *repr_priv_data;
+       struct sxe2_common_device     *cdev;
+       struct sxe2_dev_info          dev_info;
+       struct rte_pci_device         *pci_dev;
+       struct sxe2_repr_private_data *repr_priv_data;
        struct sxe2_pci_map_context   map_ctxt;
        struct sxe2_irq_context       irq_ctxt;
        struct sxe2_queue_context     q_ctxt;
@@ -338,16 +338,16 @@ struct sxe2_adapter {
        bool                          rule_started;
        bool                          flow_isolated;
        bool                          flow_isolate_cfg;
-       uint16_t                           dev_port_id;
+       uint16_t                      dev_port_id;
        bool                          is_dev_repr;
-       uint64_t                           cap_flags;
+       uint64_t                      cap_flags;
        enum sxe2_dev_type            dev_type;
-       struct rte_ether_addr           mac_addr;
-       uint8_t                              port_idx;
-       uint8_t                              pf_idx;
-       uint32_t                             tx_mode_flags;
-       uint32_t                             rx_mode_flags;
-       uint8_t                              started;
+       struct rte_ether_addr         mac_addr;
+       uint8_t                       port_idx;
+       uint8_t                       pf_idx;
+       uint32_t                      tx_mode_flags;
+       uint32_t                      rx_mode_flags;
+       uint8_t                       started;
 };
 
 #define SXE2_DEV_PRIVATE_TO_ADAPTER(dev) \
diff --git a/drivers/net/sxe2/sxe2_ethdev_repr.c 
b/drivers/net/sxe2/sxe2_ethdev_repr.c
index f32318b731..b7096f5927 100644
--- a/drivers/net/sxe2/sxe2_ethdev_repr.c
+++ b/drivers/net/sxe2/sxe2_ethdev_repr.c
@@ -483,8 +483,16 @@ int32_t sxe2_repr_dev_init(struct rte_eth_dev *dev,
                goto l_init_sw_err;
        }
 
+       ret = sxe2_stats_init(dev);
+       if (ret) {
+               PMD_LOG_ERR(INIT, "Failed to initialize stats, ret=[%d]", ret);
+               goto l_init_irq_ctxt_err;
+       }
+
        goto l_end;
 
+l_init_irq_ctxt_err:
+       sxe2_sw_irq_ctxt_uninit(dev);
 l_init_sw_err:
        sxe2_eth_uinit(dev);
 l_init_eth_err:
@@ -544,8 +552,8 @@ int32_t sxe2_switchdev_repr_devs_init(struct sxe2_adapter 
*adapter,
        }
 
        for (repr_idx = 0; repr_idx < req_eth_da->nb_representor_ports; 
++repr_idx) {
-               snprintf(name, sizeof(name), "sxe2_representor_c%dpf%d%s%u",
-                        adapter->pf_idx, adapter->pf_idx,
+               snprintf(name, sizeof(name), "%s_representor_%s%u",
+                        adapter->cdev->dev->name,
                         "vf",
                         req_eth_da->representor_ports[repr_idx]);
 
@@ -554,6 +562,7 @@ int32_t sxe2_switchdev_repr_devs_init(struct sxe2_adapter 
*adapter,
                        ret = -ENOMEM;
                        goto l_release_port;
                }
+               eth_dev->data->numa_node = 
adapter->dev_info.dev_data->numa_node;
                eth_dev->data->dev_private = rte_zmalloc_socket(name,
                        sizeof(struct sxe2_adapter),
                        RTE_CACHE_LINE_SIZE,
-- 
2.52.0

Reply via email to