Loading drivers/net/cxgb3/cxgb3_main.c +8 −7 Original line number Diff line number Diff line Loading @@ -665,11 +665,8 @@ static int cxgb_up(struct adapter *adap) if (!(adap->flags & FULL_INIT_DONE)) { err = t3_check_fw_version(adap); if (err) { dev_err(&adap->pdev->dev, "adapter FW is not compatible with driver\n"); if (err) goto out; } err = init_dummy_netdevs(adap); if (err) Loading Loading @@ -1002,10 +999,14 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) strcpy(info->bus_info, pci_name(adapter->pdev)); if (!fw_vers) strcpy(info->fw_version, "N/A"); else else { snprintf(info->fw_version, sizeof(info->fw_version), "%s %u.%u", (fw_vers >> 24) ? "T" : "N", (fw_vers >> 12) & 0xfff, fw_vers & 0xfff); "%s %u.%u.%u", G_FW_VERSION_TYPE(fw_vers) ? "T" : "N", G_FW_VERSION_MAJOR(fw_vers), G_FW_VERSION_MINOR(fw_vers), G_FW_VERSION_MICRO(fw_vers)); } } static void get_strings(struct net_device *dev, u32 stringset, u8 * data) Loading drivers/net/cxgb3/firmware_exports.h +27 −0 Original line number Diff line number Diff line Loading @@ -141,4 +141,31 @@ #define FW_WRC_NUM \ (65536 + FW_TUNNEL_NUM + FW_CTRL_NUM + FW_RI_NUM + FW_RX_PKT_NUM) /* * FW type and version. */ #define S_FW_VERSION_TYPE 28 #define M_FW_VERSION_TYPE 0xF #define V_FW_VERSION_TYPE(x) ((x) << S_FW_VERSION_TYPE) #define G_FW_VERSION_TYPE(x) \ (((x) >> S_FW_VERSION_TYPE) & M_FW_VERSION_TYPE) #define S_FW_VERSION_MAJOR 16 #define M_FW_VERSION_MAJOR 0xFFF #define V_FW_VERSION_MAJOR(x) ((x) << S_FW_VERSION_MAJOR) #define G_FW_VERSION_MAJOR(x) \ (((x) >> S_FW_VERSION_MAJOR) & M_FW_VERSION_MAJOR) #define S_FW_VERSION_MINOR 8 #define M_FW_VERSION_MINOR 0xFF #define V_FW_VERSION_MINOR(x) ((x) << S_FW_VERSION_MINOR) #define G_FW_VERSION_MINOR(x) \ (((x) >> S_FW_VERSION_MINOR) & M_FW_VERSION_MINOR) #define S_FW_VERSION_MICRO 0 #define M_FW_VERSION_MICRO 0xFF #define V_FW_VERSION_MICRO(x) ((x) << S_FW_VERSION_MICRO) #define G_FW_VERSION_MICRO(x) \ (((x) >> S_FW_VERSION_MICRO) & M_FW_VERSION_MICRO) #endif /* _FIRMWARE_EXPORTS_H_ */ drivers/net/cxgb3/t3_hw.c +12 −5 Original line number Diff line number Diff line Loading @@ -826,6 +826,11 @@ static int t3_write_flash(struct adapter *adapter, unsigned int addr, return 0; } enum fw_version_type { FW_VERSION_N3, FW_VERSION_T3 }; /** * t3_get_fw_version - read the firmware version * @adapter: the adapter Loading @@ -849,19 +854,21 @@ int t3_check_fw_version(struct adapter *adapter) { int ret; u32 vers; unsigned int type, major, minor; ret = t3_get_fw_version(adapter, &vers); if (ret) return ret; /* Minor 0xfff means the FW is an internal development-only version. */ if ((vers & 0xfff) == 0xfff) return 0; type = G_FW_VERSION_TYPE(vers); major = G_FW_VERSION_MAJOR(vers); minor = G_FW_VERSION_MINOR(vers); if (vers == 0x1002009) if (type == FW_VERSION_T3 && major == 3 && minor == 1) return 0; CH_ERR(adapter, "found wrong FW version, driver needs version 2.9\n"); CH_ERR(adapter, "found wrong FW version(%u.%u), " "driver needs version 3.1\n", major, minor); return -EINVAL; } Loading Loading
drivers/net/cxgb3/cxgb3_main.c +8 −7 Original line number Diff line number Diff line Loading @@ -665,11 +665,8 @@ static int cxgb_up(struct adapter *adap) if (!(adap->flags & FULL_INIT_DONE)) { err = t3_check_fw_version(adap); if (err) { dev_err(&adap->pdev->dev, "adapter FW is not compatible with driver\n"); if (err) goto out; } err = init_dummy_netdevs(adap); if (err) Loading Loading @@ -1002,10 +999,14 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) strcpy(info->bus_info, pci_name(adapter->pdev)); if (!fw_vers) strcpy(info->fw_version, "N/A"); else else { snprintf(info->fw_version, sizeof(info->fw_version), "%s %u.%u", (fw_vers >> 24) ? "T" : "N", (fw_vers >> 12) & 0xfff, fw_vers & 0xfff); "%s %u.%u.%u", G_FW_VERSION_TYPE(fw_vers) ? "T" : "N", G_FW_VERSION_MAJOR(fw_vers), G_FW_VERSION_MINOR(fw_vers), G_FW_VERSION_MICRO(fw_vers)); } } static void get_strings(struct net_device *dev, u32 stringset, u8 * data) Loading
drivers/net/cxgb3/firmware_exports.h +27 −0 Original line number Diff line number Diff line Loading @@ -141,4 +141,31 @@ #define FW_WRC_NUM \ (65536 + FW_TUNNEL_NUM + FW_CTRL_NUM + FW_RI_NUM + FW_RX_PKT_NUM) /* * FW type and version. */ #define S_FW_VERSION_TYPE 28 #define M_FW_VERSION_TYPE 0xF #define V_FW_VERSION_TYPE(x) ((x) << S_FW_VERSION_TYPE) #define G_FW_VERSION_TYPE(x) \ (((x) >> S_FW_VERSION_TYPE) & M_FW_VERSION_TYPE) #define S_FW_VERSION_MAJOR 16 #define M_FW_VERSION_MAJOR 0xFFF #define V_FW_VERSION_MAJOR(x) ((x) << S_FW_VERSION_MAJOR) #define G_FW_VERSION_MAJOR(x) \ (((x) >> S_FW_VERSION_MAJOR) & M_FW_VERSION_MAJOR) #define S_FW_VERSION_MINOR 8 #define M_FW_VERSION_MINOR 0xFF #define V_FW_VERSION_MINOR(x) ((x) << S_FW_VERSION_MINOR) #define G_FW_VERSION_MINOR(x) \ (((x) >> S_FW_VERSION_MINOR) & M_FW_VERSION_MINOR) #define S_FW_VERSION_MICRO 0 #define M_FW_VERSION_MICRO 0xFF #define V_FW_VERSION_MICRO(x) ((x) << S_FW_VERSION_MICRO) #define G_FW_VERSION_MICRO(x) \ (((x) >> S_FW_VERSION_MICRO) & M_FW_VERSION_MICRO) #endif /* _FIRMWARE_EXPORTS_H_ */
drivers/net/cxgb3/t3_hw.c +12 −5 Original line number Diff line number Diff line Loading @@ -826,6 +826,11 @@ static int t3_write_flash(struct adapter *adapter, unsigned int addr, return 0; } enum fw_version_type { FW_VERSION_N3, FW_VERSION_T3 }; /** * t3_get_fw_version - read the firmware version * @adapter: the adapter Loading @@ -849,19 +854,21 @@ int t3_check_fw_version(struct adapter *adapter) { int ret; u32 vers; unsigned int type, major, minor; ret = t3_get_fw_version(adapter, &vers); if (ret) return ret; /* Minor 0xfff means the FW is an internal development-only version. */ if ((vers & 0xfff) == 0xfff) return 0; type = G_FW_VERSION_TYPE(vers); major = G_FW_VERSION_MAJOR(vers); minor = G_FW_VERSION_MINOR(vers); if (vers == 0x1002009) if (type == FW_VERSION_T3 && major == 3 && minor == 1) return 0; CH_ERR(adapter, "found wrong FW version, driver needs version 2.9\n"); CH_ERR(adapter, "found wrong FW version(%u.%u), " "driver needs version 3.1\n", major, minor); return -EINVAL; } Loading