Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76d06521 authored by Akeem G. Abodunrin's avatar Akeem G. Abodunrin Committed by Jeff Kirsher
Browse files

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: default avatar"Akeem G. Abodunrin" <akeem.g.abodunrin@intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 6b8456c0
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -306,6 +306,12 @@ s32 igb_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data)
	u32 i, i2ccmd = 0;
	u32 i, i2ccmd = 0;
	u16 phy_data_swapped;
	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 */
	/* Swap the data bytes for the I2C interface */
	phy_data_swapped = ((data >> 8) & 0x00FF) | ((data << 8) & 0xFF00);
	phy_data_swapped = ((data >> 8) & 0x00FF) | ((data << 8) & 0xFF00);