Intel ATOM D945GCLF onboard LAN driver-card problem
-
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.
-
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,
-
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 = ethernetThat'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.cFrom 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!