X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fqede%2Fqede_main.c;h=2d1f70693a3d615311efb45a509bbebb16f930b8;hb=b37ed6def36798342172f298516c5fc6d0d8e070;hp=caa9d1d4f6155c5348d5d3b896f3a9e93d14b37f;hpb=effb1d0b9527815a7cd5422bce5defbc0884cea0;p=dpdk.git diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c index caa9d1d4f6..2d1f70693a 100644 --- a/drivers/net/qede/qede_main.c +++ b/drivers/net/qede/qede_main.c @@ -5,9 +5,12 @@ */ #include + #include #include +#include "eal_firmware.h" + #include "qede_ethdev.h" /* ######### DEBUG ###########*/ #include "qede_debug.h" @@ -127,51 +130,40 @@ static void qed_free_stream_mem(struct ecore_dev *edev) #ifdef CONFIG_ECORE_BINARY_FW static int qed_load_firmware_data(struct ecore_dev *edev) { - int fd; - struct stat st; const char *fw = RTE_LIBRTE_QEDE_FW; + void *buf; + size_t bufsz; + int ret; if (strcmp(fw, "") == 0) strcpy(qede_fw_file, QEDE_DEFAULT_FIRMWARE); else strcpy(qede_fw_file, fw); - fd = open(qede_fw_file, O_RDONLY); - if (fd < 0) { - DP_ERR(edev, "Can't open firmware file\n"); - return -ENOENT; - } - - if (fstat(fd, &st) < 0) { - DP_ERR(edev, "Can't stat firmware file\n"); - close(fd); + if (rte_firmware_read(qede_fw_file, &buf, &bufsz) < 0) { + DP_ERR(edev, "Can't read firmware data: %s\n", qede_fw_file); return -1; } - edev->firmware = rte_zmalloc("qede_fw", st.st_size, - RTE_CACHE_LINE_SIZE); + edev->firmware = rte_zmalloc("qede_fw", bufsz, RTE_CACHE_LINE_SIZE); if (!edev->firmware) { DP_ERR(edev, "Can't allocate memory for firmware\n"); - close(fd); - return -ENOMEM; - } - - if (read(fd, edev->firmware, st.st_size) != st.st_size) { - DP_ERR(edev, "Can't read firmware data\n"); - close(fd); - return -1; + ret = -ENOMEM; + goto out; } - edev->fw_len = st.st_size; + memcpy(edev->firmware, buf, bufsz); + edev->fw_len = bufsz; if (edev->fw_len < 104) { DP_ERR(edev, "Invalid fw size: %" PRIu64 "\n", edev->fw_len); - close(fd); - return -EINVAL; + ret = -EINVAL; + goto out; } - - close(fd); - return 0; + ret = 0; +out: + free(buf); + return ret; } #endif