===================================================
realtek-dropping-packets-on-linux-ubuntu-and-fedora
===================================================


realtek-dropping-packets-on-linux-ubuntu-and-fedora
===================================================

Realtek NIC driver r8169 dropping packets on linux ubuntu and fedora
====================================================================

Many motherboards nowadays have integrated gigabit ethernet that use the
Realtek NIC chipset.

The Realtek r8168B network card does not work out of the box in Redhat,
Centos, Fedora, or Ubuntu: instead of loading the r8168 driver, modprobe
loads the r8169 driver, which is broken as can be seen with ifconfig
which shows large amounts of dropped packets.

One solution found by Barry Mavin is to remove the r8169 driver and
install the latest r8168 driver.

Steps to install Realtek r8168 driver
-------------------------------------

-  Download the R8168B linux driver:

   .. code-block:: bash

   wget /attachment/r8168-8.023.00.tar.bz2 tar vjxf
   r8168-8.023.00.tar.bz2

-  Check whether the built-in driver, r8169.ko (or r8169.o for kernel
   2.4.x), is installed:

   .. code-block:: bash

   lsmod \| grep r8169

-  r8169 seems installed if the lsmod command returns output, so remove
   r8169 with:

   .. code-block:: bash

   sudo rmmod r8169

-  install the Realtec r8168b nic driver:

   .. code-block:: bash

   cd r8168-8.023.00 sudo ./autorun.sh

-  prevent the r8169 driver from loading again:

   .. code-block:: bash

   echo “blacklist r8169” >> /etc/modprobe.d/blacklist.conf

-  you may now verify that r8168b has been installed and loaded by
   running:

   .. code-block:: bash

   lsmod \| grep r8168

**The dropped packets problem should appear fixed!**

Some people notice r8169 driver returning after reboots. To prevent this
you might need to clean the cache using the following command:

.. code-block:: bash

update-initramfs -u

**You should donate to foxhop.net**
``here <https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7HQMTG3JFPBNN>``\ \_

scottman1987 — Sep 05, 2011 12:23 pm
------------------------------------

Thanks - Exactly what I needed!

scottman1987 — Sep 07, 2011 11:15 am
------------------------------------

Sorry - I spoke too soon. This worked the first time that I tried it.
However, the next day when I booted up the machine again, r8169 was
again loaded. I double checked the blacklist line in blacklist.conf, and
verified that it was correctly inserted into the file. I found the
location of r8169.ko and removed it from the file system. No luck - each
time ubuntu boots, r8169 is right back there, like a bad penny.

Here is the pertinent portion of the blacklist.conf file: # don’t let
the realtek r8169 driver load blacklist r8169

Output of the lsmod command (portion): hid 91020 1 usbhid r8169 48022 0
xhci_hcd 77643 0

Not to mention… It seems that running the autorun.sh command before
attempting to use the network will cause the system to hang hard, so
that I have to manually reset it.

Hers is the folder contents for the kennel drivers
scottman@CWK04:/lib/modules/2.6.38-11-generic/kernel/drivers/net$ ls r\*
r8168.ko rrunner.ko

Any thoughts? Am I missing something? Where is the system getting the
r8169 driver from?

foxhop — Sep 07, 2011 05:49 pm
------------------------------

I have not experienced the problem you discribed.

**Update:** I must reinstall the driver each time ubuntu updates the
kernel.

scottman1987 — Sep 09, 2011 11:57 am
------------------------------------

I’m running 64-bit ubuntu (release 11.04). Would this possibly have
anything to do with the problems I am having?

foxhop — Sep 09, 2011 06:17 pm
------------------------------

I’m running the same operating system as you. (Ubuntu 11.04)

It sounds like the “Blacklist” isn’t working. Maybe do some research
about that.

tonyyoungblood — Sep 11, 2011 08:06 pm
--------------------------------------

I am experiencing the exact same problem as Scottman1987 on Mythbuntu
11.04 64 bit. Even after blacklisting, r8169 reloads upon startup and
causes poor or no network connection. I also experience system lockups
while running the above instructions.

tonyyoungblood — Sep 11, 2011 08:12 pm
--------------------------------------

I found a fix.

You have to update driver cache after blacklisting.

Code:

update-initramfs -u

From http://ubuntuforums.org/showthread.php?t=1767781

foxhop — Sep 12, 2011 01:37 pm
------------------------------

@scottman1987

Could you please attempt to try tonyyoungblood’s drive cache work
around?

.. code-block:: bash

update-initramfs -u

scottman1987 — Sep 13, 2011 04:02 pm
------------------------------------

Yes - I tried tonyyoungblood’s drive cache workaround, and it appears to
have solved my issue.

