Can't assign NIC [Aquantia Corp. AQC107]



  • 2.4.5-RELEASE-p1 (amd64)
    built on Tue Jun 02 17:51:17 EDT 2020
    FreeBSD 11.3-STABLE

    Been using pfsense for years now, with the two onboard 1G NICs that are on my motherboard.
    I now want to add this new NIC to handle my LAN traffic while I use the newly freed up NIC to handle IPCamera traffic.

    pciconf -lvb:

    none2@pci0:1:0:0:	class=0x020000 card=0x872e1043 chip=0xd1071d6a rev=0x02 hdr=0x00
        vendor     = 'Aquantia Corp.'
        device     = 'AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]'
        class      = network
        subclass   = ethernet
        bar   [10] = type Memory, range 64, base 0xf7840000, size 65536, enabled
        bar   [18] = type Memory, range 64, base 0xf7850000, size 4096, enabled
        bar   [20] = type Memory, range 64, base 0xf7400000, size 4194304, enabled
    

    The NIC is detected, but I'm not sure why I can't assign it.

    EDIT:
    Maybe I need the driver? https://driverdownloads.aquantia.com/

    I don't see anything in the documentation regarding driver installation. Apparently I need to build pfsense from scratch?



  • @Roy360 said in Can't assign NIC [Aquantia Corp. AQC107]:

    Apparently I need to build pfsense from scratch?

    Noop.
    The driver is loaded by the kernel, FreeBSD 11.3 so a "FreeBSD 11.3 system' with compile and link tools will do.

    It's probably a lot easier to check if a NIC is supported before you get your hands on one.


  • Netgate Administrator

    Also see:
    https://github.com/pfsense/FreeBSD-ports/tree/devel/net/aquantia-atlantic-kmod

    and:
    https://github.com/Aquantia/aqtion-freebsd

    But we do not build that port. It's labelled 'developer preview' which should tell you something. As far as I know it's untested in pfSense.

    Steve



  • @Gertjan
    I normally just buy Intel NICs, but this NIC came bundled with my ASUS motherboard.

    I upgraded to 2.5 development in hopes it might have the driver included, but it didn't, and I couldn't find any detailed steps on how to add drivers so I'm just going to buy a chinese Intel NIC off eBay.

    In 1-2 months I'll have my security cameras up and running


  • LAYER 8 Rebel Alliance

    Seems like the driver can't get compiled against FreeBSD 11.3
    FreeBSD 12.1 is working fine, but I'm not able to upload files to the forum anymore. ๐Ÿ˜‘ Should work with pfSense 2.5.x at least.

    -Rico


  • LAYER 8 Rebel Alliance

    Here you go: https://fil.email/i9PmzTNH
    Should work for 2.5.0 and could work for 2.4.5 (don't think so).

    Disclaimer:
    Use at your own risk, take a backup first. I'd not put that in business production, should be fine for home use or playing around in a lab environment.

    -Rico


  • LAYER 8 Rebel Alliance

    How the Installation should work (dry run / not tested, I don't own this NIC):
    Unzip the file and place if_atlantic.ko into the /boot/kernel/ folder.
    Change permissions via console or SSH: chmod 555 /boot/kernel/if_atlantic.ko
    Edit /boot/loader.conf.local and add to the end of the file: if_atlantic_load="YES"
    Reboot pfSense and see what happens. ;-)

    -Rico


  • Netgate Administrator

    Just to test it you can also run at the CLI: kldload if_atlantic.ko

    That way if is fails and causes a panic it will still reboot again without loading it.

    Steve


  • LAYER 8 Rebel Alliance

    Thanks for this hint Steve. ๐Ÿ‘

    -Rico


  • Netgate Administrator

    Guess how I'm aware of that trap and what a PITA it is escaping it. ๐Ÿ˜‰



  • @Rico said in Can't assign NIC [Aquantia Corp. AQC107]:

    Here you go: https://fil.email/i9PmzTNH
    Should work for 2.5.0 and could work for 2.4.5 (don't think so).

    Disclaimer:
    Use at your own risk, take a backup first. I'd not put that in business production, should be fine for home use or playing around in a lab environment.

    -Rico

    @stephenw10 said in Can't assign NIC [Aquantia Corp. AQC107]:

    Just to test it you can also run at the CLI: kldload if_atlantic.ko

    That way if is fails and causes a panic it will still reboot again without loading it.

    Steve

    Works like a charm and only took a few seconds....
    Thanks guys!

    Going to spend a few days testing before I make the change permanent.


  • LAYER 8 Rebel Alliance

    Glad you have it working.
    Did you also try with 2.4.5-p1 ?

    -Rico


  • LAYER 8 Rebel Alliance

    @stephenw10
    As THE hardware expert, any idea why make goes downhill in 11.3? ;-)

    root@freebsd11:~/freebsd-drv-v0.0.2 # make
    machine -> /usr/src/sys/amd64/include
    x86 -> /usr/src/sys/x86/include
    awk -f /usr/src/sys/tools/makeobjops.awk /usr/src/sys/kern/device_if.m -h
    awk -f /usr/src/sys/tools/makeobjops.awk /usr/src/sys/kern/bus_if.m -h
    awk -f /usr/src/sys/tools/makeobjops.awk /usr/src/sys/dev/pci/pci_if.m -h
    awk -f /usr/src/sys/tools/makeobjops.awk /usr/src/sys/net/ifdi_if.m -h
    :> opt_rss.h
    Warning: Object directory not changed from original /root/freebsd-drv-v0.0.2
    cc -O2 -pipe -DIFLIB -ferror-limit=1  -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc  -I/usr/include -I. -I/usr/src/sys -fno-common  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer   -MD  -MF.depend.aq_main.o -MTaq_main.o -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -Wno-error-address-of-packed-member  -mno-aes -mno-avx  -std=iso9899:1999 -c aq_main.c -o aq_main.o
    aq_main.c:260:3: error: field designator 'isc_tso_maxsize' does not refer to any field in type 'struct if_shared_ctx'; did you mean 'isc_tx_maxsize'?
            .isc_tso_maxsize = HW_ATL_B0_TSO_SIZE,
             ^~~~~~~~~~~~~~~
             isc_tx_maxsize
    /usr/include/net/iflib.h:236:13: note: 'isc_tx_maxsize' declared here
            bus_size_t isc_tx_maxsize;
                       ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    2 errors generated.
    *** Error code 1
    
    Stop.
    make: stopped in /root/freebsd-drv-v0.0.2
    root@freebsd11:~/freebsd-drv-v0.0.2 #
    

    Also tried 11.2 with the same Error. 12.1 is just fine.
    I don't have any personal use for this driver, but like to understand what's going wrong there and maybe can give some more help for Roy. :-)

    -Rico


  • Netgate Administrator

    Ha, I think you've promoted me. ๐Ÿ˜‰

    I would guess it's because that is a driver built on iflib and some part of that is missing. A number of drivers are using that now but only in FreeBSD 12 AFAIK. But that is a guess, my coding skilz are.... not great!


  • LAYER 8 Rebel Alliance

    I was able to build driver version 0.0.5 for FreeBSD 11.3 (pfSense 2.4.5-p1):
    https://fil.email/Y9QJQFqv

    And here is 0.0.5 for FreeBSD 12.1 (pfSense 2.5.0):
    https://fil.email/RdjhicBA

    -Rico


Log in to reply