Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 275721
b: refs/heads/master
c: eb2afd4
h: refs/heads/master
i:
  275719: 325cdc6
v: v3
  • Loading branch information
Dmitry Kravkov authored and David S. Miller committed Nov 16, 2011
1 parent 5edd9dd commit 421ad37
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 31 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: eccab1ec87d093d5104e6aade674223b5b625d39
refs/heads/master: eb2afd4a622985eaccfa8c7fc83e890b8930e0ab
50 changes: 29 additions & 21 deletions trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -10548,33 +10548,38 @@ do { \

int bnx2x_init_firmware(struct bnx2x *bp)
{
const char *fw_file_name;
struct bnx2x_fw_file_hdr *fw_hdr;
int rc;

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 (!bp->firmware) {
const char *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;
}
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 = bnx2x_check_firmware(bp);
if (rc) {
BNX2X_ERR("Corrupt 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;
}
}

fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data;
Expand Down Expand Up @@ -10630,6 +10635,7 @@ static void bnx2x_release_firmware(struct bnx2x *bp)
kfree(bp->init_ops);
kfree(bp->init_data);
release_firmware(bp->firmware);
bp->firmware = NULL;
}


Expand Down Expand Up @@ -10925,6 +10931,8 @@ static void __devexit bnx2x_remove_one(struct pci_dev *pdev)
if (bp->doorbells)
iounmap(bp->doorbells);

bnx2x_release_firmware(bp);

bnx2x_free_mem_bp(bp);

free_netdev(dev);
Expand Down
15 changes: 6 additions & 9 deletions trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
Original file line number Diff line number Diff line change
Expand Up @@ -5380,44 +5380,41 @@ static int bnx2x_func_hw_init(struct bnx2x *bp,
rc = drv->init_fw(bp);
if (rc) {
BNX2X_ERR("Error loading firmware\n");
goto fw_init_err;
goto init_err;
}

/* Handle the beginning of COMMON_XXX pases separatelly... */
switch (load_code) {
case FW_MSG_CODE_DRV_LOAD_COMMON_CHIP:
rc = bnx2x_func_init_cmn_chip(bp, drv);
if (rc)
goto init_hw_err;
goto init_err;

break;
case FW_MSG_CODE_DRV_LOAD_COMMON:
rc = bnx2x_func_init_cmn(bp, drv);
if (rc)
goto init_hw_err;
goto init_err;

break;
case FW_MSG_CODE_DRV_LOAD_PORT:
rc = bnx2x_func_init_port(bp, drv);
if (rc)
goto init_hw_err;
goto init_err;

break;
case FW_MSG_CODE_DRV_LOAD_FUNCTION:
rc = bnx2x_func_init_func(bp, drv);
if (rc)
goto init_hw_err;
goto init_err;

break;
default:
BNX2X_ERR("Unknown load_code (0x%x) from MCP\n", load_code);
rc = -EINVAL;
}

init_hw_err:
drv->release_fw(bp);

fw_init_err:
init_err:
drv->gunzip_end(bp);

/* In case of success, complete the comand immediatelly: no ramrods
Expand Down

0 comments on commit 421ad37

Please sign in to comment.