• Stefan Assmann's avatar
    igb: add delay to allow igb loopback test to succeed on 8086:10c9 · 119b0e03
    Stefan Assmann authored
    Some 8086:10c9 NICs have a problem completing the ethtool loopback test.
    The result looks like this:
    
    ethtool -t eth1
    The test result is FAIL
    The test extra info:
    Register test  (offline)         0
    Eeprom test    (offline)         0
    Interrupt test (offline)         0
    Loopback test  (offline)         13
    Link test   (on/offline)         0
    
    A bisect clearly points to commit a95a0744.
    However that seems to only trigger the bug. While adding some printk the
    problem disappeared, so this might be a timing issue. After some trial and
    error I discovered that adding a small delay just before igb_write_phy_reg()
    in igb_integrated_phy_loopback() allows the loopback test to succeed.
    I was unable to figure out the root cause so far but I expect it to be
    somewhere in the following executing path
    igb_integrated_phy_loopback
    ->igb_write_phy_reg_igp
      ->igb_write_phy_reg_mdic
        ->igb_acquire_phy_82575
          ->igb_acquire_swfw_sync_82575
    
    The problem could only be observed on 8086:10c9 NICs so far and not all
    of them show the behaviour. I did not restrict the workaround to this
    type of NIC as it should do no harm to other igb NICs.
    
    With the patch below the loopback test succeeded 500 times in a row
    using a NIC that would otherwise fail.
    Signed-off-by: default avatarStefan Assmann <sassmann@kpanic.de>
    Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: default avatarPeter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
    119b0e03
igb_ethtool.c 69.3 KB