OPNsense Forum

Archive => 18.7 Legacy Series => Topic started by: pierrebl on December 12, 2018, 09:06:49 pm

Title: Traverse Viking ADSL2+ PCI Modem
Post by: pierrebl on December 12, 2018, 09:06:49 pm

As it's my first post, i'd like to say thanks to everyone who have been working on this! I've been using OPNSense for a few years now and I'm very happy with it.

I'm running OPNSense on a Soekris net5501-70 with a Traverse Viking ADSL2+ PCI Modem card since 2011 (well, started with m0n0wall at the time of course ;). It has always been working pretty well out of the box as far as I remember, never had to check or compile anything. But with newer versions of OPNSense, I have an issue with the PCI card.

For info, it's an ADSL2+ PCI Modem with a 8139C+ chipset from Realtek. It's shown as an ethernet card and use the "re" driver included in FreeBSD.

When I upgrade to 17.7, the card is not recorgnized anymore. I knew it was a driver issue because when i copy from /boot/kernel.old/ the old driver file if_re.ko to /boot/kernel/, the card is recognized again. A look at the driver commits confirms it (https://github.com/opnsense/src/commits/stable/18.7/sys/dev/re)

I'd like to know if it's possible to rollback to a specific driver or if i should recompile my own kernel for my Soekris.
I tried to follow some help here related to Realtek drivers: https://forum.opnsense.org/index.php?topic=9644.msg43933#msg43933

Code: [Select]
# opnsense-update -kr 18.7.2-re
Fetching kernel-18.7.2-re-i386.txz: .. failed

But as you can see, it failed.

Here are a few commands output:

Code: [Select]
# uname -a
FreeBSD io.lan 11.1-RELEASE-p17 FreeBSD 11.1-RELEASE-p17  bf74bfa8a63(stable/18.7)  i386

Code: [Select]
# pciconf -lv
none1@pci0:0:14:0:      class=0x020000 card=0x813910ec chip=0x813910ec rev=0x20 hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL-8100/8101L/8139 PCI Fast Ethernet Adapter'
    class      = network
    subclass   = ethernet

Remark: it strangely shows as "none1" ; i can confirm you this interface doesn't exist

Code: [Select]
# dmesg | grep "device 14.0"
pci0: <network, ethernet> at device 14.0 (no driver attached)

Code: [Select]
# kldstat | grep if_re
*no output*
# kldload if_re
kldload: can't load if_re: module already loaded or in kernel

Question: does it mean that the driver is loaded but not in use?

Code: [Select]
# ls -l /boot/kernel/if_re.ko
-r-xr-xr-x  1 root  wheel  520440 Dec  5 13:37 /boot/kernel/if_re.ko
Title: Re: Traverse Viking ADSL2+ PCI Modem
Post by: franco on December 13, 2018, 04:08:58 pm
It looks like the Realtek vendor driver does not support some older cards that they simply expect to be EoL.

You'd have to take the whole sys/dev/re directly and use the one from FreeBSD 11.1 and build a full kernel and replace it on your box. I'm not sure it's worth doing this over and over, but you can lock the kernel and only deal with this once on major updates every 6 months.

Title: Re: Traverse Viking ADSL2+ PCI Modem
Post by: ufocia on July 06, 2019, 08:15:34 am
It appears that an assumption was made that the 8139 would be wholly supported by the rl driver. However, the rl driver leaves revid == 0x20 devices to the re driver, so such 8139C+ cards fall through the crack. I wonder if a quick and dirty change to the re driver would enable the 8139 support in the re driver. A cleaner change would need to select only 0x20 devices.