diff options
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index 03f3935fd8c2..b75c8eab095c 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | |||
@@ -1783,6 +1783,29 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
1783 | rc = -EBUSY; /* other port in diagnostic mode */ | 1783 | rc = -EBUSY; /* other port in diagnostic mode */ |
1784 | LOAD_ERROR_EXIT(bp, load_error1); | 1784 | LOAD_ERROR_EXIT(bp, load_error1); |
1785 | } | 1785 | } |
1786 | if (load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP && | ||
1787 | load_code != FW_MSG_CODE_DRV_LOAD_COMMON) { | ||
1788 | /* build FW version dword */ | ||
1789 | u32 my_fw = (BCM_5710_FW_MAJOR_VERSION) + | ||
1790 | (BCM_5710_FW_MINOR_VERSION << 8) + | ||
1791 | (BCM_5710_FW_REVISION_VERSION << 16) + | ||
1792 | (BCM_5710_FW_ENGINEERING_VERSION << 24); | ||
1793 | |||
1794 | /* read loaded FW from chip */ | ||
1795 | u32 loaded_fw = REG_RD(bp, XSEM_REG_PRAM); | ||
1796 | |||
1797 | DP(BNX2X_MSG_SP, "loaded fw %x, my fw %x", | ||
1798 | loaded_fw, my_fw); | ||
1799 | |||
1800 | /* abort nic load if version mismatch */ | ||
1801 | if (my_fw != loaded_fw) { | ||
1802 | BNX2X_ERR("bnx2x with FW %x already loaded, " | ||
1803 | "which mismatches my %x FW. aborting", | ||
1804 | loaded_fw, my_fw); | ||
1805 | rc = -EBUSY; | ||
1806 | LOAD_ERROR_EXIT(bp, load_error2); | ||
1807 | } | ||
1808 | } | ||
1786 | 1809 | ||
1787 | } else { | 1810 | } else { |
1788 | int path = BP_PATH(bp); | 1811 | int path = BP_PATH(bp); |