• Azat Khuzhin's avatar
    r8169: set RxConfig after tx/rx is enabled for RTL8169sb/8110sb devices · 05212ba8
    Azat Khuzhin authored
    I have two Ethernet adapters:
      r8169 0000:03:01.0 eth0: RTL8169sb/8110sb, 00:14:d1:14:2d:49, XID 10000000, IRQ 18
      r8169 0000:01:00.0 eth0: RTL8168e/8111e, 64:66:b3:11:14:5d, XID 2c200000, IRQ 30
    And after upgrading from linux 4.15 [1] to linux 4.18+ [2] RTL8169sb failed to
    receive any packets. tcpdump shows a lot of checksum mismatch.
    
      [1]: a0f79386
      [2]: 05193597 (4.19 merge window opened)
    
    I started bisecting and the found that [3] breaks it. According to [4]:
      "For 8110S, 8110SB, and 8110SC series, the initial value of RxConfig
      needs to be set after the tx/rx is enabled."
    So I moved rtl_init_rxcfg() after enabling tx/rs and now my adapter works
    (RTL8168e works too).
    
      [3]: 3559d81e
      [4]: e542a226 ("r8169: adjust the RxConfig
    settings.")
    
    Also drop "rx" from rtl_set_rx_tx_config_registers(), since it does nothing
    with it already.
    
    Fixes: 3559d81e ("r8169: simplify
    rtl_hw_start_8169")
    
    Cc: Heiner Kallweit <hkallweit1@gmail.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: netdev@vger.kernel.org
    Cc: Realtek linux nic maintainers <nic_swsd@realtek.com>
    Signed-off-by: default avatarAzat Khuzhin <a3at.mail@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    05212ba8
r8169.c 184 KB