From: Matwey V. Kornilov Date: Sun, 26 Oct 2025 15:51:34 +0000 (+0300) Subject: dpdk: check rte_eth_link_get_nowait return value X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04c3c2d84fc7953dbacc1a6d10c4319f1e2a5d58;p=thirdparty%2Fcollectd.git dpdk: check rte_eth_link_get_nowait return value Update link status only if rte_eth_link_get_nowait return success otherwise link may not be filled properly. This also fixes the following build issue with up-to-date gcc version: src/dpdkevents.c: In function 'dpdk_helper_link_status_get': src/dpdkevents.c:439:7: error: ignoring return value of 'rte_eth_link_get_nowait' declared with attribute 'warn_unused_result' [-Werror=unused-result] 439 | rte_eth_link_get_nowait(i, &link); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors --- diff --git a/src/dpdkevents.c b/src/dpdkevents.c index 4c8196aed..e12128dcf 100644 --- a/src/dpdkevents.c +++ b/src/dpdkevents.c @@ -418,6 +418,7 @@ static int dpdk_events_config(oconfig_item_t *ci) { static int dpdk_helper_link_status_get(dpdk_helper_ctx_t *phc) { dpdk_events_ctx_t *ec = DPDK_EVENTS_CTX_GET(phc); + int ret = 0; /* get Link Status values from DPDK */ #if RTE_VERSION < RTE_VERSION_NUM(18, 05, 0, 0) @@ -436,9 +437,13 @@ static int dpdk_helper_link_status_get(dpdk_helper_ctx_t *phc) { if (ec->config.link_status.enabled_port_mask & (1 << i)) { struct rte_eth_link link; ec->link_info[i].read_time = cdtime(); +#if RTE_VERSION >= RTE_VERSION_NUM(19, 11, 0, 0) + ret = rte_eth_link_get_nowait(i, &link); +#else rte_eth_link_get_nowait(i, &link); - if ((link.link_status == ETH_LINK_NA) || - (link.link_status != ec->link_info[i].link_status)) { +#endif + if (ret == 0 && ((link.link_status == ETH_LINK_NA) || + (link.link_status != ec->link_info[i].link_status))) { ec->link_info[i].link_status = link.link_status; ec->link_info[i].status_updated = 1; DPDK_CHILD_LOG(" === PORT %d Link Status: %s\n", i,