|
@@ -10824,38 +10824,36 @@ do { \
|
|
|
|
|
|
int bnx2x_init_firmware(struct bnx2x *bp)
|
|
|
{
|
|
|
+ const char *fw_file_name;
|
|
|
struct bnx2x_fw_file_hdr *fw_hdr;
|
|
|
int rc;
|
|
|
|
|
|
+ if (bp->firmware)
|
|
|
+ return 0;
|
|
|
|
|
|
- if (!bp->firmware) {
|
|
|
- const char *fw_file_name;
|
|
|
-
|
|
|
- if (CHIP_IS_E1(bp))
|
|
|
- fw_file_name = FW_FILE_NAME_E1;
|
|
|
- else if (CHIP_IS_E1H(bp))
|
|
|
- fw_file_name = FW_FILE_NAME_E1H;
|
|
|
- else if (!CHIP_IS_E1x(bp))
|
|
|
- fw_file_name = FW_FILE_NAME_E2;
|
|
|
- else {
|
|
|
- BNX2X_ERR("Unsupported chip revision\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
- BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
|
|
|
+ if (CHIP_IS_E1(bp))
|
|
|
+ fw_file_name = FW_FILE_NAME_E1;
|
|
|
+ else if (CHIP_IS_E1H(bp))
|
|
|
+ fw_file_name = FW_FILE_NAME_E1H;
|
|
|
+ else if (!CHIP_IS_E1x(bp))
|
|
|
+ fw_file_name = FW_FILE_NAME_E2;
|
|
|
+ else {
|
|
|
+ BNX2X_ERR("Unsupported chip revision\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+ BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
|
|
|
|
|
|
- rc = request_firmware(&bp->firmware, fw_file_name,
|
|
|
- &bp->pdev->dev);
|
|
|
- if (rc) {
|
|
|
- BNX2X_ERR("Can't load firmware file %s\n",
|
|
|
- fw_file_name);
|
|
|
- goto request_firmware_exit;
|
|
|
- }
|
|
|
+ rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
|
|
|
+ if (rc) {
|
|
|
+ BNX2X_ERR("Can't load firmware file %s\n",
|
|
|
+ fw_file_name);
|
|
|
+ goto request_firmware_exit;
|
|
|
+ }
|
|
|
|
|
|
- rc = bnx2x_check_firmware(bp);
|
|
|
- if (rc) {
|
|
|
- BNX2X_ERR("Corrupt firmware file %s\n", fw_file_name);
|
|
|
- goto request_firmware_exit;
|
|
|
- }
|
|
|
+ rc = bnx2x_check_firmware(bp);
|
|
|
+ if (rc) {
|
|
|
+ BNX2X_ERR("Corrupt firmware file %s\n", fw_file_name);
|
|
|
+ goto request_firmware_exit;
|
|
|
}
|
|
|
|
|
|
fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data;
|
|
@@ -10901,6 +10899,7 @@ init_ops_alloc_err:
|
|
|
kfree(bp->init_data);
|
|
|
request_firmware_exit:
|
|
|
release_firmware(bp->firmware);
|
|
|
+ bp->firmware = NULL;
|
|
|
|
|
|
return rc;
|
|
|
}
|