re0@pci0:1:0:0: class=0x020000 card=0x81681849 chip=0x816810ec rev=0x11 hdr=0x00 vendor = 'Realtek Semiconductor Co., Ltd.' device = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' class = network subclass = ethernet
[2.4.2-RELEASE][root@pfSense.localdomain]/root: pciconf -v -l re0@pci0:3:0:0: class=0x020000 card=0xe0001458 chip=0x816810ec rev=0x0c hdr=0x00 vendor = 'Realtek Semiconductor Co., Ltd.' device = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' class = network subclass = ethernet re1@pci0:4:0:0: class=0x020000 card=0xe0001458 chip=0x816810ec rev=0x0c hdr=0x00 vendor = 'Realtek Semiconductor Co., Ltd.' device = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' class = network subclass = ethernet [2.4.2-RELEASE][root@pfSense.localdomain]/root:
<5>re0: link state changed to UP re0: watchdog timeout <5>re0: link state changed to DOWN <5>re0: link state changed to UP Waiting (max 60 seconds) for system process `vnlru' to stop... done Waiting (max 60 seconds) for system process `syncer' to stop... g_vfs_done():da0[WRITE(offset=14498955264, length=131072)]error = 6 g_vfs_done():da0[WRITE(offset=14499086336, length=131072)]error = 6 g_vfs_done():da0[WRITE(offset=14499250176, length=131072)]error = 6 g_vfs_done():da0[WRITE(offset=21167616, length=1024)]error = 6 panic: cannot reassign paging buffer cpuid = 0 KDB: stack backtrace: #0 0xffffffff806e5bb7 at kdb_backtrace+0x67 #1 0xffffffff8069fb26 at vpanic+0x186 #2 0xffffffff8069f993 at panic+0x43 #3 0xffffffff80762043 at reassignbuf+0x273 #4 0xffffffff8074336e at bdirty+0x2e #5 0xffffffff807421ca at brelse+0x10a #6 0xffffffff80744cc7 at bufdone+0x87 #7 0xffffffff805f26b2 at g_io_deliver+0x202 #8 0xffffffff805ef952 at g_disk_done+0x122 #9 0xffffffff802df933 at dadone+0x18a3
Just an update for this thread for FreeBSD 11.2-RELEASE in December 2018:
- At this time, RealTek have reorganized their site. It is no longer possible to create a download link directly to a software download. Instead, you navigate to the download you want, provide your e-mail address, and then receive an e-mail with a link in it. After following the link, my experience was that you get 120 seconds within which to successfully answer a CAPTCHA before which the link becomes permanently invalid (for me it was a simple mathematical question, and the CAPTCHA result was the mathematical answer, not literally the characters from the CAPTCHA -- it says "6 + 3", the CAPTCHA answer is "9"). I have no idea why their FreeBSD driver source code is protected by such a complicated mechanism, but in order to download the latest driver, at the time of writing, you should follow these steps:
- Browse to www.realtek.com.
- For me, the page loads in Traditional Chinese, but this can be changed to English with a drop-down in the top-right.
- Open the hamburger menu and select Downloads -> Computer Network ICs.
- Select any 8111 or 8168 item in the list and click "Software". For the FreeBSD driver, they all ultimately direct you to the identical download link.
- In the list of downloads, look for the section titled "Unix (Linux)", under which there is an item "FreeBSD 7.x and 8.0".
- Click "Download" to begin the dance described above.
- The latest driver as I write this is version 1.95, and despite the specific ancient FreeBSD versions listed on their site, it does not require patching to build and work as-is on 11.2-RELEASE. It actually contains sections separated off by #if OS_VER < VERSION(11,0), so the code is fully-aware of the latest kernel versions.
- The steps described earlier in this thread by Shadowcaster on October 11, 2016 work, omitting the patching referenced in step 6. Simply place the two files from the 1.95 / 0008 source distribution into the sys/dev/re directory and build.
- After rebooting to a kernel that treated if_re as a module, I was apparently able to switch from the old module to the new one without rebooting, simply using kldunload if_re followed by kldload if_re. The log output from the kldload command indeed lists the loaded version as being 1.95, whereas the bundled driver did not output a version at all.
- For anyone curious, there is rather a substantial difference between the bundled driver and that supplied by Realtek. For starters, the code is literally an order of magnitude larger. Both files are attributed to Bill Paul, with actually a newer year in the smaller file in the FreeBSD source distribution. The larger file from Realtek appears to contain functions that send microcode to the NIC controller chips. I am assuming the older attribution in Realtek's version is simply a result of the code having diverged from an earlier version and then been maintained and upgraded without changes to the attribution.
Seems like it's the same driver from 11.2.has anyone tried Realtek "re" driver on new FreeBSD 12.0, yet?
/usr/src/sys/dev/re/if_re.c:7507:9: error: no member named 'tqh_first' in 'struct ifmultihead'; did you mean 'cstqh_first'? TAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) ^ /usr/src/sys/sys/queue.h:725:15: note: expanded from macro 'TAILQ_FOREACH' for ((var) = TAILQ_FIRST((head)); \ ^ /usr/src/sys/sys/queue.h:722:36: note: expanded from macro 'TAILQ_FIRST' #define TAILQ_FIRST(head) ((head)->tqh_first) ^ /usr/src/sys/net/if_var.h:94:1: note: 'cstqh_first' declared here CK_STAILQ_HEAD(ifmultihead, ifmultiaddr); ^ /usr/src/sys/contrib/ck/include/ck_queue.h:232:15: note: expanded from macro 'CK_STAILQ_HEAD' struct type *cstqh_first;/* first element */ \ ^ /usr/src/sys/dev/re/if_re.c:7507:9: error: no member named 'tqe_next' in 'struct ifmultiaddr::(anonymous at /usr/src/sys/net/if_var.h:554:2)'; did you mean 'cstqe_next'? TAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) ^ /usr/src/sys/sys/queue.h:727:14: note: expanded from macro 'TAILQ_FOREACH' (var) = TAILQ_NEXT((var), field)) ^ /usr/src/sys/sys/queue.h:831:46: note: expanded from macro 'TAILQ_NEXT' #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) ^ /usr/src/sys/net/if_var.h:554:2: note: 'cstqe_next' declared here CK_STAILQ_ENTRY(ifmultiaddr) ifma_link; /* queue macro glue */ ^ /usr/src/sys/contrib/ck/include/ck_queue.h:241:15: note: expanded from macro 'CK_STAILQ_ENTRY' struct type *cstqe_next; /* next element */ \
This can be repaired by invokingAlso, FYI: The RealTek 1.95 driver fails to build on 12.0-RELEASE:
/usr/src/sys/dev/re/if_re.c:7507:9: error: no member named 'tqh_first' in 'struct ifmultihead'; did you mean 'cstqh_first'? TAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) ^
sed -i -e 's/TAILQ_FOREACH/CK_STAILQ_FOREACH/g' if_re.c.