summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorAkeem G. Abodunrin <akeem.g.abodunrin@intel.com>2011-09-02 23:11:19 (GMT)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2011-10-06 10:33:03 (GMT)
commit76d06521f514e4e7e6bfb848ef0e3f8eb421f46d (patch)
tree534e8f9882fa49e28d2d05b4e3c95487606e03db /drivers/net
parent6b8456c0199c4dd35bb7a04ff299ab925699e390 (diff)
downloadlinux-fsl-qoriq-76d06521f514e4e7e6bfb848ef0e3f8eb421f46d.tar.xz
igb: Code to prevent overwriting SFP I2C
This patch fixes "overwrite" problem. without this fix, SFP I2C EEPROM data, which is located at A0 can be overwritten by the phy write function. Signed-off-by: "Akeem G. Abodunrin" <akeem.g.abodunrin@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_phy.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.c b/drivers/net/ethernet/intel/igb/e1000_phy.c
index e662554..7edf31e 100644
--- a/drivers/net/ethernet/intel/igb/e1000_phy.c
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.c
@@ -306,6 +306,12 @@ s32 igb_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data)
u32 i, i2ccmd = 0;
u16 phy_data_swapped;
+ /* Prevent overwritting SFP I2C EEPROM which is at A0 address.*/
+ if ((hw->phy.addr == 0) || (hw->phy.addr > 7)) {
+ hw_dbg("PHY I2C Address %d is out of range.\n",
+ hw->phy.addr);
+ return -E1000_ERR_CONFIG;
+ }
/* Swap the data bytes for the I2C interface */
phy_data_swapped = ((data >> 8) & 0x00FF) | ((data << 8) & 0xFF00);