I had to run the autorun.sh file first (which I always had to do,
because of the fact that it was not retaining the driver), and after
that command was successful, I ran the update-initramfs -u command
(specifically sudo update-initramfs -u), restarted the machine, opened a
terminal session, ran lsmod, and got the r8168 driver in the list
instead of r8169. From what I can tell with initial testing of large
downloads and going to Internet web sites, it is functioning well.

scottman1987 — Sep 13, 2011 04:03 pm
------------------------------------

And, I should also say, thatnk you very much!

foxhop — Sep 14, 2011 03:32 pm
------------------------------

Welcome, glad I could help!

I should really build functionality to allow users to edit their
comments…

foxhop — Oct 15, 2011 06:33 am
------------------------------

This driver supports linux 3.0 however we need to make a change to the
src/Makefile

.. code-block:: Makefile

# comment out original line #KEXT := $(shell echo $(KVER) \| sed -ne
‘s/^2.[567]..\ */k/p’)o # replace with this line KEXT := $(shell echo
$(KVER) \| sed -ne ’s/ [1]_.[0123456789]..*/k/p’)o

Adjust the sed regex to include linux version 3.x

This correction was found in the code.google.com realtek issue tracker

dreamkatana — Nov 27, 2011 12:35 pm
-----------------------------------

Thank’s everybody, that worked for me. It really helped me, IF you need
a paypal donation just ask me.

foxhop — Nov 27, 2011 03:12 pm
------------------------------

No problem @dreamkatana,

I sent you an email with my contact information. Thanks for the kind
comment!

petervg — Dec 11, 2011 10:28 pm
-------------------------------

Thanks for detailed directions dude. Was experiencing same problem with
Ubuntu 11.10 on a Dell Vostro which uses the Realtek network card

FYI for others, use the following command to find out what network card
your machine is using:

sudo lshw -class network

max — Jan 16, 2012 06:56 pm
---------------------------

I have a system with both this:

.. code-block:: bash

::

   04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)

and this:

.. code-block:: bash

::

   06:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)

… so I couldn’t blacklist the r8169 driver without disabling the second
LAN port. However, I found that I could specify which driver to load for
which device by editing /etc/udev/rules.d/70-persistent-net.rules like
so (MAC addresses redacted):

.. code-block:: bash

::

   # PCI device 0x10ec:0x8168 (r8168)
   SUBSYSTEM=="net", ACTION=="add", DRIVERS=="r8168", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

   # PCI device 0x10ec:0x8169 (r8169)
   SUBSYSTEM=="net", ACTION=="add", DRIVERS=="r8169", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

This seems to load both the r8168 driver and the r1869 driver and use
the correct one for each, with no need for blacklisting.

(I also needed to edit the driver Makefile for linux 3.0 as per comment
above.)

mnek84 — Mar 25, 2012 11:46 am
------------------------------

Thank you! this post save my life!!!

lagasuarus — Apr 28, 2013 04:50 pm
----------------------------------

please tell me what I am doing wrong

i do steps 1 and 4

and these are my outputs

