X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnx2x%2Fbnx2x.c;h=7ee805bd0d3f0920c5295b56bd9b7a8c435745a1;hb=93dfebd2c237217ab22c2acb8795c61da6e50870;hp=8eb6d609bdc36dfa1cdb3e94c821362c9a69dd46;hpb=de6eab7c1e273fec2f3287735545db32d0e07ca2;p=dpdk.git diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c index 8eb6d609bd..7ee805bd0d 100644 --- a/drivers/net/bnx2x/bnx2x.c +++ b/drivers/net/bnx2x/bnx2x.c @@ -23,11 +23,15 @@ #include #include +#include #include #include + #include #include +#include "eal_firmware.h" + #define BNX2X_PMD_VER_PREFIX "BNX2X PMD" #define BNX2X_PMD_VERSION_MAJOR 1 #define BNX2X_PMD_VERSION_MINOR 1 @@ -9654,44 +9658,33 @@ static void bnx2x_init_rte(struct bnx2x_softc *sc) void bnx2x_load_firmware(struct bnx2x_softc *sc) { const char *fwname; - int f; - struct stat st; + void *buf; + size_t bufsz; fwname = sc->devinfo.device_id == CHIP_NUM_57711 ? FW_NAME_57711 : FW_NAME_57810; - f = open(fwname, O_RDONLY); - if (f < 0) { + if (rte_firmware_read(fwname, &buf, &bufsz) != 0) { PMD_DRV_LOG(NOTICE, sc, "Can't open firmware file"); return; } - if (fstat(f, &st) < 0) { - PMD_DRV_LOG(NOTICE, sc, "Can't stat firmware file"); - close(f); - return; - } - - sc->firmware = rte_zmalloc("bnx2x_fw", st.st_size, RTE_CACHE_LINE_SIZE); + sc->firmware = rte_zmalloc("bnx2x_fw", bufsz, RTE_CACHE_LINE_SIZE); if (!sc->firmware) { PMD_DRV_LOG(NOTICE, sc, "Can't allocate memory for firmware"); - close(f); - return; + goto out; } - if (read(f, sc->firmware, st.st_size) != st.st_size) { - PMD_DRV_LOG(NOTICE, sc, "Can't read firmware data"); - close(f); - return; - } - close(f); - - sc->fw_len = st.st_size; + sc->fw_len = bufsz; if (sc->fw_len < FW_HEADER_LEN) { PMD_DRV_LOG(NOTICE, sc, "Invalid fw size: %" PRIu64, sc->fw_len); - return; + goto out; } + + memcpy(sc->firmware, buf, sc->fw_len); PMD_DRV_LOG(DEBUG, sc, "fw_len = %" PRIu64, sc->fw_len); +out: + free(buf); } static void