diff options
-rw-r--r-- | drivers/net/cxgb3/common.h | 4 | ||||
-rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 15 | ||||
-rw-r--r-- | drivers/net/cxgb3/t3_hw.c | 26 |
3 files changed, 15 insertions, 30 deletions
diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h index e312d315a42d..db4f4f575b6a 100644 --- a/drivers/net/cxgb3/common.h +++ b/drivers/net/cxgb3/common.h | |||
@@ -714,7 +714,7 @@ int t3_seeprom_read(struct adapter *adapter, u32 addr, __le32 *data); | |||
714 | int t3_seeprom_write(struct adapter *adapter, u32 addr, __le32 data); | 714 | int t3_seeprom_write(struct adapter *adapter, u32 addr, __le32 data); |
715 | int t3_seeprom_wp(struct adapter *adapter, int enable); | 715 | int t3_seeprom_wp(struct adapter *adapter, int enable); |
716 | int t3_get_tp_version(struct adapter *adapter, u32 *vers); | 716 | int t3_get_tp_version(struct adapter *adapter, u32 *vers); |
717 | int t3_check_tpsram_version(struct adapter *adapter, int *must_load); | 717 | int t3_check_tpsram_version(struct adapter *adapter); |
718 | int t3_check_tpsram(struct adapter *adapter, const u8 *tp_ram, | 718 | int t3_check_tpsram(struct adapter *adapter, const u8 *tp_ram, |
719 | unsigned int size); | 719 | unsigned int size); |
720 | int t3_set_proto_sram(struct adapter *adap, const u8 *data); | 720 | int t3_set_proto_sram(struct adapter *adap, const u8 *data); |
@@ -722,7 +722,7 @@ int t3_read_flash(struct adapter *adapter, unsigned int addr, | |||
722 | unsigned int nwords, u32 *data, int byte_oriented); | 722 | unsigned int nwords, u32 *data, int byte_oriented); |
723 | int t3_load_fw(struct adapter *adapter, const u8 * fw_data, unsigned int size); | 723 | int t3_load_fw(struct adapter *adapter, const u8 * fw_data, unsigned int size); |
724 | int t3_get_fw_version(struct adapter *adapter, u32 *vers); | 724 | int t3_get_fw_version(struct adapter *adapter, u32 *vers); |
725 | int t3_check_fw_version(struct adapter *adapter, int *must_load); | 725 | int t3_check_fw_version(struct adapter *adapter); |
726 | int t3_init_hw(struct adapter *adapter, u32 fw_params); | 726 | int t3_init_hw(struct adapter *adapter, u32 fw_params); |
727 | void mac_prep(struct cmac *mac, struct adapter *adapter, int index); | 727 | void mac_prep(struct cmac *mac, struct adapter *adapter, int index); |
728 | void early_hw_init(struct adapter *adapter, const struct adapter_info *ai); | 728 | void early_hw_init(struct adapter *adapter, const struct adapter_info *ai); |
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index 9e8727c5eced..2847f947499d 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c | |||
@@ -958,21 +958,22 @@ release_tpsram: | |||
958 | static int cxgb_up(struct adapter *adap) | 958 | static int cxgb_up(struct adapter *adap) |
959 | { | 959 | { |
960 | int err; | 960 | int err; |
961 | int must_load; | ||
962 | 961 | ||
963 | if (!(adap->flags & FULL_INIT_DONE)) { | 962 | if (!(adap->flags & FULL_INIT_DONE)) { |
964 | err = t3_check_fw_version(adap, &must_load); | 963 | err = t3_check_fw_version(adap); |
965 | if (err == -EINVAL) { | 964 | if (err == -EINVAL) { |
966 | err = upgrade_fw(adap); | 965 | err = upgrade_fw(adap); |
967 | if (err && must_load) | 966 | CH_WARN(adap, "FW upgrade to %d.%d.%d %s\n", |
968 | goto out; | 967 | FW_VERSION_MAJOR, FW_VERSION_MINOR, |
968 | FW_VERSION_MICRO, err ? "failed" : "succeeded"); | ||
969 | } | 969 | } |
970 | 970 | ||
971 | err = t3_check_tpsram_version(adap, &must_load); | 971 | err = t3_check_tpsram_version(adap); |
972 | if (err == -EINVAL) { | 972 | if (err == -EINVAL) { |
973 | err = update_tpsram(adap); | 973 | err = update_tpsram(adap); |
974 | if (err && must_load) | 974 | CH_WARN(adap, "TP upgrade to %d.%d.%d %s\n", |
975 | goto out; | 975 | TP_VERSION_MAJOR, TP_VERSION_MINOR, |
976 | TP_VERSION_MICRO, err ? "failed" : "succeeded"); | ||
976 | } | 977 | } |
977 | 978 | ||
978 | /* | 979 | /* |
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c index 9a0898b0dbce..2d1433077a8e 100644 --- a/drivers/net/cxgb3/t3_hw.c +++ b/drivers/net/cxgb3/t3_hw.c | |||
@@ -925,11 +925,10 @@ int t3_get_tp_version(struct adapter *adapter, u32 *vers) | |||
925 | /** | 925 | /** |
926 | * t3_check_tpsram_version - read the tp sram version | 926 | * t3_check_tpsram_version - read the tp sram version |
927 | * @adapter: the adapter | 927 | * @adapter: the adapter |
928 | * @must_load: set to 1 if loading a new microcode image is required | ||
929 | * | 928 | * |
930 | * Reads the protocol sram version from flash. | 929 | * Reads the protocol sram version from flash. |
931 | */ | 930 | */ |
932 | int t3_check_tpsram_version(struct adapter *adapter, int *must_load) | 931 | int t3_check_tpsram_version(struct adapter *adapter) |
933 | { | 932 | { |
934 | int ret; | 933 | int ret; |
935 | u32 vers; | 934 | u32 vers; |
@@ -938,7 +937,6 @@ int t3_check_tpsram_version(struct adapter *adapter, int *must_load) | |||
938 | if (adapter->params.rev == T3_REV_A) | 937 | if (adapter->params.rev == T3_REV_A) |
939 | return 0; | 938 | return 0; |
940 | 939 | ||
941 | *must_load = 1; | ||
942 | 940 | ||
943 | ret = t3_get_tp_version(adapter, &vers); | 941 | ret = t3_get_tp_version(adapter, &vers); |
944 | if (ret) | 942 | if (ret) |
@@ -949,13 +947,7 @@ int t3_check_tpsram_version(struct adapter *adapter, int *must_load) | |||
949 | 947 | ||
950 | if (major == TP_VERSION_MAJOR && minor == TP_VERSION_MINOR) | 948 | if (major == TP_VERSION_MAJOR && minor == TP_VERSION_MINOR) |
951 | return 0; | 949 | return 0; |
952 | |||
953 | if (major != TP_VERSION_MAJOR) | ||
954 | CH_ERR(adapter, "found wrong TP version (%u.%u), " | ||
955 | "driver needs version %d.%d\n", major, minor, | ||
956 | TP_VERSION_MAJOR, TP_VERSION_MINOR); | ||
957 | else { | 950 | else { |
958 | *must_load = 0; | ||
959 | CH_ERR(adapter, "found wrong TP version (%u.%u), " | 951 | CH_ERR(adapter, "found wrong TP version (%u.%u), " |
960 | "driver compiled for version %d.%d\n", major, minor, | 952 | "driver compiled for version %d.%d\n", major, minor, |
961 | TP_VERSION_MAJOR, TP_VERSION_MINOR); | 953 | TP_VERSION_MAJOR, TP_VERSION_MINOR); |
@@ -1012,18 +1004,16 @@ int t3_get_fw_version(struct adapter *adapter, u32 *vers) | |||
1012 | /** | 1004 | /** |
1013 | * t3_check_fw_version - check if the FW is compatible with this driver | 1005 | * t3_check_fw_version - check if the FW is compatible with this driver |
1014 | * @adapter: the adapter | 1006 | * @adapter: the adapter |
1015 | * @must_load: set to 1 if loading a new FW image is required | 1007 | * |
1016 | |||
1017 | * Checks if an adapter's FW is compatible with the driver. Returns 0 | 1008 | * Checks if an adapter's FW is compatible with the driver. Returns 0 |
1018 | * if the versions are compatible, a negative error otherwise. | 1009 | * if the versions are compatible, a negative error otherwise. |
1019 | */ | 1010 | */ |
1020 | int t3_check_fw_version(struct adapter *adapter, int *must_load) | 1011 | int t3_check_fw_version(struct adapter *adapter) |
1021 | { | 1012 | { |
1022 | int ret; | 1013 | int ret; |
1023 | u32 vers; | 1014 | u32 vers; |
1024 | unsigned int type, major, minor; | 1015 | unsigned int type, major, minor; |
1025 | 1016 | ||
1026 | *must_load = 1; | ||
1027 | ret = t3_get_fw_version(adapter, &vers); | 1017 | ret = t3_get_fw_version(adapter, &vers); |
1028 | if (ret) | 1018 | if (ret) |
1029 | return ret; | 1019 | return ret; |
@@ -1035,17 +1025,11 @@ int t3_check_fw_version(struct adapter *adapter, int *must_load) | |||
1035 | if (type == FW_VERSION_T3 && major == FW_VERSION_MAJOR && | 1025 | if (type == FW_VERSION_T3 && major == FW_VERSION_MAJOR && |
1036 | minor == FW_VERSION_MINOR) | 1026 | minor == FW_VERSION_MINOR) |
1037 | return 0; | 1027 | return 0; |
1038 | 1028 | else if (major != FW_VERSION_MAJOR || minor < FW_VERSION_MINOR) | |
1039 | if (major != FW_VERSION_MAJOR) | ||
1040 | CH_ERR(adapter, "found wrong FW version(%u.%u), " | ||
1041 | "driver needs version %u.%u\n", major, minor, | ||
1042 | FW_VERSION_MAJOR, FW_VERSION_MINOR); | ||
1043 | else if (minor < FW_VERSION_MINOR) { | ||
1044 | *must_load = 0; | ||
1045 | CH_WARN(adapter, "found old FW minor version(%u.%u), " | 1029 | CH_WARN(adapter, "found old FW minor version(%u.%u), " |
1046 | "driver compiled for version %u.%u\n", major, minor, | 1030 | "driver compiled for version %u.%u\n", major, minor, |
1047 | FW_VERSION_MAJOR, FW_VERSION_MINOR); | 1031 | FW_VERSION_MAJOR, FW_VERSION_MINOR); |
1048 | } else { | 1032 | else { |
1049 | CH_WARN(adapter, "found newer FW version(%u.%u), " | 1033 | CH_WARN(adapter, "found newer FW version(%u.%u), " |
1050 | "driver compiled for version %u.%u\n", major, minor, | 1034 | "driver compiled for version %u.%u\n", major, minor, |
1051 | FW_VERSION_MAJOR, FW_VERSION_MINOR); | 1035 | FW_VERSION_MAJOR, FW_VERSION_MINOR); |