> -----Original Message-----
> From: Pei, Andy
> Sent: Monday, January 14, 2019 9:41
> To: dev@dpdk.org
> Cc: Xu, Rosen <rosen...@intel.com>; Zhang, Tianfei
> <tianfei.zh...@intel.com>; Pei, Andy <andy....@intel.com>
> Subject: [DPDK] /driver/bus/ifpga: fix driver probe failure handler
>
> In the original code, when a device probe a driver, if the driver in the
> driver
> list does not support this device, a error is returned.
> After this patch, a device wil try to match driver in the driver list one by
> one
> until an appropriate driver is found. If the current driver does not support
> the device or some error happens, just try the next driver in the list.
> If all the drivers in the list are tried and no driver matches. 0 is returned.
>
> fixes: 05fa3d4a6539
> cc: rosen...@intel.com
> cc: tianfei.zh...@intel.com
> cc: andy....@intel.com
>
> Signed-off-by: AndyPei <andy....@intel.com>
> ---
> drivers/bus/ifpga/ifpga_bus.c | 17 ++++++++++++-----
> 1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c
> index e4b7b6f..55d3abf 100644
> --- a/drivers/bus/ifpga/ifpga_bus.c
> +++ b/drivers/bus/ifpga/ifpga_bus.c
> @@ -306,12 +306,19 @@ void rte_ifpga_driver_unregister(struct
> rte_afu_driver *driver)
> }
>
> TAILQ_FOREACH(drv, &ifpga_afu_drv_list, next) {
> - if (ifpga_probe_one_driver(drv, afu_dev)) {
> - ret = -1;
> - break;
> - }
> + ret = ifpga_probe_one_driver(drv, afu_dev);
> + if (ret < 0)
> + /* negative value is an error */
> + return ret;
> + if (ret > 0)
> + /* positive value means driver doesn't support it */
> + continue;
> + return 0;
> }
> - return ret;
> + if ((ret > 0) && (afu_dev->driver == NULL))
> + return 0;
> + else
> + return ret;
> }
>
> /*
> --
> 1.8.3.1
Acked-by: Rosen Xu <rosen...@intel.com>