Hi Andy,

> -----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
> 
The subject should be started with bus/ifpga.
I think the tital should be fix ifpga afu driver probe failure handler

> In the original code, when a device probe a driver, if the driver in the 
> driver
In the original code, when a AFU device is scanned, if its driver in the driver

> list does not support this device, a error is returned.
an error will return

> After this patch, a device wil try to match driver in the driver list one by 
> one
With this patch, a device will......
> 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

Pls use git fixline 05fa3d4a6539 to generate the full fixline

> cc: rosen...@intel.com
> cc: tianfei.zh...@intel.com
> cc: andy....@intel.com
Don't need these cc, pls only Cc: sta...@dpdk.org

> 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

Reply via email to