diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-13 17:50:18 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-13 17:50:18 -0500 |
commit | d89b218b801fd93ea95880f1c7fde348cbcc51c5 (patch) | |
tree | cd3c34e1811f9b2bc10ecfb957bf26cbd04c677e /drivers/net/tulip/eeprom.c | |
parent | 80a186074e72e2cd61f6716d90cf32ce54981a56 (diff) | |
parent | bec68ff1637ca00bb1585a03a7be8a13380084de (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (108 commits)
bridge: ensure to unlock in error path in br_multicast_query().
drivers/net/tulip/eeprom.c: fix bogus "(null)" in tulip init messages
sky2: Avoid rtnl_unlock without rtnl_lock
ipv6: Send netlink notification when DAD fails
drivers/net/tg3.c: change the field used with the TG3_FLAG_10_100_ONLY constant
ipconfig: Handle devices which take some time to come up.
mac80211: Fix memory leak in ieee80211_if_write()
mac80211: Fix (dynamic) power save entry
ipw2200: use kmalloc for large local variables
ath5k: read eeprom IQ calibration values correctly for G mode
ath5k: fix I/Q calibration (for real)
ath5k: fix TSF reset
ath5k: use fixed antenna for tx descriptors
libipw: split ieee->networks into small pieces
mac80211: Fix sta_mtx unlocking on insert STA failure path
rt2x00: remove KSEG1ADDR define from rt2x00soc.h
net: add ColdFire support to the smc91x driver
asix: fix setting mac address for AX88772
ipv6 ip6_tunnel: eliminate unused recursion field from ip6_tnl{}.
net: Fix dev_mc_add()
...
Diffstat (limited to 'drivers/net/tulip/eeprom.c')
-rw-r--r-- | drivers/net/tulip/eeprom.c | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/drivers/net/tulip/eeprom.c b/drivers/net/tulip/eeprom.c index 93f4e8309f81..49f05d1431f5 100644 --- a/drivers/net/tulip/eeprom.c +++ b/drivers/net/tulip/eeprom.c | |||
@@ -143,6 +143,12 @@ static void __devinit tulip_build_fake_mediatable(struct tulip_private *tp) | |||
143 | 143 | ||
144 | void __devinit tulip_parse_eeprom(struct net_device *dev) | 144 | void __devinit tulip_parse_eeprom(struct net_device *dev) |
145 | { | 145 | { |
146 | /* | ||
147 | dev is not registered at this point, so logging messages can't | ||
148 | use dev_<level> or netdev_<level> but dev->name is good via a | ||
149 | hack in the caller | ||
150 | */ | ||
151 | |||
146 | /* The last media info list parsed, for multiport boards. */ | 152 | /* The last media info list parsed, for multiport boards. */ |
147 | static struct mediatable *last_mediatable; | 153 | static struct mediatable *last_mediatable; |
148 | static unsigned char *last_ee_data; | 154 | static unsigned char *last_ee_data; |
@@ -161,15 +167,14 @@ void __devinit tulip_parse_eeprom(struct net_device *dev) | |||
161 | if (ee_data[0] == 0xff) { | 167 | if (ee_data[0] == 0xff) { |
162 | if (last_mediatable) { | 168 | if (last_mediatable) { |
163 | controller_index++; | 169 | controller_index++; |
164 | dev_info(&dev->dev, | 170 | pr_info("%s: Controller %d of multiport board\n", |
165 | "Controller %d of multiport board\n", | 171 | dev->name, controller_index); |
166 | controller_index); | ||
167 | tp->mtable = last_mediatable; | 172 | tp->mtable = last_mediatable; |
168 | ee_data = last_ee_data; | 173 | ee_data = last_ee_data; |
169 | goto subsequent_board; | 174 | goto subsequent_board; |
170 | } else | 175 | } else |
171 | dev_info(&dev->dev, | 176 | pr_info("%s: Missing EEPROM, this interface may not work correctly!\n", |
172 | "Missing EEPROM, this interface may not work correctly!\n"); | 177 | dev->name); |
173 | return; | 178 | return; |
174 | } | 179 | } |
175 | /* Do a fix-up based on the vendor half of the station address prefix. */ | 180 | /* Do a fix-up based on the vendor half of the station address prefix. */ |
@@ -181,15 +186,14 @@ void __devinit tulip_parse_eeprom(struct net_device *dev) | |||
181 | i++; /* An Accton EN1207, not an outlaw Maxtech. */ | 186 | i++; /* An Accton EN1207, not an outlaw Maxtech. */ |
182 | memcpy(ee_data + 26, eeprom_fixups[i].newtable, | 187 | memcpy(ee_data + 26, eeprom_fixups[i].newtable, |
183 | sizeof(eeprom_fixups[i].newtable)); | 188 | sizeof(eeprom_fixups[i].newtable)); |
184 | dev_info(&dev->dev, | 189 | pr_info("%s: Old format EEPROM on '%s' board. Using substitute media control info\n", |
185 | "Old format EEPROM on '%s' board. Using substitute media control info\n", | 190 | dev->name, eeprom_fixups[i].name); |
186 | eeprom_fixups[i].name); | ||
187 | break; | 191 | break; |
188 | } | 192 | } |
189 | } | 193 | } |
190 | if (eeprom_fixups[i].name == NULL) { /* No fixup found. */ | 194 | if (eeprom_fixups[i].name == NULL) { /* No fixup found. */ |
191 | dev_info(&dev->dev, | 195 | pr_info("%s: Old style EEPROM with no media selection information\n", |
192 | "Old style EEPROM with no media selection information\n"); | 196 | dev->name); |
193 | return; | 197 | return; |
194 | } | 198 | } |
195 | } | 199 | } |
@@ -217,8 +221,8 @@ subsequent_board: | |||
217 | /* there is no phy information, don't even try to build mtable */ | 221 | /* there is no phy information, don't even try to build mtable */ |
218 | if (count == 0) { | 222 | if (count == 0) { |
219 | if (tulip_debug > 0) | 223 | if (tulip_debug > 0) |
220 | dev_warn(&dev->dev, | 224 | pr_warning("%s: no phy info, aborting mtable build\n", |
221 | "no phy info, aborting mtable build\n"); | 225 | dev->name); |
222 | return; | 226 | return; |
223 | } | 227 | } |
224 | 228 | ||
@@ -234,8 +238,10 @@ subsequent_board: | |||
234 | mtable->has_nonmii = mtable->has_mii = mtable->has_reset = 0; | 238 | mtable->has_nonmii = mtable->has_mii = mtable->has_reset = 0; |
235 | mtable->csr15dir = mtable->csr15val = 0; | 239 | mtable->csr15dir = mtable->csr15val = 0; |
236 | 240 | ||
237 | dev_info(&dev->dev, "EEPROM default media type %s\n", | 241 | pr_info("%s: EEPROM default media type %s\n", |
238 | media & 0x0800 ? "Autosense" : medianame[media & MEDIA_MASK]); | 242 | dev->name, |
243 | media & 0x0800 ? "Autosense" | ||
244 | : medianame[media & MEDIA_MASK]); | ||
239 | for (i = 0; i < count; i++) { | 245 | for (i = 0; i < count; i++) { |
240 | struct medialeaf *leaf = &mtable->mleaf[i]; | 246 | struct medialeaf *leaf = &mtable->mleaf[i]; |
241 | 247 | ||
@@ -298,17 +304,17 @@ subsequent_board: | |||
298 | } | 304 | } |
299 | if (tulip_debug > 1 && leaf->media == 11) { | 305 | if (tulip_debug > 1 && leaf->media == 11) { |
300 | unsigned char *bp = leaf->leafdata; | 306 | unsigned char *bp = leaf->leafdata; |
301 | dev_info(&dev->dev, | 307 | pr_info("%s: MII interface PHY %d, setup/reset sequences %d/%d long, capabilities %02x %02x\n", |
302 | "MII interface PHY %d, setup/reset sequences %d/%d long, capabilities %02x %02x\n", | 308 | dev->name, |
303 | bp[0], bp[1], bp[2 + bp[1]*2], | 309 | bp[0], bp[1], bp[2 + bp[1]*2], |
304 | bp[5 + bp[2 + bp[1]*2]*2], | 310 | bp[5 + bp[2 + bp[1]*2]*2], |
305 | bp[4 + bp[2 + bp[1]*2]*2]); | 311 | bp[4 + bp[2 + bp[1]*2]*2]); |
306 | } | 312 | } |
307 | dev_info(&dev->dev, | 313 | pr_info("%s: Index #%d - Media %s (#%d) described by a %s (%d) block\n", |
308 | "Index #%d - Media %s (#%d) described by a %s (%d) block\n", | 314 | dev->name, |
309 | i, medianame[leaf->media & 15], leaf->media, | 315 | i, medianame[leaf->media & 15], leaf->media, |
310 | leaf->type < ARRAY_SIZE(block_name) ? block_name[leaf->type] : "<unknown>", | 316 | leaf->type < ARRAY_SIZE(block_name) ? block_name[leaf->type] : "<unknown>", |
311 | leaf->type); | 317 | leaf->type); |
312 | } | 318 | } |
313 | if (new_advertise) | 319 | if (new_advertise) |
314 | tp->sym_advertise = new_advertise; | 320 | tp->sym_advertise = new_advertise; |