–2013-04-28 17:48:21– /attachment/r8168-8.023.00.tar.bz2 Resolving
www.foxhop.net (www.foxhop.net)… 76.231.160.38 Connecting to
www.foxhop.net (www.foxhop.net)|76.231.160.38\|:80… connected. HTTP
request sent, awaiting response… 200 OK Length: 59857 (58K)
[application/x-tar] Saving to: \`r8168-8.023.00.tar.bz2.3’

r8168-8.023.00/ r8168-8.023.00/Makefile r8168-8.023.00/src/
r8168-8.023.00/src/Makefile r8168-8.023.00/src/r8168_asf.h
r8168-8.023.00/src/rtl_eeprom.c r8168-8.023.00/src/r8168.h
r8168-8.023.00/src/r8168_n.c r8168-8.023.00/src/r8168_asf.c
r8168-8.023.00/src/rtl_eeprom.h r8168-8.023.00/src/rtltool.h
r8168-8.023.00/src/rtltool.c r8168-8.023.00/src/Makefile_linux24x
r8168-8.023.00/README r8168-8.023.00/autorun.sh

Check old driver and unload it. Build the module and install
/home/adam/r8168-8.023.00/src/r8168_n.c: In function
‘rtl8168_rx_vlan_skb’: /home/adam/r8168-8.023.00/src/r8168_n.c:1702:3:
error: implicit declaration of function ‘vlan_hwaccel_receive_skb’
[-Werror=implicit-function-declaration]
/home/adam/r8168-8.023.00/src/r8168_n.c: At top level:
/home/adam/r8168-8.023.00/src/r8168_n.c:2076:2: error: unknown field
‘get_rx_csum’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2076:2: warning: initialization
from incompatible pointer type [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2076:2: warning: (near
initialization for ‘rtl8168_ethtool_ops.nway_reset’) [enabled by
default] /home/adam/r8168-8.023.00/src/r8168_n.c:2077:2: error: unknown
field ‘set_rx_csum’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2077:2: warning: initialization
from incompatible pointer type [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2077:2: warning: (near
initialization for ‘rtl8168_ethtool_ops.get_link’) [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2078:2: error: unknown field
‘get_tx_csum’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2078:2: warning: initialization
from incompatible pointer type [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2078:2: warning: (near
initialization for ‘rtl8168_ethtool_ops.get_eeprom_len’) [enabled by
default] /home/adam/r8168-8.023.00/src/r8168_n.c:2079:2: error: unknown
field ‘set_tx_csum’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2079:2: warning: initialization
from incompatible pointer type [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2079:2: warning: (near
initialization for ‘rtl8168_ethtool_ops.get_eeprom’) [enabled by
default] /home/adam/r8168-8.023.00/src/r8168_n.c:2080:2: error: unknown
field ‘get_sg’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2080:2: warning: initialization
from incompatible pointer type [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2080:2: warning: (near
initialization for ‘rtl8168_ethtool_ops.set_eeprom’) [enabled by
default] /home/adam/r8168-8.023.00/src/r8168_n.c:2081:2: error: unknown
field ‘set_sg’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2081:2: warning: initialization
from incompatible pointer type [enabled by default]
/home/adam/r8168-8.023.00/src/r8168_n.c:2081:2: warning: (near
initialization for ‘rtl8168_ethtool_ops.get_coalesce’) [enabled by
default] /home/adam/r8168-8.023.00/src/r8168_n.c:2083:2: error: unknown
field ‘get_tso’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2083:14: error:
‘ethtool_op_get_tso’ undeclared here (not in a function)
/home/adam/r8168-8.023.00/src/r8168_n.c:2084:2: error: unknown field
‘set_tso’ specified in initializer
/home/adam/r8168-8.023.00/src/r8168_n.c:2084:14: error:
‘ethtool_op_set_tso’ undeclared here (not in a function)
/home/adam/r8168-8.023.00/src/r8168_n.c: In function ‘rtl8168_netpoll’:
/home/adam/r8168-8.023.00/src/r8168_n.c:9610:2: error: implicit
declaration of function ‘disable_irq’
[-Werror=implicit-function-declaration]
/home/adam/r8168-8.023.00/src/r8168_n.c:9616:2: error: implicit
declaration of function ‘enable_irq’
[-Werror=implicit-function-declaration]
/home/adam/r8168-8.023.00/src/r8168_n.c: In function ‘rtl8168_init_one’:
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘open’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘hard_start_xmit’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘get_stats’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘stop’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘tx_timeout’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘set_multicast_list’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘change_mtu’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘set_mac_address’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘do_ioctl’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘poll_controller’
/home/adam/r8168-8.023.00/src/r8168_n.c:10858:2: error: ‘struct
net_device’ has no member named ‘vlan_rx_register’
/home/adam/r8168-8.023.00/src/r8168_n.c: In function ‘rtl8168_open’:
/home/adam/r8168-8.023.00/src/r8168_n.c:11020:2: error: implicit
declaration of function ‘request_irq’
[-Werror=implicit-function-declaration]
/home/adam/r8168-8.023.00/src/r8168_n.c:11020:91: error: ‘IRQF_SHARED’
undeclared (first use in this function)
/home/adam/r8168-8.023.00/src/r8168_n.c:11020:91: note: each undeclared
identifier is reported only once for each function it appears in
/home/adam/r8168-8.023.00/src/r8168_n.c: In function
‘rtl8168_xmit_frags’: /home/adam/r8168-8.023.00/src/r8168_n.c:12284:3:
error: incompatible type for argument 1 of ‘lowmem_page_address’ In file
included from
/usr/src/linux-headers-3.5.0-17-generic/arch/x86/include/asm/pci.h:4:0,
from include/linux/pci.h:1342, from
/home/adam/r8168-8.023.00/src/r8168_n.c:41: include/linux/mm.h:739:30:
note: expected ’const struct page *’ but argument is of type ‘struct ’
/home/adam/r8168-8.023.00/src/r8168_n.c: In function ‘rtl8168_close’:
/home/adam/r8168-8.023.00/src/r8168_n.c:12934:3: error: implicit
declaration of function ‘free_irq’
[-Werror=implicit-function-declaration] cc1: some warnings being treated
as errors make[3]:* \*\* [/home/adam/r8168-8.023.00/src/r8168_n.o] Error
1 make[2]: \**\* [*module*/home/adam/r8168-8.023.00/src] Error 2
make[1]: \**\* [modules] Error 2 make: \**\* [modules] Error 2

foxhop — May 02, 2013 05:50 pm
------------------------------

@lagasuarus I don’t believe I need this work around any more for Ubuntu
12.10+ What operation system are you running?

.. [1]
   23
