If the conversion of efd name to ring name gets truncated, then
log it. And if the ring name than causes collision, make sure
that log message includes error reason.

Signed-off-by: Stephen Hemminger <[email protected]>
---
 lib/efd/rte_efd.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/efd/rte_efd.c b/lib/efd/rte_efd.c
index ebf1e0655f..ed2c509938 100644
--- a/lib/efd/rte_efd.c
+++ b/lib/efd/rte_efd.c
@@ -698,12 +698,15 @@ rte_efd_create(const char *name, uint32_t max_num_rules, 
uint32_t key_len,
        TAILQ_INSERT_TAIL(efd_list, te, next);
        rte_mcfg_tailq_write_unlock();
 
-       snprintf(ring_name, sizeof(ring_name), "HT_%s", table->name);
+       if (snprintf(ring_name, sizeof(ring_name), "HT_%s", table->name)
+           >= (int)sizeof(ring_name))
+               EFD_LOG(NOTICE, "EFD ring name truncated to '%s'", ring_name);
+
        /* Create ring (Dummy slot index is not enqueued) */
        r = rte_ring_create(ring_name, rte_align32pow2(table->max_num_rules),
                        offline_cpu_socket, 0);
        if (r == NULL) {
-               EFD_LOG(ERR, "memory allocation failed");
+               EFD_LOG(ERR, "ring creation failed: %s", 
rte_strerror(rte_errno));
                rte_efd_free(table);
                return NULL;
        }
-- 
2.51.0

Reply via email to