Intel ATOM D945GCLF onboard LAN driver-card problem



  • I recently purchased Intel ATOM D945GCLF mini ITX board (excelent router in my opininon). I put another PIC 10/100 MB Level one network card. When I try to install Pfsense I detect only one card-PCI card is detected, onboard not. Onboard card is 10/100 Mbits/sec LAN subsystem using the Realtek* LAN adapter device.

    How to fix this problem? ???

    Any help is much apreciated.

    Regards



  • Is the card on the HCL?
    If not you wont have much luck getting it running.

    You could try to install the inofficial 1.2.1 version which is based on FreeBSD 6.3 and supports more hardware.
    http://cvs.pfsense.org/~sullrich/testing_images/6/FreeBSD_RELENG_6_3/pfSense_RELENG_1_2/

    But before you do that i'd check that you plugged the NIC correctly in.
    Also is it a 5V or 3.3V card?
    Does your mainboard provide the needed voltages?
    I had more than one NIC that didnt work because of this reason.



  • card that doesn"t work is onboard… the other one is working perfectly. I will try install inofficial version.

    Why Puppy linux detects this card?

    Any other ideas?

    Regards



  • pfSense is not Linux.

    Could you post the output of dmesg?



  • here is dmesg:

    BIOS-e820: 0000000000000000 - 000000000008f000 (usable)
    BIOS-e820: 000000000008f000 - 00000000000a0000 (reserved)
    BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
    BIOS-e820: 0000000000100000 - 000000003f533000 (usable)
    BIOS-e820: 000000003f533000 - 000000003f53b000 (reserved)
    BIOS-e820: 000000003f53b000 - 000000003f5cb000 (usable)
    BIOS-e820: 000000003f5cb000 - 000000003f5cf000 (reserved)
    BIOS-e820: 000000003f5cf000 - 000000003f661000 (usable)
    BIOS-e820: 000000003f661000 - 000000003f6f0000 (ACPI NVS)
    BIOS-e820: 000000003f6f0000 - 000000003f6f3000 (usable)
    BIOS-e820: 000000003f6f3000 - 000000003f6ff000 (ACPI data)
    BIOS-e820: 000000003f6ff000 - 000000003f700000 (usable)
    BIOS-e820: 000000003f700000 - 0000000040000000 (reserved)
    BIOS-e820: 00000000f0000000 - 0000000100000000 (reserved)
    119MB HIGHMEM available.
    896MB LOWMEM available.
    Entering add_active_range(0, 0, 259840) 0 entries of 256 used
    Zone PFN ranges:
      DMA            0 ->    4096
      Normal      4096 ->  229376
      HighMem    229376 ->  259840
    early_node_map[1] active PFN ranges
        0:        0 ->  259840
    On node 0 totalpages: 259840
      DMA zone: 32 pages used for memmap
      DMA zone: 0 pages reserved
      DMA zone: 4064 pages, LIFO batch:0
      Normal zone: 1760 pages used for memmap
      Normal zone: 223520 pages, LIFO batch:31
      HighMem zone: 238 pages used for memmap
      HighMem zone: 30226 pages, LIFO batch:7
    DMI 2.4 present.
    ACPI: RSDP 000FE020, 0014 (r0 INTEL )
    ACPI: RSDT 3F6FD038, 0038 (r1 INTEL  D945GLF        26      1000013)
    ACPI: FACP 3F6FC000, 0074 (r1 INTEL  D945GLF        26 MSFT  1000013)
    ACPI: DSDT 3F6F7000, 477C (r1 INTEL  D945GLF        26 MSFT  1000013)
    ACPI: FACS 3F6A3000, 0040
    ACPI: APIC 3F6F6000, 0078 (r1 INTEL  D945GLF        26 MSFT  1000013)
    ACPI: WDDT 3F6F5000, 0040 (r1 INTEL  D945GLF        26 MSFT  1000013)
    ACPI: MCFG 3F6F4000, 003C (r1 INTEL  D945GLF        26 MSFT  1000013)
    ACPI: ASF! 3F6F3000, 00A6 (r32 INTEL  D945GLF        26 MSFT  1000013)
    ACPI: PM-Timer IO Port: 0x408
    Allocating PCI resources starting at 50000000 (gap: 40000000:b0000000)
    Built 1 zonelists.  Total pages: 257810
    Kernel command line: initrd=initrd.gz pmedia=usbflash BOOT_IMAGE=vmlinuz
    Enabling fast FPU save and restore… done.
    Enabling unmasked SIMD FPU exception support... done.
    Initializing CPU#0
    PID hash table entries: 4096 (order: 12, 16384 bytes)
    Detected 1596.173 MHz processor.
    Console: colour VGA+ 80x25
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    Memory: 1024228k/1039360k available (2415k kernel code, 13804k reserved, 827k data, 200k init, 121188k highmem)
    virtual kernel memory layout:
        fixmap  : 0xfffea000 - 0xfffff000  (  84 kB)
        pkmap  : 0xff800000 - 0xffc00000  (4096 kB)
        vmalloc : 0xf8800000 - 0xff7fe000  ( 111 MB)
        lowmem  : 0xc0000000 - 0xf8000000  ( 896 MB)
          .init : 0xc042e000 - 0xc0460000  ( 200 kB)
          .data : 0xc035bc99 - 0xc042aaf4  ( 827 kB)
          .text : 0xc0100000 - 0xc035bc99  (2415 kB)
    Checking if this processor honours the WP bit even in supervisor mode... Ok.
    Calibrating delay using timer specific routine.. 3195.05 BogoMIPS (lpj=6390112)
    Mount-cache hash table entries: 512
    CPU: After generic identify, caps: bfe9fbff 20100000 00000000 00000000 0040e31d 00000000 00000001
    monitor/mwait feature present.
    using mwait in idle threads.
    CPU: L1 I cache: 32K, L1 D cache: 24K
    CPU: L2 cache: 512K
    CPU: After all inits, caps: bfe9fbff 20100000 00000000 00003940 0040e31d 00000000 00000001
    Intel machine check architecture supported.
    Intel machine check reporting enabled on CPU#0.
    Compat vDSO mapped to ffffe000.
    CPU: Intel(R) Atom(TM) CPU  230  @ 1.60GHz stepping 02
    Checking 'hlt' instruction... OK.
    ACPI: Core revision 20070126
    ACPI: setting ELCR to 0200 (from 0e00)
    NET: Registered protocol family 16
    EISA bus registered
    ACPI: bus type pci registered
    PCI: Found Intel Corporation 945G/GZ/P/PL Express Memory Controller Hub with MMCONFIG support.
    PCI: Using MMCONFIG
    Setting up standard PCI resources
    ACPI: Interpreter enabled
    ACPI: (supports S0 S1 S3 S4 S5)
    ACPI: Using PIC for interrupt routing
    ACPI: PCI Root Bridge [PCI0] (0000:00)
    PCI: Probing PCI hardware (bus 00)
    Boot video device is 0000:00:02.0
    PCI quirk: region 0400-047f claimed by ICH6 ACPI/GPIO/TCO
    PCI quirk: region 0500-053f claimed by ICH6 GPIO
    PCI: Transparent bridge - 0000:00:1e.0
    ACPI: PCI Interrupt Routing Table [_SB_.PCI0.PRT]
    ACPI: PCI Interrupt Routing Table [_SB
    .PCI0.P32_.PRT]
    ACPI: PCI Interrupt Routing Table [_SB
    .PCI0.PEX0.PRT]
    ACPI: PCI Interrupt Routing Table [_SB
    .PCI0.PEX2.PRT]
    ACPI: PCI Interrupt Routing Table [_SB
    .PCI0.PEX3._PRT]
    ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12)
    ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 11 12) *0, disabled.
    ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12)
    ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 *10 11 12)
    ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 11 12) *0, disabled.
    ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 *9 10 11 12)
    ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 9 10 11 12) *0, disabled.
    ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 *9 10 11 12)
    Linux Plug and Play Support v0.97 © Adam Belay
    pnp: PnP ACPI init
    pnp: PnP ACPI: found 10 devices
    PnPBIOS: Disabled by ACPI PNP
    SCSI subsystem initialized
    libata version 2.20 loaded.
    PCI: Using ACPI for IRQ routing
    PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
    pnp: 00:01: iomem range 0xf0000000-0xf3ffffff could not be reserved
    pnp: 00:01: iomem range 0xfed13000-0xfed13fff has been reserved
    pnp: 00:01: iomem range 0xfed14000-0xfed17fff has been reserved
    pnp: 00:01: iomem range 0xfed18000-0xfed18fff has been reserved
    pnp: 00:06: ioport range 0x500-0x53f has been reserved
    pnp: 00:06: ioport range 0x400-0x47f has been reserved
    pnp: 00:06: ioport range 0x680-0x6ff has been reserved
    Time: tsc clocksource has been installed.
    PCI: Ignore bogus resource 6 [0:0] of 0000:00:02.0
    PCI: Bridge: 0000:00:1c.0
      IO window: 2000-2fff
      MEM window: 50200000-502fffff
      PREFETCH window: 50000000-500fffff
    PCI: Bridge: 0000:00:1c.2
      IO window: disabled.
      MEM window: disabled.
      PREFETCH window: disabled.
    PCI: Bridge: 0000:00:1c.3
      IO window: disabled.
      MEM window: disabled.
      PREFETCH window: disabled.
    PCI: Bridge: 0000:00:1e.0
      IO window: 1000-1fff
      MEM window: 50100000-501fffff
      PREFETCH window: disabled.
    ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
    PCI: setting IRQ 11 as level-triggered
    ACPI: PCI Interrupt 0000:00:1c.0[A] -> Link [LNKB] -> GSI 11 (level, low) -> IRQ 11
    PCI: Setting latency timer of device 0000:00:1c.0 to 64
    ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
    ACPI: PCI Interrupt 0000:00:1c.2[C] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
    PCI: Setting latency timer of device 0000:00:1c.2 to 64
    ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
    PCI: setting IRQ 10 as level-triggered
    ACPI: PCI Interrupt 0000:00:1c.3[D] -> Link [LNKD] -> GSI 10 (level, low) -> IRQ 10
    PCI: Setting latency timer of device 0000:00:1c.3 to 64
    PCI: Setting latency timer of device 0000:00:1e.0 to 64
    NET: Registered protocol family 2
    IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
    TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
    TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
    TCP: Hash tables configured (established 131072 bind 65536)
    TCP reno registered
    checking if image is initramfs… it is
    Freeing initrd memory: 1237k freed
    highmem bounce pool size: 64 pages
    NTFS driver 2.1.28 [Flags: R/W].
    io scheduler noop registered
    io scheduler cfq registered (default)
    PCI: Setting latency timer of device 0000:00:1c.0 to 64
    assign_interrupt_mode Found MSI capability
    Allocate Port Service[0000:00:1c.0:pcie00]
    Allocate Port Service[0000:00:1c.0:pcie02]
    Allocate Port Service[0000:00:1c.0:pcie03]
    PCI: Setting latency timer of device 0000:00:1c.2 to 64
    assign_interrupt_mode Found MSI capability
    Allocate Port Service[0000:00:1c.2:pcie00]
    Allocate Port Service[0000:00:1c.2:pcie02]
    Allocate Port Service[0000:00:1c.2:pcie03]
    PCI: Setting latency timer of device 0000:00:1c.3 to 64
    assign_interrupt_mode Found MSI capability
    Allocate Port Service[0000:00:1c.3:pcie00]
    Allocate Port Service[0000:00:1c.3:pcie02]
    Allocate Port Service[0000:00:1c.3:pcie03]
    isapnp: Scanning for PnP cards…
    Switched to NOHz mode on CPU #0
    isapnp: No Plug & Play device found
    Real Time Clock Driver v1.12ac
    intel_rng: Firmware space is locked read-only. If you can't or
    intel_rng: don't want to disable this in firmware setup, and if
    intel_rng: you are certain that your system has a functional
    intel_rng: RNG, try using the 'no_fwh_detect' option.
    Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
    floppy0: no floppy controllers found
    RAMDISK driver initialized: 16 RAM disks of 13824K size 1024 blocksize
    loop: loaded (max 8 devices)
    Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
    ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
    ICH7: IDE controller at PCI slot 0000:00:1f.1
    ACPI: PCI Interrupt 0000:00:1f.1[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
    ICH7: chipset revision 1
    ICH7: not 100% native mode: will probe irqs later
        ide0: BM-DMA at 0x30b0-0x30b7, BIOS settings: hda:DMA, hdb:pio
    Probing IDE interface ide0…
    hda: InnoDisk Corp. - EDC4000 512MB, ATA DISK drive
    ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
    Probing IDE interface ide1...
    hda: max request size: 128KiB
    hda: 1023120 sectors (523 MB) w/0KiB Cache, CHS=1015/16/63, UDMA(66)
    hda: hda1
    ata_piix 0000:00:1f.2: version 2.10ac1
    ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
    ACPI: PCI Interrupt 0000:00:1f.2 **-> Link [LNKD] -> GSI 10 (level, low) -> IRQ 10
    PCI: Setting latency timer of device 0000:00:1f.2 to 64
    ata1: SATA max UDMA/133 cmd 0x000130c8 ctl 0x000130ee bmdma 0x000130a0 irq 10
    ata2: SATA max UDMA/133 cmd 0x000130c0 ctl 0x000130ea bmdma 0x000130a8 irq 10
    scsi0 : ata_piix
    ATA: abnormal status 0x7F on port 0x000130cf
    scsi1 : ata_piix
    ATA: abnormal status 0x7F on port 0x000130c7
    PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12
    serio: i8042 KBD port at 0x60,0x64 irq 1
    serio: i8042 AUX port at 0x60,0x64 irq 12
    mice: PS/2 mouse device common for all mice
    input: AT Translated Set 2 keyboard as /class/input/input0
    input: ImPS/2 Generic Wheel Mouse as /class/input/input1
    TCP cubic registered
    NET: Registered protocol family 1
    NET: Registered protocol family 17
    Using IPI Shortcut mode
    Freeing unused kernel memory: 200k freed
    squashfs: version 3.3 (2007/10/31) Phillip Lougher
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    USB Universal Host Controller Interface driver v3.0
    ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 9
    PCI: setting IRQ 9 as level-triggered
    ACPI: PCI Interrupt 0000:00:1d.0[A] -> Link [LNKH] -> GSI 9 (level, low) -> IRQ 9
    PCI: Setting latency timer of device 0000:00:1d.0 to 64
    uhci_hcd 0000:00:1d.0: UHCI Host Controller
    uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 1
    uhci_hcd 0000:00:1d.0: irq 9, io base 0x00003080
    usb usb1: configuration #1 chosen from 1 choice
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 2 ports detected
    ACPI: PCI Interrupt 0000:00:1d.1 **-> Link [LNKD] -> GSI 10 (level, low) -> IRQ 10
    PCI: Setting latency timer of device 0000:00:1d.1 to 64
    uhci_hcd 0000:00:1d.1: UHCI Host Controller
    uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 2
    uhci_hcd 0000:00:1d.1: irq 10, io base 0x00003060
    usb usb2: configuration #1 chosen from 1 choice
    hub 2-0:1.0: USB hub found
    hub 2-0:1.0: 2 ports detected
    ACPI: PCI Interrupt 0000:00:1d.2[C] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
    PCI: Setting latency timer of device 0000:00:1d.2 to 64
    uhci_hcd 0000:00:1d.2: UHCI Host Controller
    uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 3
    uhci_hcd 0000:00:1d.2: irq 11, io base 0x00003040
    usb usb3: configuration #1 chosen from 1 choice
    hub 3-0:1.0: USB hub found
    hub 3-0:1.0: 2 ports detected
    ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
    ACPI: PCI Interrupt 0000:00:1d.3[D] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11
    PCI: Setting latency timer of device 0000:00:1d.3 to 64
    uhci_hcd 0000:00:1d.3: UHCI Host Controller
    uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 4
    uhci_hcd 0000:00:1d.3: irq 11, io base 0x00003020
    usb usb4: configuration #1 chosen from 1 choice
    hub 4-0:1.0: USB hub found
    hub 4-0:1.0: 2 ports detected
    ACPI: PCI Interrupt 0000:00:1d.7[A] -> Link [LNKH] -> GSI 9 (level, low) -> IRQ 9
    PCI: Setting latency timer of device 0000:00:1d.7 to 64
    ehci_hcd 0000:00:1d.7: EHCI Host Controller
    ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 5
    ehci_hcd 0000:00:1d.7: debug port 1
    PCI: cache line size of 32 is not supported by device 0000:00:1d.7
    ehci_hcd 0000:00:1d.7: irq 9, io mem 0x503c0000
    ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
    usb usb5: configuration #1 chosen from 1 choice
    hub 5-0:1.0: USB hub found
    hub 5-0:1.0: 8 ports detected
    Initializing USB Mass Storage driver…
    usb 5-8: new high speed USB device using ehci_hcd and address 2
    usb 5-8: configuration #1 chosen from 1 choice
    scsi2 : SCSI emulation for USB Mass Storage devices
    usb-storage: device found at 2
    usb-storage: waiting for device to settle before scanning
    usbcore: registered new interface driver usb-storage
    USB Mass Storage support registered.
    usbcore: registered new interface driver hiddev
    usbcore: registered new interface driver usbhid
    drivers/usb/input/hid-core.c: v2.6:USB HID core driver
    Registering unionfs 2.1.2 (for 2.6.21.7)
    fuse init (API version 7.8)
    scsi 2:0:0:0: Direct-Access              Patriot Memory  PMAP PQ: 0 ANSI: 0 CCS
    SCSI device sda: 8060928 512-byte hdwr sectors (4127 MB)
    sda: Write Protect is off
    sda: Mode Sense: 23 00 00 00
    sda: assuming drive cache: write through
    SCSI device sda: 8060928 512-byte hdwr sectors (4127 MB)
    sda: Write Protect is off
    sda: Mode Sense: 23 00 00 00
    sda: assuming drive cache: write through
    sda: sda1
    sd 2:0:0:0: Attached scsi removable disk sda
    usb-storage: device scan complete
    Linux agpgart interface v0.102 (c) Dave Jones
    agpgart: Detected an Intel 945G Chipset.
    agpgart: Detected 7932K stolen memory.
    agpgart: AGP aperture is 256M @ 0x40000000
    ACPI: PCI Interrupt 0000:00:1f.3 **-> Link [LNKD] -> GSI 10 (level, low) -> IRQ 10
    r8169 Gigabit Ethernet driver 2.2LK loaded
    ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11
    PCI: Setting latency timer of device 0000:01:00.0 to 64
    eth0: RTL8169s/8110s at 0xf886a000, 00:1c:c0:45:9f:0c, IRQ 11
    8139too Fast Ethernet driver 0.9.28
    ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 9
    ACPI: PCI Interrupt 0000:04:00.0[A] -> Link [LNKF] -> GSI 9 (level, low) -> IRQ 9
    eth1: RealTek RTL8139 at 0xf896c000, 00:11:6b:95:f9:d7, IRQ 9
    eth1:  Identified 8139 chip type 'RTL-8100B/8139D'
    unionfs: do delay copyup of "messages"
    unionfs: new lower inode mtime (bindex=0, name=log)
    usbcore: registered new interface driver usblp
    drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
    unionfs: do delay copyup of "usblp.ko"
    unionfs: do delay copyup of "parport.ko"
    unionfs: do delay copyup of "parport_pc.ko"
    lp: driver loaded but no devices found
    unionfs: do delay copyup of "lp.ko"

    inofficial version doesn"t work…

    Regards******



  • this dmesg is from Puppy linux…



  • There's another thread on this NIC here - it seems that it doesn't work under FreeBSD. According to the Intel specification for the board (see the bottom of page 10), the NIC on the Atom board you mention is a Realtek RTL8102EL, as mentioned in the other thread.

    Quite why a Realtek NIC was used beats me, considering that Intel make excellent NICs themselves. It could be that they were very tight for board space; Intel 82572EI would seem a good choice, and it has Gigabit support, but it needs more board space for the device and it needs more external components (there's no version with built in EPROM or Flash memory). Further, it ideally needs PCIe x4, presumably because of the Gigabit speed (the Realtek 10/100 NIC is PCIe x1). The Realtek part has the advantage of being a single chip PCIe MAC/PHY/EPROM device with just 48 leads.

    Looking at the code and CVS logs of the rl(4) and, probably more importantly, the re(4) driver, I can't see that this chip is supported under any version of FreeBSD. There's no mention of the RTL8102 series anywhere. I did eventually find the data sheet here, but that gives no programming details whatsoever.

    You've posted a Linux dmesg, which shows two Realtek NICs. I can only presume that the other NIC you inserted is another Realtek one - which doesn't help any in identifying what is going on.

    Can you confirm that the built in NIC works under Linux, and whether it's eth0 or eth1 in the dmesg you posted.

    Can you also post the output of dmesg and pciconf -lv under pfSense or FreeBSD (6.3-RELEASE preferred). pfSense is not Linux based - so whilst knowing that a Linux driver works, that provides no more than a little help to getting this card going under pfSense. I believe there's a lot of commonality between the FreeBSD and NetBSD drivers - if the built in NIC works under NetBSD, that's worth knowing.

    We might be lucky, in that it's just a case of adding the card's ID to the re(4) driver. If that's not it, then this probably requires the input of someone familiar with the Realtek drivers in FreeBSD - probably Pyun. Offers of money and/or hardware to the maintainers will likely help your cause.

    Realtek NICs aren't brilliant even when they do work - just look at the Hardware board. Why not get hold of a decent dual port NIC and forget about the built in one? I suspect it will get supported sooner or later (these Atom boards are very new) - but it will still only be a Realtek 10/100 NIC. If you only need 10/100 speeds, you may be able to get a suitable Intel based card from eBay for fairly little.

    The alternative, if your plug in NIC supports VLANs, is to buy a switch that supports 802.1q tagged VLANs, in which case you only need a single NIC. My belief is that VLANs provide much more flexibility, as well as needing fewer cables and switch ports. You can find inexpensive fanless 802.1q capable switches if you're happy with a 10/100 switch with a couple of Gigabit ports. Netgear FSM726 v2 is one example - though I'm not particularly fond of Netgear switches. If you are going to buy an FSM726, I'd buy new - the old v1 hardware has a couple of very noisy fans!



  • Thank you David_W for quick reply.
    eth0 is onboard card the other one is eth1. They both work under Linux.They are both based on Realtek chipset (other one is Level One FNC-0109tx). I will love to post dmesg from Pfsense or freebsd 6.3, but I cant complete instalation (the computer halts in the middle becouse iI dont have 2 lan cards or ports). I will try installing wlan card.

    The other alternative is dual port NIC. (I must see if I can put this card in PCI slot, becouse I have very small case)

    Regards



  • You don't need two NICs for FreeBSD 6.3-RELEASE - just download and boot the FreeBSD 6.3-RELEASE i386 disc 1 ISO. That may be a way ahead to get the dmesg and pciconf -lv output.

    You've now confirmed that the built in NIC is detected using the Realtek 8169s/8110s driver in Linux and that that card works in Linux. That may be a start towards a solution here - the information I asked for will help reveal more of the picture.

    I can't promise to offer a fix; I have other things to be getting on with, but getting this information together is going to help whoever eventually does fix this.



  • here is dmesg from freebsd 6.3:

    Copyright © 1992-2008 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
    FreeBSD is a registered trademark of The FreeBSD Foundation.
    FreeBSD 6.3-RELEASE #0: Wed Jan 16 04:45:45 UTC 2008
        root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP
    Timecounter "i8254" frequency 1193182 Hz quality 0
    CPU: Intel(R) Atom(TM) CPU  230  @ 1.60GHz (1599.32-MHz 686-class CPU)
      Origin = "GenuineIntel"  Id = 0x106c2  Stepping = 2
      Features=0xbfe9fbff <fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,htt,tm,pbe>Features2=0x40e31d<sse3,rsvd2,mon,ds_cpl,tm2,ssse3,cx16,xtpr,pdcm,<b22>>
      AMD Features=0x20100000 <nx,lm>AMD Features2=0x1 <lahf>Logical CPUs per core: 2
    real memory  = 1063649280 (1014 MB)
    avail memory = 1027358720 (979 MB)
    ACPI APIC Table: <intel  d945glf="">FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
    cpu0 (BSP): APIC ID:  0
    cpu1 (AP): APIC ID:  1
    ioapic0: Changing APIC ID to 2
    ioapic0 <version 2.0="">irqs 0-23 on motherboard
    kbd1 at kbdmux0
    ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
    hptrr: HPT RocketRAID controller driver v1.1 (Jan 16 2008 04:43:12)
    acpi0: <intel d945glf="">on motherboard
    acpi0: Power Button (fixed)
    Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
    acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
    cpu0: <acpi cpu="">on acpi0
    cpu1: <acpi cpu="">on acpi0
    acpi_button0: <sleep button="">on acpi0
    pcib0: <acpi host-pci="" bridge="">port 0xcf8-0xcff on acpi0
    pci0: <acpi pci="" bus="">on pcib0
    agp0: <intel 82945g="" (945g="" gmch)="" svga="" controller="">port 0x30e0-0x30e7 mem 0x50300000-0x5037ffff,0x40000000-0x4fffffff,0x50380000-0x503bffff irq 16 at device 2.0 on pci0
    agp0: detected 7932k stolen memory
    agp0: aperture size is 256M
    pcib1: <acpi pci-pci="" bridge="">at device 28.0 on pci0
    pci1: <acpi pci="" bus="">on pcib1
    pci1: <network, ethernet="">at device 0.0 (no driver attached)
    pcib2: <acpi pci-pci="" bridge="">at device 28.2 on pci0
    pci2: <acpi pci="" bus="">on pcib2
    pcib3: <acpi pci-pci="" bridge="">at device 28.3 on pci0
    pci3: <acpi pci="" bus="">on pcib3
    uhci0: <uhci (generic)="" usb="" controller="">port 0x3080-0x309f irq 23 at device 29.0 on pci0
    uhci0: [GIANT-LOCKED]
    usb0: <uhci (generic)="" usb="" controller="">on uhci0
    usb0: USB revision 1.0
    uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub0: 2 ports with 2 removable, self powered
    uhci1: <uhci (generic)="" usb="" controller="">port 0x3060-0x307f irq 19 at device 29.1 on pci0
    uhci1: [GIANT-LOCKED]
    usb1: <uhci (generic)="" usb="" controller="">on uhci1
    usb1: USB revision 1.0
    uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub1: 2 ports with 2 removable, self powered
    uhci2: <uhci (generic)="" usb="" controller="">port 0x3040-0x305f irq 18 at device 29.2 on pci0
    uhci2: [GIANT-LOCKED]
    usb2: <uhci (generic)="" usb="" controller="">on uhci2
    usb2: USB revision 1.0
    uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub2: 2 ports with 2 removable, self powered
    uhci3: <uhci (generic)="" usb="" controller="">port 0x3020-0x303f irq 16 at device 29.3 on pci0
    uhci3: [GIANT-LOCKED]
    usb3: <uhci (generic)="" usb="" controller="">on uhci3
    usb3: USB revision 1.0
    uhub3: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub3: 2 ports with 2 removable, self powered
    ehci0: <intel 82801gb="" r="" (ich7)="" usb="" 2.0="" controller="">mem 0x503c0000-0x503c03ff irq 23 at device 29.7 on pci0
    ehci0: [GIANT-LOCKED]
    usb4: EHCI version 1.0
    usb4: companion controllers, 2 ports each: usb0 usb1 usb2 usb3
    usb4: <intel 82801gb="" r="" (ich7)="" usb="" 2.0="" controller="">on ehci0
    usb4: USB revision 2.0
    uhub4: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
    uhub4: 8 ports with 8 removable, self powered
    pcib4: <acpi pci-pci="" bridge="">at device 30.0 on pci0
    pci4: <acpi pci="" bus="">on pcib4
    rl0: <realtek 10="" 8139="" 100basetx="">port 0x1000-0x10ff mem 0x50100000-0x501000ff irq 21 at device 0.0 on pci4
    miibus0: <mii bus="">on rl0
    rlphy0: <realtek internal="" media="" interface="">on miibus0
    rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    rl0: Ethernet address: 00:11:6b:95:f9:d7
    isab0: <pci-isa bridge="">at device 31.0 on pci0
    isa0: <isa bus="">on isab0
    atapci0: <intel ich7="" udma100="" controller="">port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x30b0-0x30bf irq 18 at device 31.1 on pci0
    ata0: <ata 0="" channel="">on atapci0
    ata1: <ata 1="" channel="">on atapci0
    atapci1: <intel ich7="" sata300="" controller="">port 0x30c8-0x30cf,0x30ec-0x30ef,0x30c0-0x30c7,0x30e8-0x30eb,0x30a0-0x30af irq 19 at device 31.2 on pci0
    ata2: <ata 0="" channel="">on atapci1
    ata3: <ata 1="" channel="">on atapci1
    pci0: <serial bus,="" smbus="">at device 31.3 (no driver attached)
    atkbdc0: <keyboard controller="" (i8042)="">port 0x60,0x64 irq 1 on acpi0
    atkbd0: <at keyboard="">irq 1 on atkbdc0
    kbd0 at atkbd0
    atkbd0: [GIANT-LOCKED]
    psm0: <ps 2="" mouse="">irq 12 on atkbdc0
    psm0: [GIANT-LOCKED]
    psm0: model IntelliMouse, device ID 3
    pmtimer0 on isa0
    ppc0: parallel port not found.
    sc0: <system console="">at flags 0x100 on isa0
    sc0: VGA <16 virtual consoles, flags=0x300>
    sio0: configured irq 4 not in bitmap of probed irqs 0
    sio0: port may not be enabled
    sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
    sio0: type 8250 or not responding
    sio1: configured irq 3 not in bitmap of probed irqs 0
    sio1: port may not be enabled
    vga0: <generic isa="" vga="">at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
    umass0: Generic USB Flash Disk, rev 1.10/1.00, addr 2
    Timecounters tick every 1.000 msec
    hptrr: no controller detected.
    ad0: FAILURE - SET_MULTI status=51 <ready,dsc,error>error=4 <aborted>ad0: 499MB <innodisk 18="" corp.="" -="" edc4000="" 512mb="" 06="" 05="">at ata0-master UDMA66
    da0 at umass-sim0 bus 0 target 0 lun 0
    da0: <generic usb="" flash="" disk="" 2.01="">Removable Direct Access SCSI-2 device
    da0: 1.000MB/s transfers
    da0: 127MB (260288 512 byte sectors: 64H 32S/T 127C)
    acd0: DVDROM <tsstcorpdvd-rom sh-d163b="" sb01="">at ata3-master SATA150
    SMP: AP CPU #1 Launched!
    Trying to mount root from ufs:/dev/ad0s1a</tsstcorpdvd-rom></generic></innodisk></aborted></ready,dsc,error></generic></system></ps></at></keyboard></serial></ata></ata></intel></ata></ata></intel></isa></pci-isa></realtek></mii></realtek></acpi></acpi></intel></intel></uhci></uhci></uhci></uhci></uhci></uhci></uhci></uhci></acpi></acpi></acpi></acpi></network,></acpi></acpi></intel></acpi></acpi></sleep></acpi></acpi></intel></version></intel ></lahf></nx,lm></sse3,rsvd2,mon,ds_cpl,tm2,ssse3,cx16,xtpr,pdcm,<b22></fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,htt,tm,pbe>



  • @mona:

    pci1: <acpi pci="" bus="">on pcib1
    pci1: <network, ethernet="">at device 0.0 (no driver attached)</network,></acpi>

    That's the Realtek card. Can you post the output of pciconf -lv as that will give the device ID. Without that, there's no way to try to create a driver.



  • Here you have it:

    hostb0@pci0:0:0: class=0x060000 card=0x464c8086 chip=0x27708086 rev=0x02 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82945G/GZ/P/PL Host Bridge/DRAM Controller'
        class      = bridge
        subclass  = HOST-PCI
    agp0@pci0:2:0: class=0x030000 card=0x464c8086 chip=0x27728086 rev=0x02 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82945G Integrated Graphics Controller'
        class      = display
        subclass  = VGA
    pcib1@pci0:28:0: class=0x060400 card=0x00000000 chip=0x27d08086 rev=0x01 hdr=0x01
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) PCIe Root Port'
        class      = bridge
        subclass  = PCI-PCI
    pcib2@pci0:28:2: class=0x060400 card=0x00000000 chip=0x27d48086 rev=0x01 hdr=0x01
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) PCIe Root Port'
        class      = bridge
        subclass  = PCI-PCI
    pcib3@pci0:28:3: class=0x060400 card=0x00000000 chip=0x27d68086 rev=0x01 hdr=0x01
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) PCIe Root Port'
        class      = bridge
        subclass  = PCI-PCI
    uhci0@pci0:29:0: class=0x0c0300 card=0x464c8086 chip=0x27c88086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) USB Universal Host Controller'
        class      = serial bus
        subclass  = USB
    uhci1@pci0:29:1: class=0x0c0300 card=0x464c8086 chip=0x27c98086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) USB Universal Host Controller'
        class      = serial bus
        subclass  = USB
    uhci2@pci0:29:2: class=0x0c0300 card=0x464c8086 chip=0x27ca8086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) USB Universal Host Controller'
        class      = serial bus
        subclass  = USB
    uhci3@pci0:29:3: class=0x0c0300 card=0x464c8086 chip=0x27cb8086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) USB Universal Host Controller'
        class      = serial bus
        subclass  = USB
    ehci0@pci0:29:7: class=0x0c0320 card=0x464c8086 chip=0x27cc8086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) USB 2.0 Enhanced Host Controller'
        class      = serial bus
        subclass  = USB
    pcib4@pci0:30:0: class=0x060401 card=0x464c8086 chip=0x244e8086 rev=0xe1 hdr=0x01
        vendor    = 'Intel Corporation'
        device    = '82801 Family (ICH2/3/4/4/5/5/6/7/8/9,63xxESB) Hub Interface to PCI Bridge'
        class      = bridge
        subclass  = PCI-PCI
    isab0@pci0:31:0: class=0x060100 card=0x464c8086 chip=0x27b88086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '945GL Intel 82801GB/GR (ICH7 Family) LPC Interface Controller - 27B8'
        class      = bridge
        subclass  = PCI-ISA
    atapci0@pci0:31:1: class=0x01018a card=0x464c8086 chip=0x27df8086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) Ultra ATA Storage Controller'
        class      = mass storage
        subclass  = ATA
    atapci1@pci0:31:2: class=0x01018f card=0x464c8086 chip=0x27c08086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller'
        class      = mass storage
        subclass  = ATA
    none0@pci0:31:3: class=0x0c0500 card=0x464c8086 chip=0x27da8086 rev=0x01 hdr=0x00
        vendor    = 'Intel Corporation'
        device    = '82801G (ICH7 Family) SMBus Controller'
        class      = serial bus
        subclass  = SMBus
    none1@pci1:0:0: class=0x020000 card=0x00018086 chip=0x813610ec rev=0x02 hdr=0x00
        vendor    = 'Realtek Semiconductor'
        device    = 'RTL8139/810x Family Fast Ethernet NIC'
        class      = network
        subclass  = ethernet
    rl0@pci4:0:0: class=0x020000 card=0x813910ec chip=0x813910ec rev=0x10 hdr=0x00
        vendor    = 'Realtek Semiconductor'
        device    = 'RT8139 (A/B/C/810x/813x/C+) Fast Ethernet Adapter'
        class      = network
        subclass  = ethernet



  • @mona:

    none1@pci1:0:0: class=0x020000 card=0x00018086 chip=0x813610ec rev=0x02 hdr=0x00
        vendor     = 'Realtek Semiconductor'
        device     = 'RTL8139/810x Family Fast Ethernet NIC'
        class      = network
        subclass   = ethernet

    That's the device we're trying to support.

    The Intel vendor ID always amuses me - note that the low word of 'card', the subvendor ID, is 0x8086.

    'Chip' is the more important value - the low word is 0x10ec, which is Realtek. The high word is 0x8136 - Realtek 8101E alike. The re(4) driver already has support for the Realtek 8101E.

    Looking at if_re.c, I can only surmise that the driver is trying to attach to this NIC expecting a Realtek 8101E, but discovers that it's a different hardware revision to one it expects for the 8101E, so it doesn't attach to the chip. After all, 8102E is not 8101E! Hopefully someone can get hold of the necessary programming documentation to add support for the NIC that is on this Intel board.

    I have had a quick glance at the Linux driver, but it didn't help me understand what was happening. I'm not familiar with Linux drivers, and the driver API is somewhat different to FreeBSD.



  • David_W  thank you for your reply.

    I tried installing Freebsd 7.0 but no luck…

    I also searched on Google and I find that a lot of people have problem with this onboard LAN.. but I am new in Freebsd so I can do much to help them... so I must be patient and wait... hopefully this will be resolved quickly.

    If I can do something to help....

    Regards



  • Any news on this subject?



  • As others have said, the driver needs to be in FreeBSD before you'll get anywhere.  You may find that you need to raise this on the freebsd-net mailing list (and if you really want it to work, you may have to donate a working card/motherboard to a developer).

    One thing to keep in mind, new drivers tend to appear in HEAD, which is 8.0.  Some may be back-ported to 7.x but few are likely to be back-ported to 6.x.



  • The problem is in network card RTL8102E. I downloaded freebsd drivers from http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=14&PFid=7&Level=5&Conn=4&DownTypeID=3&GetDown=false
    instaled freebsd 6.2 , compiled if_rl.ko driver, put it  /boot/kernel/if_rl.ko and in /boot/defaults/loader.conf  change if_rl_load="NO" to "YES"
    my dmesg:
    rl0: <realtek rtl810xe="" pci-e="" fast="" ethernet="" adapter="">port 0x2000-0x20ff mem 0x50200000-0x50200fff,0x50000000-0x5000ffff irq 11 at device 0.0 on pci1
    rl0: [GIANT-LOCKED]
    version:1.76 beta1</realtek>



  • Does that mean this is working now?



  • In a word - no.

    Unfortunately Realtek's driver is forked from an ancient version of if_rl.c - by ancient I mean six years old and on the FreeBSD 4.x branch. There's no straightforward way of porting their changes back to FreeBSD HEAD, 7-STABLE and 6-STABLE, which is the only way these changes are going to make it into FreeBSD proper.

    Maybe Realtek have taken objection to the comment in the driver that the 8139 is possibly the worst PCI Ethernet NIC ever made (with one exception). Their version has deleted that comment. To see what I mean, look here, fairly near the top.

    Realtek's code updates the PIO based rl(4) driver, not the DMA based re(4) driver, which is where you really want support. Further, the dmesg extract mindziux posted shows that Realtek's driver is under the Giant lock. Both these will hurt performance badly.

    Networking drivers that need the Giant lock will not be committed to FreeBSD HEAD; a process is underway at the moment to get the remaining networking drivers out from under the Giant lock. Those drivers that do not get updated will be deleted. See recent posts by Robert Watson to freebsd-stable for more details.

    It would have been so much better if Realtek worked with the FreeBSD developers to get their patches incorporated into the operating system, as other vendors do (including Broadcom and Intel for network drivers, and LSI Logic for storage drivers). The ancient code base of their driver means it's reaching the end of the line, as the networking code in 7.x and HEAD is very different to the 4.x base of Realtek's driver.

    If you are desperate to get things working, follow mindzuix's steps, but the performance will be suspect at best. I would suggest not using this NIC at all - use an Intel Gigabit NIC in the PCI slot. It's a huge shame that Intel used this cheap Realtek NIC rather than one of their own NICs on this board; the Realtek NIC is just about OK as a desktop NIC, but I believe is a poor choice for a server or firewall NIC.



  • Hi to all the Atom fan's here who are struggling with their  RTL8101E (or is it a RTL8102E) nic.

    I received my D945GCLF last week but it wasn't until last weekend that I got to play with it. Unfortunately the amount of play regarding the network capabilities was small. The problems described in the posting before me have plagued me too. Other linux distro's, I have tried SuSe, Ubuntu, Knoppix on the board result in the same non responsive NIC.

    lspci -v -n on a SuSe install tells me:

    01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8101E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
            Subsystem: Intel Corporation Device [8086:0001]
            Flags: bus master, fast devsel, latency 0, IRQ 220
            I/O ports at 2000 Memory at 88200000 (64-bit, non-prefetchable)
            Memory at 88000000 (64-bit, prefetchable)
            Expansion ROM at 88020000 [disabled]
            Capabilities: [40] Power Management version 3
            Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable+
            Capabilities: [70] Express Endpoint, MSI 01
            Capabilities: [ac] MSI-X: Enable- Mask- TabSize=2
            Capabilities: [cc] Vital Product Data
            Kernel driver in use: r8169
            Kernel modules: r8169

    It seems SuSe loads another kernel module, with mixed results. 8 out of 10 reboots the nic stay dead. Switching from manual IP to dhcp only results in the dhcp request being backgrounded (and eventually resulting in no IP being received). Not that superb if you'r thinking of using the Atom board as a router/home server. Unfortunately I had to reinstate my old Epia M10K as a router and stuck an Intel 1000GT in the one PCI Slot on the D945GCLF. After that the RTL nic get's properly activated as well (receives an IP through dhcp) and is willing to work. If I removed the Intel nic, I am back at the lottery.

    I have emailed RealTek about the problems but so far little good advise (.. update linux driver) or maintaining a dual boot with XP and enable WOL from the windows driver (not an option for a linux only server).

    Even though the replies have been rather gloomy I do hope for a driver update with normal support for the 8101/2E so I can eclaim the Gbit nic from the Atom box.



  • Pantagruel, as others have said, many times and in this thread, pfSense is based on FreeBSD, FreeBSD is not Linux.  Getting it working under Linux doesn't really help.

    Nice to know that it's as broken under Linux as FreeBSD though ;)



  • @Cry:

    .. FreeBSD is not Linux.  Getting it working under Linux doesn't really help.

    Nice to know that it's as broken under Linux as FreeBSD though ;)

    I know but it's a small step from a solution regarding freebsd to solving it for linux (or vice versa)



  • Sounds like we're just going to have to wait for intel to update this board or use PCI. I was disapointed it wasn't gigabit anyway but it still would have been nice to use as a wan port.



  • RealTek mailed me about changing/upgrading the driver.

    Drivers can be found at:

    http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=2&PNid=14&PFid=7&Level=5&Conn=4&DownTypeID=3&GetDown=false

    Perhaps this will be of any help to you as well. I'll go and wreck my install later this evening.



  • @Pantagruel:

    RealTek mailed me about changing/upgrading the driver.

    I've already dealt with this; I spent quite a bit of time investigating the situation a few days ago.

    There's almost zero, nothing, zilch, nada in common between the Linux and FreeBSD drivers, Pantagruel - it's not a small step for solving the problem on one kernel to solving it on another when there's no common code. Sometimes code reading the drivers for Linux helps when writing FreeBSD drivers, especially if you're after a small tweak to support a new variant of a device on FreeBSD that is already supported on Linux.

    In this case, I can't see anything in the Linux kernel that will help in supporting this NIC in the FreeBSD re(4) driver. I'm not an expert on FreeBSD device drivers, but I am pretty familiar with FreeBSD in general and I am a competent C programmer. If you've got at least some familiarity with C, by all means compare the if_re.c file in FreeBSD (in src/sys/dev/re) with the Realtek driver in the Linux kernel.

    Realtek's driver for FreeBSD apparently works, but it's utterly horrible. It's based on 6 year old FreeBSD code which is PIO based (so no DMA, which means horrible I/O performance) and is under the Giant lock (so no threading - not that this is a surprise for code based on the non-SMP FreeBSD 4.x). Because of the ancient revision Realtek have forked from, it would be very hard to backport the changes to a modern version of the rl(4) driver, let alone the re(4) driver, which is where you want support.

    Realtek could have chosen to work with the FreeBSD developers on getting their hardware supported properly - other companies such as Intel, Broadcom and LSI Logic have done so.

    I expect that the built in NIC on the Atom board will be supported eventually - there's likely to be a lot of these boards, so someone is going to be interested in doing the work. Finding an interested FreeBSD developer and offering them hardware or money is likely to get this work done sooner, though it still relies on finding (or obtaining) programming details from Realtek. The datasheets that are publicly available don't have the programming details necessary.

    Even if you did get the built in NIC working, Realtek NICs are far from brilliant - search the forum for Realtek for the issues that people are experiencing. It's a cheap 10/100 desktop NIC. For a firewall, I'd put an Intel Gigabit NIC in the PCI slot and have done - even a cheap Intel Gigabit desktop NIC would be very much better than this Realtek device.

    I think there's only single port desktop NICs, but if you have a switch that supports VLANs (which work fine with the single port Intel 1000/GT PCI desktop adapter), you only need a single NIC for pfSense.



  • There's some work going on to support this card now - see the posts of the last few days in freebsd-stable (the thread starts here (click)). Basic support has been managed, but doesn't appear to be in a state to be committed yet. The more complex features of the chip are proving more troublesome, because the 8102E is different to the 8101E.

    Hopefully this will turn into something that gets committed to FreeBSD HEAD, then MFCed to 7-STABLE. I'm not so sure any patch will be made to 6-STABLE, but now that pfSense 1.2.1 looks as if it will be based around FreeBSD 7, hopefully that won't be an issue.



  • There appears to be a tweak in HEAD related to this device as of half a day ago.

    http://freshbsd.org/2008/07/09/01/58/18

    No code changes, just PCI device IDs as far as I can see, so I'm not sure how much it will actually affect.



  • Hi

    I just got one of these great boards also. Any news on how to add support for the nic ?

    Thanks!  :)



  • Hi,

    I have one myself too, but just bought cheap and put PCI a D-Link's Intel-base 4 ports card.

    cheers,



  • @David_W:

    @mona:

    none1@pci1:0:0: class=0x020000 card=0x00018086 chip=0x813610ec rev=0x02 hdr=0x00
        vendor     = 'Realtek Semiconductor'
        device     = 'RTL8139/810x Family Fast Ethernet NIC'
        class      = network
        subclass   = ethernet

    That's the device we're trying to support.

    The Intel vendor ID always amuses me - note that the low word of 'card', the subvendor ID, is 0x8086.

    'Chip' is the more important value - the low word is 0x10ec, which is Realtek. The high word is 0x8136 - Realtek 8101E alike. The re(4) driver already has support for the Realtek 8101E.

    Looking at if_re.c, I can only surmise that the driver is trying to attach to this NIC expecting a Realtek 8101E, but discovers that it's a different hardware revision to one it expects for the 8101E, so it doesn't attach to the chip. After all, 8102E is not 8101E! Hopefully someone can get hold of the necessary programming documentation to add support for the NIC that is on this Intel board.

    I have had a quick glance at the Linux driver, but it didn't help me understand what was happening. I'm not familiar with Linux drivers, and the driver API is somewhat different to FreeBSD.

    I have also a card like this.

    I have modified /usr/src/sys/pci/if_rl.c in the 'static struc rl_type rl_devs[] ='

    I have added the following lines :

    { RT_VENDORID, RT_DEVICEID_8101E, RL_8139,
         "Realtek 8102E 10/100BaseTX" },

    After compilation this seems to work (card is correctly detected, with right Mac Address), but phy that is detected is 100BaseT4 and no carrier is found.

    I think there is some fix to add somewhere and I still investigate where I can fix that….

    To be continued...

    […Some update...]
    Okay after looking inside CVSweb, and haxoring a bit FreeBSD i was being able to compile this on FreeBSD :

    You will need from CVS :
    src/sys/sys/sockio.h
    src/pci/if_rlreg.h
    src/sys/net/if.h
    src/sys/net/if.c
    src/sys/dev/re/if_re.c

    From RELENG_7 Branch (this can be also backported form RELENG_6 as well, thus not tested yet. I don't have any FreeBSD 6 on my hand with this mobo).

    On if_re.c, you will have to modify the line 2235 :

    m_new = m_collapse(*m_head, M_DONTWAIT, RL_NTXSEGS);

    by

    m_new = m_defrag(*m_head, M_DONTWAIT);

    And you will have an brand new interface with support of this card :

    re0: <realtek 10="" 8101e="" 8102e="" 8102el="" pcie="" 100basetx="">port 0x2000-0x20ff mem 0x88200000-0x88200fff,0x88000000-0x8800ffff irq 16 at device 0.0 on pci1
    re0: turning off MSI enable bit.
    re0: Chip rev. 0x24800000
    re0: MAC rev. 0x00200000
    miibus0: <mii bus="">on re0
    rlphy0: <rtl8201l 10="" 100="" media="" interface="">PHY 1 on miibus0
    rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    re0: Ethernet address: 00:1c:c0:45:21:04
    re0: [FILTER]</rtl8201l></mii></realtek>



  • Good morning,

    Realtek released a new driver - Version 1.77 - release Date 2008/10/27. Seems to be new. Does anybody tried this driver?
    At the moment I switched back to my Intel Celeron DLG201 Board, but the atom would be more interesting.



  • FYI: I just installed pfsense 1.2.1 rc2 from nov 17 on intel atom.  It recognized the 8102EL just fine…



  • Really cool - it works  :)

    I made the 1.2 Full install, and after that a 1.2.1 RC2 Full update.

    • at first, the onboard card was not recognized - but after the update, I could assign an interface and it worked really fine.

    great job!


Log in to reply