lkml.org 
[lkml]   [2017]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 029/125] igb: Explicitly select page 0 at initialization
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Matwey V Kornilov <matwey@sai.msu.ru>

    commit 440aeca4b9858248d8f16d724d9fa87a4f65fa33 upstream.

    The functions igb_read_phy_reg_gs40g/igb_write_phy_reg_gs40g (which were
    removed in 2a3cdea) explicitly selected the required page at every phy_reg
    access. Currently, igb_get_phy_id_82575 relays on the fact that page 0 is
    already selected. The assumption is not fulfilled for my Lex 3I380CW
    motherboard with integrated dual i211 based gigabit ethernet. This leads to igb
    initialization failure and network interfaces are not working:

    igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k
    igb: Copyright (c) 2007-2014 Intel Corporation.
    igb: probe of 0000:01:00.0 failed with error -2
    igb: probe of 0000:02:00.0 failed with error -2

    In order to fix it, we explicitly select page 0 before first access to phy
    registers.

    See also: https://bugzilla.suse.com/show_bug.cgi?id=1009911
    See also: http://www.lex.com.tw/products/pdf/3I380A&3I380CW.pdf

    Fixes: 2a3cdea ("igb: Remove GS40G specific defines/functions")
    Signed-off-by: Matwey V Kornilov <matwey@sai.msu.ru>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/ethernet/intel/igb/e1000_82575.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/drivers/net/ethernet/intel/igb/e1000_82575.c
    +++ b/drivers/net/ethernet/intel/igb/e1000_82575.c
    @@ -246,6 +246,7 @@ static s32 igb_init_phy_params_82575(str
    E1000_STATUS_FUNC_SHIFT;

    /* Set phy->phy_addr and phy->id. */
    + igb_write_phy_reg_82580(hw, I347AT4_PAGE_SELECT, 0);
    ret_val = igb_get_phy_id_82575(hw);
    if (ret_val)
    return ret_val;

    \
     
     \ /
      Last update: 2017-07-25 22:33    [W:4.314 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site