X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbus%2Fifpga%2Fifpga_bus.c;h=addbc3e86bf697d955fbf9ed0ccbe87d7a976e42;hb=d84612e9bd6b2f106558ffb515d32000288ee73d;hp=5f23ed8b4263e7690b208880ba89fffaa93a4d65;hpb=e9d159c3d5346914934e5fc4f305c9c23aac74c2;p=dpdk.git diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c index 5f23ed8b42..addbc3e86b 100644 --- a/drivers/bus/ifpga/ifpga_bus.c +++ b/drivers/bus/ifpga/ifpga_bus.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "rte_rawdev.h" #include "rte_rawdev_pmd.h" @@ -73,6 +74,19 @@ ifpga_find_afu_dev(const struct rte_rawdev *rdev, return NULL; } +struct rte_afu_device * +rte_ifpga_find_afu_by_name(const char *name) +{ + struct rte_afu_device *afu_dev = NULL; + + TAILQ_FOREACH(afu_dev, &ifpga_afu_dev_list, next) { + if (afu_dev && + !strcmp(afu_dev->device.name, name)) + return afu_dev; + } + return NULL; +} + static const char * const valid_args[] = { #define IFPGA_ARG_NAME "ifpga" IFPGA_ARG_NAME, @@ -125,15 +139,13 @@ ifpga_scan_one(struct rte_rawdev *rawdev, IFPGA_AFU_BTS); goto end; } + afu_pr_conf.pr_enable = 1; } else { - IFPGA_BUS_ERR("arg %s is mandatory for ifpga bus", - IFPGA_AFU_BTS); - goto end; + afu_pr_conf.pr_enable = 0; } afu_pr_conf.afu_id.uuid.uuid_low = 0; afu_pr_conf.afu_id.uuid.uuid_high = 0; - afu_pr_conf.pr_enable = path?1:0; if (ifpga_find_afu_dev(rawdev, &afu_pr_conf.afu_id)) goto end; @@ -308,12 +320,19 @@ ifpga_probe_all_drivers(struct rte_afu_device *afu_dev) } 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; } /*