diff options
author | Divy Le Ray <divy@chelsio.com> | 2008-11-09 00:55:28 -0800 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-11-11 03:50:36 -0500 |
commit | 9f64306b8a3949b74cb11d3b2f613e8a2af20fa6 (patch) | |
tree | 79073956dbb2577a796174ac0c4884b64c4c5cb4 | |
parent | 8c2f5fa51e1b22db53acf4f3918b6f590b4a35a1 (diff) | |
download | op-kernel-dev-9f64306b8a3949b74cb11d3b2f613e8a2af20fa6.zip op-kernel-dev-9f64306b8a3949b74cb11d3b2f613e8a2af20fa6.tar.gz |
cxgb3 - eeprom read fixes
Protect against invalid phy entries in the eeprom.
Extend eeprom access timeout.
Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r-- | drivers/net/cxgb3/t3_hw.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c index 968f64b..9a0898b 100644 --- a/drivers/net/cxgb3/t3_hw.c +++ b/drivers/net/cxgb3/t3_hw.c @@ -572,7 +572,7 @@ struct t3_vpd { u32 pad; /* for multiple-of-4 sizing and alignment */ }; -#define EEPROM_MAX_POLL 4 +#define EEPROM_MAX_POLL 40 #define EEPROM_STAT_ADDR 0x4000 #define VPD_BASE 0xc00 @@ -3690,6 +3690,12 @@ int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai, ; pti = &port_types[adapter->params.vpd.port_type[j]]; + if (!pti->phy_prep) { + CH_ALERT(adapter, "Invalid port type index %d\n", + adapter->params.vpd.port_type[j]); + return -EINVAL; + } + ret = pti->phy_prep(&p->phy, adapter, ai->phy_base_addr + j, ai->mdio_ops); if (ret) |