net/bnxt: fix probe in FreeBSD

In FreeBSD environment, nic_uio driver does not support interrupts
and rte_intr_callback_register() will fail to register interrupts
which in turn causes bnxt driver probe failure.

Fixed driver to ignore interrupt callback failures in FreeBSD.
Also fixed to not use a dedicated completion ring for async events
from FW and process these events on RXQ0 in FreeBSD.

Fixes: 6de4c538b3 ("net/bnxt: fix error handling in port start")
Fixes: 43f78b380f ("net/bnxt: retry IRQ callback deregistration")
Cc: stable@dpdk.org

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
This commit is contained in:
Kalesh AP 2020-01-16 18:34:47 +05:30 committed by Ferruh Yigit
parent 9356d01d5f
commit d9fc6a0d07
3 changed files with 19 additions and 0 deletions

View File

@ -117,6 +117,14 @@
#define BNXT_NUM_ASYNC_CPR(bp) 1
#endif
/* In FreeBSD OS, nic_uio driver does not support interrupts */
#ifdef RTE_EXEC_ENV_FREEBSD
#ifdef BNXT_NUM_ASYNC_CPR
#undef BNXT_NUM_ASYNC_CPR
#endif
#define BNXT_NUM_ASYNC_CPR(bp) 0
#endif
#define BNXT_MISC_VEC_ID RTE_INTR_VEC_ZERO_OFFSET
#define BNXT_RX_VEC_START RTE_INTR_VEC_RXTX_OFFSET

View File

@ -439,8 +439,11 @@ static int bnxt_init_chip(struct bnxt *bp)
/* enable uio/vfio intr/eventfd mapping */
rc = rte_intr_enable(intr_handle);
#ifndef RTE_EXEC_ENV_FREEBSD
/* In FreeBSD OS, nic_uio driver does not support interrupts */
if (rc)
goto err_free;
#endif
rc = bnxt_get_hwrm_link_config(bp, &new);
if (rc) {

View File

@ -181,5 +181,13 @@ int bnxt_request_int(struct bnxt *bp)
irq->requested = 1;
}
#ifdef RTE_EXEC_ENV_FREEBSD
/**
* In FreeBSD OS, nic_uio does not support interrupts and
* interrupt register callback will fail.
*/
rc = 0;
#endif
return rc;
}