[dpdk-dev] [DPDK] /driver/bus/ifpga: fix driver probe failure handler

Xu, Rosen rosen.xu at intel.com
Mon Jan 14 06:14:41 CET 2019



> -----Original Message-----
> From: Pei, Andy
> Sent: Monday, January 14, 2019 9:41
> To: dev at dpdk.org
> Cc: Xu, Rosen <rosen.xu at intel.com>; Zhang, Tianfei
> <tianfei.zhang at intel.com>; Pei, Andy <andy.pei at 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.xu at intel.com
> cc: tianfei.zhang at intel.com
> cc: andy.pei at intel.com
> 
> Signed-off-by: AndyPei <andy.pei at 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.xu at intel.com>


More information about the dev mailing list