Acked-by: Vladimir Medvedkin <vladimir.medved...@intel.com>

On 10/03/2025 13:11, Bruce Richardson wrote:
When registering interrupts, there was no check if the registration of
the interrupt succeeded. Add in such a check, and go to fallback path
if the check fails. This prevents errors on FreeBSD due to missed
admin queue messages.

Fixes: cd3b124955d4 ("net/iavf: enable interrupt polling")
Cc: sta...@dpdk.org

Signed-off-by: Bruce Richardson <bruce.richard...@intel.com>
---
  drivers/net/intel/iavf/iavf_ethdev.c | 12 +++++-------
  1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/net/intel/iavf/iavf_ethdev.c 
b/drivers/net/intel/iavf/iavf_ethdev.c
index 9cd2b0c867..1ab84b0bfc 100644
--- a/drivers/net/intel/iavf/iavf_ethdev.c
+++ b/drivers/net/intel/iavf/iavf_ethdev.c
@@ -2825,18 +2825,16 @@ iavf_dev_init(struct rte_eth_dev *eth_dev)
                        &eth_dev->data->mac_addrs[0]);
- if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) {
-               /* register callback func to eal lib */
-               rte_intr_callback_register(pci_dev->intr_handle,
-                                          iavf_dev_interrupt_handler,
-                                          (void *)eth_dev);
+       if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR &&
+                       /* register callback func to eal lib */
+                       rte_intr_callback_register(pci_dev->intr_handle,
+                                  iavf_dev_interrupt_handler, (void *)eth_dev) 
== 0)
/* enable uio intr after callback register */
                rte_intr_enable(pci_dev->intr_handle);
-       } else {
+       else
                rte_eal_alarm_set(IAVF_ALARM_INTERVAL,
                                  iavf_dev_alarm_handler, eth_dev);
-       }
/* configure and enable device interrupt */
        iavf_enable_irq0(hw);

--
Regards,
Vladimir

Reply via email to