diff options
author | David S. Miller <davem@davemloft.net> | 2011-11-21 13:50:33 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-11-21 13:50:33 -0500 |
commit | efd0bf97deeddd9ba53daabfc470a1399c6b0b2d (patch) | |
tree | eec56da5fbc796bac7c67f1990a18f5e0a304059 /drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | |
parent | f8a15af093b19b86d56933c8757cee298d0f32a8 (diff) | |
parent | 6fe4c6d466e95d31164f14b1ac4aefb51f0f4f82 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
The forcedeth changes had a conflict with the conversion over
to atomic u64 statistics in net-next.
The libertas cfg.c code had a conflict with the bss reference
counting fix by John Linville in net-next.
Conflicts:
drivers/net/ethernet/nvidia/forcedeth.c
drivers/net/wireless/libertas/cfg.c
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 9090afc7532b..83481e20f144 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | |||
@@ -10574,33 +10574,38 @@ do { \ | |||
10574 | 10574 | ||
10575 | int bnx2x_init_firmware(struct bnx2x *bp) | 10575 | int bnx2x_init_firmware(struct bnx2x *bp) |
10576 | { | 10576 | { |
10577 | const char *fw_file_name; | ||
10578 | struct bnx2x_fw_file_hdr *fw_hdr; | 10577 | struct bnx2x_fw_file_hdr *fw_hdr; |
10579 | int rc; | 10578 | int rc; |
10580 | 10579 | ||
10581 | if (CHIP_IS_E1(bp)) | ||
10582 | fw_file_name = FW_FILE_NAME_E1; | ||
10583 | else if (CHIP_IS_E1H(bp)) | ||
10584 | fw_file_name = FW_FILE_NAME_E1H; | ||
10585 | else if (!CHIP_IS_E1x(bp)) | ||
10586 | fw_file_name = FW_FILE_NAME_E2; | ||
10587 | else { | ||
10588 | BNX2X_ERR("Unsupported chip revision\n"); | ||
10589 | return -EINVAL; | ||
10590 | } | ||
10591 | 10580 | ||
10592 | BNX2X_DEV_INFO("Loading %s\n", fw_file_name); | 10581 | if (!bp->firmware) { |
10582 | const char *fw_file_name; | ||
10593 | 10583 | ||
10594 | rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev); | 10584 | if (CHIP_IS_E1(bp)) |
10595 | if (rc) { | 10585 | fw_file_name = FW_FILE_NAME_E1; |
10596 | BNX2X_ERR("Can't load firmware file %s\n", fw_file_name); | 10586 | else if (CHIP_IS_E1H(bp)) |
10597 | goto request_firmware_exit; | 10587 | fw_file_name = FW_FILE_NAME_E1H; |
10598 | } | 10588 | else if (!CHIP_IS_E1x(bp)) |
10589 | fw_file_name = FW_FILE_NAME_E2; | ||
10590 | else { | ||
10591 | BNX2X_ERR("Unsupported chip revision\n"); | ||
10592 | return -EINVAL; | ||
10593 | } | ||
10594 | BNX2X_DEV_INFO("Loading %s\n", fw_file_name); | ||
10599 | 10595 | ||
10600 | rc = bnx2x_check_firmware(bp); | 10596 | rc = request_firmware(&bp->firmware, fw_file_name, |
10601 | if (rc) { | 10597 | &bp->pdev->dev); |
10602 | BNX2X_ERR("Corrupt firmware file %s\n", fw_file_name); | 10598 | if (rc) { |
10603 | goto request_firmware_exit; | 10599 | BNX2X_ERR("Can't load firmware file %s\n", |
10600 | fw_file_name); | ||
10601 | goto request_firmware_exit; | ||
10602 | } | ||
10603 | |||
10604 | rc = bnx2x_check_firmware(bp); | ||
10605 | if (rc) { | ||
10606 | BNX2X_ERR("Corrupt firmware file %s\n", fw_file_name); | ||
10607 | goto request_firmware_exit; | ||
10608 | } | ||
10604 | } | 10609 | } |
10605 | 10610 | ||
10606 | fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data; | 10611 | fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data; |
@@ -10656,6 +10661,7 @@ static void bnx2x_release_firmware(struct bnx2x *bp) | |||
10656 | kfree(bp->init_ops); | 10661 | kfree(bp->init_ops); |
10657 | kfree(bp->init_data); | 10662 | kfree(bp->init_data); |
10658 | release_firmware(bp->firmware); | 10663 | release_firmware(bp->firmware); |
10664 | bp->firmware = NULL; | ||
10659 | } | 10665 | } |
10660 | 10666 | ||
10661 | 10667 | ||
@@ -10951,6 +10957,8 @@ static void __devexit bnx2x_remove_one(struct pci_dev *pdev) | |||
10951 | if (bp->doorbells) | 10957 | if (bp->doorbells) |
10952 | iounmap(bp->doorbells); | 10958 | iounmap(bp->doorbells); |
10953 | 10959 | ||
10960 | bnx2x_release_firmware(bp); | ||
10961 | |||
10954 | bnx2x_free_mem_bp(bp); | 10962 | bnx2x_free_mem_bp(bp); |
10955 | 10963 | ||
10956 | free_netdev(dev); | 10964 | free_netdev(dev); |