replace panic calls with log and return value. Local function to this file, changing from void to int is non-abi-breaking
Signed-off-by: Arnon Warshavsky <ar...@qwilt.com> --- lib/librte_kni/rte_kni.c | 18 ++++++++++++------ lib/librte_kni/rte_kni_fifo.h | 11 ++++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/librte_kni/rte_kni.c b/lib/librte_kni/rte_kni.c index 8a8f6c1..4dac407 100644 --- a/lib/librte_kni/rte_kni.c +++ b/lib/librte_kni/rte_kni.c @@ -353,37 +353,43 @@ struct rte_kni * /* TX RING */ mz = slot->m_tx_q; ctx->tx_q = mz->addr; - kni_fifo_init(ctx->tx_q, KNI_FIFO_COUNT_MAX); + if (kni_fifo_init(ctx->tx_q, KNI_FIFO_COUNT_MAX)) + return NULL; dev_info.tx_phys = mz->phys_addr; /* RX RING */ mz = slot->m_rx_q; ctx->rx_q = mz->addr; - kni_fifo_init(ctx->rx_q, KNI_FIFO_COUNT_MAX); + if (kni_fifo_init(ctx->rx_q, KNI_FIFO_COUNT_MAX)) + return NULL; dev_info.rx_phys = mz->phys_addr; /* ALLOC RING */ mz = slot->m_alloc_q; ctx->alloc_q = mz->addr; - kni_fifo_init(ctx->alloc_q, KNI_FIFO_COUNT_MAX); + if (kni_fifo_init(ctx->alloc_q, KNI_FIFO_COUNT_MAX)) + return NULL; dev_info.alloc_phys = mz->phys_addr; /* FREE RING */ mz = slot->m_free_q; ctx->free_q = mz->addr; - kni_fifo_init(ctx->free_q, KNI_FIFO_COUNT_MAX); + if (kni_fifo_init(ctx->free_q, KNI_FIFO_COUNT_MAX)) + return NULL; dev_info.free_phys = mz->phys_addr; /* Request RING */ mz = slot->m_req_q; ctx->req_q = mz->addr; - kni_fifo_init(ctx->req_q, KNI_FIFO_COUNT_MAX); + if (kni_fifo_init(ctx->req_q, KNI_FIFO_COUNT_MAX)) + return NULL; dev_info.req_phys = mz->phys_addr; /* Response RING */ mz = slot->m_resp_q; ctx->resp_q = mz->addr; - kni_fifo_init(ctx->resp_q, KNI_FIFO_COUNT_MAX); + if (kni_fifo_init(ctx->resp_q, KNI_FIFO_COUNT_MAX)) + return NULL; dev_info.resp_phys = mz->phys_addr; /* Req/Resp sync mem area */ diff --git a/lib/librte_kni/rte_kni_fifo.h b/lib/librte_kni/rte_kni_fifo.h index ac26a8c..5052015 100644 --- a/lib/librte_kni/rte_kni_fifo.h +++ b/lib/librte_kni/rte_kni_fifo.h @@ -7,17 +7,22 @@ /** * Initializes the kni fifo structure */ -static void +static int kni_fifo_init(struct rte_kni_fifo *fifo, unsigned size) { /* Ensure size is power of 2 */ - if (size & (size - 1)) - rte_panic("KNI fifo size must be power of 2\n"); + if (size & (size - 1)) { + RTE_LOG(CRIT, EAL, "%s(): KNI fifo size must be power of 2\n", + __func__); + return -1; + } fifo->write = 0; fifo->read = 0; fifo->len = size; fifo->elem_size = sizeof(void *); + + return 0; } /** -- 1.8.3.1