Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'bnx2x-Popoulate-firmware-versions-in-driver-info-query'

Sudarsana Reddy Kalluru says:

====================
bnx2x: Popoulate firmware versions in driver info query.

The patch series populates MBI and storm firware versions in the ethtool
driver info query.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+34 -1
+29 -1
drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
··· 1105 1105 struct ethtool_drvinfo *info) 1106 1106 { 1107 1107 struct bnx2x *bp = netdev_priv(dev); 1108 + char version[ETHTOOL_FWVERS_LEN]; 1109 + int ext_dev_info_offset; 1110 + u32 mbi; 1108 1111 1109 1112 strlcpy(info->driver, DRV_MODULE_NAME, sizeof(info->driver)); 1110 1113 strlcpy(info->version, DRV_MODULE_VERSION, sizeof(info->version)); 1111 1114 1112 - bnx2x_fill_fw_str(bp, info->fw_version, sizeof(info->fw_version)); 1115 + memset(version, 0, sizeof(version)); 1116 + snprintf(version, ETHTOOL_FWVERS_LEN, " storm %d.%d.%d.%d", 1117 + BCM_5710_FW_MAJOR_VERSION, BCM_5710_FW_MINOR_VERSION, 1118 + BCM_5710_FW_REVISION_VERSION, BCM_5710_FW_ENGINEERING_VERSION); 1119 + strlcat(info->version, version, sizeof(info->version)); 1120 + 1121 + if (SHMEM2_HAS(bp, extended_dev_info_shared_addr)) { 1122 + ext_dev_info_offset = SHMEM2_RD(bp, 1123 + extended_dev_info_shared_addr); 1124 + mbi = REG_RD(bp, ext_dev_info_offset + 1125 + offsetof(struct extended_dev_info_shared_cfg, 1126 + mbi_version)); 1127 + if (mbi) { 1128 + memset(version, 0, sizeof(version)); 1129 + snprintf(version, ETHTOOL_FWVERS_LEN, "mbi %d.%d.%d ", 1130 + (mbi & 0xff000000) >> 24, 1131 + (mbi & 0x00ff0000) >> 16, 1132 + (mbi & 0x0000ff00) >> 8); 1133 + strlcpy(info->fw_version, version, 1134 + sizeof(info->fw_version)); 1135 + } 1136 + } 1137 + 1138 + memset(version, 0, sizeof(version)); 1139 + bnx2x_fill_fw_str(bp, version, ETHTOOL_FWVERS_LEN); 1140 + strlcat(info->fw_version, version, sizeof(info->fw_version)); 1113 1141 1114 1142 strlcpy(info->bus_info, pci_name(bp->pdev), sizeof(info->bus_info)); 1115 1143 }
+5
drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
··· 1140 1140 1141 1141 }; 1142 1142 1143 + struct extended_dev_info_shared_cfg { 1144 + u32 reserved[18]; 1145 + u32 mbi_version; 1146 + u32 mbi_date; 1147 + }; 1143 1148 1144 1149 #if !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN) 1145 1150 #error "Missing either LITTLE_ENDIAN or BIG_ENDIAN definition."