• Emil Tantilov's avatar
    ixgbe: fix semaphore lock for I2C read/writes on 82598 · 3dcc2f41
    Emil Tantilov authored
    ixgbe_read/write_i2c_phy_82598() does not hold the SWFW_SYNC
    semaphore for the entire function. Instead the lock is held only
    during the phy.ops.read/write_reg operations. As result when the
    function is being called simultaneously the I2C read/writes can
    be corrupted.
    
    The following patch introduces the SWFW_SYNC semaphore for the
    entire ixgbe_read/write_i2c_phy_82598() function. To accomplish
    this I had to create 2 separate functions:
    
    ixgbe_read_phy_reg_mdi()
    ixgbe_write_phy_reg_mdi()
    
    Those functions are identical to ixgbe_read/write_phy_reg_generic()
    sans the locking, and can be used in ixgbe_read/write_i2c_phy_82598()
    with the SWFW_SYNC semaphore being held.
    Signed-off-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
    Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    3dcc2f41
ixgbe_82598.c 39.2 KB