aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorDimitris Michailidis <dm@chelsio.com>2010-07-11 20:33:48 -0400
committerDavid S. Miller <davem@davemloft.net>2010-07-11 20:33:48 -0400
commit835bb606faffcd761e7abbc6b5de89ea5c409123 (patch)
tree55e0768f90b5d12f0faa16e5174c46f2b7e435e6 /drivers/net
parentf796564a5fd7be1a4597b66e2a516c18685641df (diff)
cxgb4: exclude registers with read side effects from register dumps
A few registers have side effects on reads, eg FIFO pointers that auto advance or mailboxes which change ownership when read. They are unsafe to read so exclude them from ethtool register dumps. Bump ethtool_regs.version to indicate the changed register set. Signed-off-by: Dimitris Michailidis <dm@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/cxgb4/cxgb4_main.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/cxgb4/cxgb4_main.c b/drivers/net/cxgb4/cxgb4_main.c
index 110843c5fde2..0af6d6750a9d 100644
--- a/drivers/net/cxgb4/cxgb4_main.c
+++ b/drivers/net/cxgb4/cxgb4_main.c
@@ -1050,10 +1050,11 @@ static void get_stats(struct net_device *dev, struct ethtool_stats *stats,
1050 * Return a version number to identify the type of adapter. The scheme is: 1050 * Return a version number to identify the type of adapter. The scheme is:
1051 * - bits 0..9: chip version 1051 * - bits 0..9: chip version
1052 * - bits 10..15: chip revision 1052 * - bits 10..15: chip revision
1053 * - bits 16..23: register dump version
1053 */ 1054 */
1054static inline unsigned int mk_adap_vers(const struct adapter *ap) 1055static inline unsigned int mk_adap_vers(const struct adapter *ap)
1055{ 1056{
1056 return 4 | (ap->params.rev << 10); 1057 return 4 | (ap->params.rev << 10) | (1 << 16);
1057} 1058}
1058 1059
1059static void reg_block_dump(struct adapter *ap, void *buf, unsigned int start, 1060static void reg_block_dump(struct adapter *ap, void *buf, unsigned int start,
@@ -1128,7 +1129,9 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
1128 0xdfc0, 0xdfe0, 1129 0xdfc0, 0xdfe0,
1129 0xe000, 0xea7c, 1130 0xe000, 0xea7c,
1130 0xf000, 0x11190, 1131 0xf000, 0x11190,
1131 0x19040, 0x19124, 1132 0x19040, 0x1906c,
1133 0x19078, 0x19080,
1134 0x1908c, 0x19124,
1132 0x19150, 0x191b0, 1135 0x19150, 0x191b0,
1133 0x191d0, 0x191e8, 1136 0x191d0, 0x191e8,
1134 0x19238, 0x1924c, 1137 0x19238, 0x1924c,
@@ -1141,49 +1144,49 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
1141 0x1a190, 0x1a1c4, 1144 0x1a190, 0x1a1c4,
1142 0x1a1fc, 0x1a1fc, 1145 0x1a1fc, 0x1a1fc,
1143 0x1e040, 0x1e04c, 1146 0x1e040, 0x1e04c,
1144 0x1e240, 0x1e28c, 1147 0x1e284, 0x1e28c,
1145 0x1e2c0, 0x1e2c0, 1148 0x1e2c0, 0x1e2c0,
1146 0x1e2e0, 0x1e2e0, 1149 0x1e2e0, 0x1e2e0,
1147 0x1e300, 0x1e384, 1150 0x1e300, 0x1e384,
1148 0x1e3c0, 0x1e3c8, 1151 0x1e3c0, 0x1e3c8,
1149 0x1e440, 0x1e44c, 1152 0x1e440, 0x1e44c,
1150 0x1e640, 0x1e68c, 1153 0x1e684, 0x1e68c,
1151 0x1e6c0, 0x1e6c0, 1154 0x1e6c0, 0x1e6c0,
1152 0x1e6e0, 0x1e6e0, 1155 0x1e6e0, 0x1e6e0,
1153 0x1e700, 0x1e784, 1156 0x1e700, 0x1e784,
1154 0x1e7c0, 0x1e7c8, 1157 0x1e7c0, 0x1e7c8,
1155 0x1e840, 0x1e84c, 1158 0x1e840, 0x1e84c,
1156 0x1ea40, 0x1ea8c, 1159 0x1ea84, 0x1ea8c,
1157 0x1eac0, 0x1eac0, 1160 0x1eac0, 0x1eac0,
1158 0x1eae0, 0x1eae0, 1161 0x1eae0, 0x1eae0,
1159 0x1eb00, 0x1eb84, 1162 0x1eb00, 0x1eb84,
1160 0x1ebc0, 0x1ebc8, 1163 0x1ebc0, 0x1ebc8,
1161 0x1ec40, 0x1ec4c, 1164 0x1ec40, 0x1ec4c,
1162 0x1ee40, 0x1ee8c, 1165 0x1ee84, 0x1ee8c,
1163 0x1eec0, 0x1eec0, 1166 0x1eec0, 0x1eec0,
1164 0x1eee0, 0x1eee0, 1167 0x1eee0, 0x1eee0,
1165 0x1ef00, 0x1ef84, 1168 0x1ef00, 0x1ef84,
1166 0x1efc0, 0x1efc8, 1169 0x1efc0, 0x1efc8,
1167 0x1f040, 0x1f04c, 1170 0x1f040, 0x1f04c,
1168 0x1f240, 0x1f28c, 1171 0x1f284, 0x1f28c,
1169 0x1f2c0, 0x1f2c0, 1172 0x1f2c0, 0x1f2c0,
1170 0x1f2e0, 0x1f2e0, 1173 0x1f2e0, 0x1f2e0,
1171 0x1f300, 0x1f384, 1174 0x1f300, 0x1f384,
1172 0x1f3c0, 0x1f3c8, 1175 0x1f3c0, 0x1f3c8,
1173 0x1f440, 0x1f44c, 1176 0x1f440, 0x1f44c,
1174 0x1f640, 0x1f68c, 1177 0x1f684, 0x1f68c,
1175 0x1f6c0, 0x1f6c0, 1178 0x1f6c0, 0x1f6c0,
1176 0x1f6e0, 0x1f6e0, 1179 0x1f6e0, 0x1f6e0,
1177 0x1f700, 0x1f784, 1180 0x1f700, 0x1f784,
1178 0x1f7c0, 0x1f7c8, 1181 0x1f7c0, 0x1f7c8,
1179 0x1f840, 0x1f84c, 1182 0x1f840, 0x1f84c,
1180 0x1fa40, 0x1fa8c, 1183 0x1fa84, 0x1fa8c,
1181 0x1fac0, 0x1fac0, 1184 0x1fac0, 0x1fac0,
1182 0x1fae0, 0x1fae0, 1185 0x1fae0, 0x1fae0,
1183 0x1fb00, 0x1fb84, 1186 0x1fb00, 0x1fb84,
1184 0x1fbc0, 0x1fbc8, 1187 0x1fbc0, 0x1fbc8,
1185 0x1fc40, 0x1fc4c, 1188 0x1fc40, 0x1fc4c,
1186 0x1fe40, 0x1fe8c, 1189 0x1fe84, 0x1fe8c,
1187 0x1fec0, 0x1fec0, 1190 0x1fec0, 0x1fec0,
1188 0x1fee0, 0x1fee0, 1191 0x1fee0, 0x1fee0,
1189 0x1ff00, 0x1ff84, 1192 0x1ff00, 0x1ff84,