So what's the deal with the Realtek network adaptors?



  • I bricked my little Buffalo router yesterday and decided that I should just put something proper together. I was thinking that this board looked perfect:

    http://www.newegg.com/Product/Product.aspx?Item=N82E16813135095

    Cheap, fanless, with dual 10/100 lan and an integrated compact flash slot. Figured I'd add an EnGenius EPI3601S wireless card and pair that with an as-yet unspecified high gain antenna. It's the highest power card I've been able to find (hoping that that translates to greater range) and, though it doesn't officially support anything but Windows, it's an Atheros card so I've got my fingers crossed. I haven't been able to find any information on compatibility, so I'm stuck taking my chances.

    Anyway. The motherboard that I was looking at, the one I linked, has two Realtek 8100C chipsets and I was tooling around on this board and read some rather disparaging remarks. Is this going to hurt me? I do play games and so I value latency. The alternative board would be one of these:

    http://www.newegg.com/Product/Product.aspx?Item=N82E16813135100

    But they're more expensive and larger and don't have the nice integrated CF slot. Also, I'd have to buy a PCI express NIC to supplement the one on board. I'm less enthusiastic about that one, but I'll do what I have to.

    Anyone feel like critiquing my build?



  • I purchased that same board (the PMI8M) from Newegg about a month ago and have been using it as my home pfSense machine since.  It works great.  Since this was my first foray into a pfSense deployment, I did a bunch of testing to see how the pfSense box would impact data throughput/etc.  Any degradation was negligible.

    High on my list-of-important-things was the fact that it's a fanless board.  The fact that it's inexpensive didn't hurt either…  :-)



  • From the comments at the top of if_rl.c:

    
     * The RealTek 8139 PCI NIC redefines the meaning of 'low end.' This is
     * probably the worst PCI ethernet controller ever made, with the possible
     * exception of the FEAST chip made by SMC. The 8139 supports bus-master
     * DMA, but it has a terrible interface that nullifies any performance
     * gains that bus-master DMA usually offers.
     *
     * For transmission, the chip offers a series of four TX descriptor
     * registers. Each transmit frame must be in a contiguous buffer, aligned
     * on a longword (32-bit) boundary. This means we almost always have to
     * do mbuf copies in order to transmit a frame, except in the unlikely
     * case where a) the packet fits into a single mbuf, and b) the packet
     * is 32-bit aligned within the mbuf's data area. The presence of only
     * four descriptor registers means that we can never have more than four
     * packets queued for transmission at any one time.
     *
     * Reception is not much better. The driver has to allocate a single large
     * buffer area (up to 64K in size) into which the chip will DMA received
     * frames. Because we don't know where within this region received packets
     * will begin or end, we have no choice but to copy data from the buffer
     * area into mbufs in order to pass the packets up to the higher protocol
     * levels.
     *
     * It's impossible given this rotten design to really achieve decent
     * performance at 100Mbps, unless you happen to have a 400Mhz PII or
     * some equally overmuscled CPU to drive it.
    
    


  • @Cry:

    From the comments at the top of if_rl.c:

    
     * The RealTek 8139 PCI NIC redefines the meaning of 'low end.' 
    
     * It's impossible given this rotten design to really achieve decent
     * performance at 100Mbps, unless you happen to have a 400Mhz PII or
     * some equally overmuscled CPU to drive it.
    
    

    Ah, hm. I was all encouraged by berniem's comment but is this saying that the only reason that he was getting good performance was the 600 MHz cpu? It's a RealTek 8100C on the board. Some quick searching doesn't tell me what the difference is between that and the 8139, but maybe… everything is great? RealTek has amended their ways?

    It's probably just a different revision of the same chip, searching says that they use the same driver. Probably means that it isn't significantly better.



  • I would stay as far away from Realtek as possible.



  • The simple summary is that avoiding the rl driver is probably a good bet.  That said, my FX5620 (1 GHz) has Realtek NICs and and can fully use my 20 Mb/s link.  Looking at the figures I suspect I'll max out on interrupts somewhere between 40 and 50 Mb/s.  I haven't yet seen what happens if I use the non-rl interface for my LAN, in theory that should reduce the problem and allow me to use higher bandwidths.

    From what I remember of lurking on various FreeBSD lists, the newer Realtek NICs (at least the GBit ones) aren't anything like as bad, though they're still relatively low end, particularly when compared to the likes of the Intel choices.



  • So I should let y'all know how this turned out. Seems pretty rude just to ask for help and then drop it.

    After your feedback I was a little annoyed with my options, and was putzing around on Ebay when I saw one of these:

    http://www.msicomputer.com/product/p_spec.asp?model=Fuzzy_945GM2&class=ipc

    which, with an ULV CPU, would be absolutely perfect. Three Intel gigabit NICs, low power mobile chipset, plenty of expansion options. Also it was really cheap. Two problems: first, as is the way on Ebay, what starts out really cheap doesn't necessarily stay that way. Second, ULV and LV CPUs aren't sold or available - they're soldered onto their motherboards.

    So I'm stuck with a full voltage 31w core solo. Oh well. I'll underclock/undervolt the fuck out of it, attach a decent heatsink (thinking of a ninja mini, though this is the last part that I haven't gotten yet) and hope for the best. Even at half it's clock speed, it'll be way faster than necessary.

    The cost was higher than I had planned on, I've spent maybe a little over $200 so far and with a $30 heatsink I'm going to be right around $250. Oh well. That isn't crazy high, and I feel like I've gotten something that'll scale well.

    Anyway, thanks for the help.



  • @shmuck:

    So I should let y'all know how this turned out. Seems pretty rude just to ask for help and then drop it.

    After your feedback I was a little annoyed with my options, and was putzing around on Ebay when I saw one of these:

    http://www.msicomputer.com/product/p_spec.asp?model=Fuzzy_945GM2&class=ipc

    which, with an ULV CPU, would be absolutely perfect. Three Intel gigabit NICs, low power mobile chipset, plenty of expansion options. Also it was really cheap. Two problems: first, as is the way on Ebay, what starts out really cheap doesn't necessarily stay that way. Second, ULV and LV CPUs aren't sold or available - they're soldered onto their motherboards.

    So I'm stuck with a full voltage 31w core solo. Oh well. I'll underclock/undervolt the fuck out of it, attach a decent heatsink (thinking of a ninja mini, though this is the last part that I haven't gotten yet) and hope for the best. Even at half it's clock speed, it'll be way faster than necessary.

    The cost was higher than I had planned on, I've spent maybe a little over $200 so far and with a $30 heatsink I'm going to be right around $250. Oh well. That isn't crazy high, and I feel like I've gotten something that'll scale well.

    Anyway, thanks for the help.

    Keep in mind the PCI-Express slot is useless for anything but graphics cards.



  • @rockbochs:

    Keep in mind the PCI-Express slot is useless for anything but graphics cards.

    Not true. A 16x PCIe slot can accomodate any PCIe card up to a maximum of 16x. I was thinking that that slot would be nice if I find myself in need of more NICs at some point - I could just drop in one of Intel's multi port PCIe 4x adapters.

    There's a 1x slot too, which I might be able to take advantage of, but will likely be mostly blocked by the PCI wireless card.



  • @shmuck:

    Not true. A 16x PCIe slot can accomodate any PCIe card up to a maximum of 16x. I was thinking that that slot would be nice if I find myself in need of more NICs at some point - I could just drop in one of Intel's multi port PCIe 4x adapters.

    There's a 1x slot too, which I might be able to take advantage of, but will likely be mostly blocked by the PCI wireless card.

    Not if that PCIe x16 slot is a PCIe x16 GRAPHICS slot.. They do exist and they will only run graphics cards..

    Riley



  • Not if that PCIe x16 slot is a PCIe x16 GRAPHICS slot.. They do exist and they will only run graphics cards..

    Um, wrong.  Any PCIe slot can be used for anything.



  • @valnar:

    Um, wrong.  Any PCIe slot can be used for anything.

    In a perfect world I would agree with you, however we don't live in a perfect world and motherboard manufacturers don't always come clean….

    There is a very well documented issue with PCIe x16 slots NOT supporting anything other than graphics cards. If this is the case you will usually see the manufacturer refer to the slot as a PEG (PCI Express Graphics) slot. If you look at the logical chipset layout of that MSI board you will see that MSI says the slot is a PCI Express x16 GRAPHICS slot. Also, the manual calls it a PEG slot (page 61). These references would seem to indicate that MSI is being clear that this is a GRAPHICS slot. It may or may not work.. It would be nice if it did though.. ;)

    Now... That being said they also have an option to limit the x16 slot to x1 mode "for increased compatibility" (page 61). This may be what you need. You'll be limited to x1, but that's more than enough bandwidth for a single gigabit link and slightly bottle necking two gigabit links..

    There are also many other documented cases where users have tried to use storage controllers and NICS in x16 slots only to not have them work. Check out the forums over at 2cpu.com in the storage and network section to see what I'm talking about.

    So, long story short. Any PCIe slot cannot be used for anything.

    Riley



  • Oh. Well all right then, I'll bear that in mind. I have no immediate plans for the 16x slot, but that info may be useful in the future. Thanks.



  • @Skud:

    There is a very well documented issue with PCIe x16 slots NOT supporting anything other than graphics cards.

    If that is the case, then MSI dumbed down their x16 slot on purpose or put something in to prevent other cards from working.  I have RAID cards in x16 slots on other motherboards I own and it works fine.  So shame on MSI!



  • @Skud:

    @valnar:

    Um, wrong.  Any PCIe slot can be used for anything.

    In a perfect world I would agree with you, however we don't live in a perfect world and motherboard manufacturers don't always come clean….

    There is a very well documented issue with PCIe x16 slots NOT supporting anything other than graphics cards. If this is the case you will usually see the manufacturer refer to the slot as a PEG (PCI Express Graphics) slot. If you look at the logical chipset layout of that MSI board you will see that MSI says the slot is a PCI Express x16 GRAPHICS slot. Also, the manual calls it a PEG slot (page 61). These references would seem to indicate that MSI is being clear that this is a GRAPHICS slot. It may or may not work.. It would be nice if it did though.. ;)

    Now... That being said they also have an option to limit the x16 slot to x1 mode "for increased compatibility" (page 61). This may be what you need. You'll be limited to x1, but that's more than enough bandwidth for a single gigabit link and slightly bottle necking two gigabit links..

    There are also many other documented cases where users have tried to use storage controllers and NICS in x16 slots only to not have them work. Check out the forums over at 2cpu.com in the storage and network section to see what I'm talking about.

    So, long story short. Any PCIe slot cannot be used for anything.

    Riley

    Thanks Riley, I was too tired to write out the explanation:-)


Log in to reply