Intel Ethernet Controller I225-LM Support?
-
Two cards I'm looking at...
2 port version is... https://www.allqnap.com/index.php?route=product/product&product_id=28281&gclid=CjwKCAiAgJWABhArEiwAmNVTB7PnGofu7BTCmRO5j3recCN9OnpL6-GAmNd3yA2kmp4eecHH0nOnIRoClO8QAvD_BwE
4 port version... https://www.allqnap.com/index.php?route=product/product&product_id=28282&gclid=CjwKCAiAgJWABhArEiwAmNVTB8jVSuNu9mr57vS8YDCNJ2ikH-gqtjO_s2OaRqj_g6mk9pBMZefjwhoC2_kQAvD_BwEBoth have the same Intel I225-LM controller.
Is there support for 2.5 Gbe in the current release for these cards?
THANK YOU!
-
OR whats a good Intel 2-4 port 2.5Gbe card that it plug and pray supported?
-
Oh yes almost forgot!! Current stable release as of this post installed and currently running a 1000 Gb connection, looking to upgrade.
-
@whizatit you might need to look into the 500 or 700 series, Intel skipped FreeBSD support on the 225 series.
-
@bobbenheim https://www.sybausa.com/index.php?route=product/product&path=64_144_157&product_id=1064
Look good? hard time finding cards within that model with 2-4 ports.
-
@whizatit said in Intel Ethernet Controller I225-LM Support?:
currently running a 1000 Gb connection
You're gonna need a big CPU!
There is no i225 support in current pfSense. But there will be at some point.
Steve
-
@stephenw10 Which intel cards that support 2.5 can be used?
PLENTY of RAM and Intel Core i7-9700K 3.6 GHz 8-Core Processor . No issue there!
-
@whizatit got onboard 550 series on my current setup working perfectly at Gbit, got no idea if it will link up and work at 2.5 Gbit though.
-
Sorry, I was being facetious. (1000Gb = 1Tbps!)
I have not personally rested anything at 2.5Gb or 5Gb but there other reports here on the forum of Intel base-T cards supporting that currently.
https://forum.netgate.com/post/955570I don't believe there are any that support fibre at those speeds currently. If you need that your options are the Broadcom card with hacked firmware or some Realtek cards.
Steve
-
@stephenw10 Im looking for an Intel multi gig card that will support 2.5 Gbps as i currently have 1.5 Gbps internet and the LAN out is 2.5 Gbps along with my 2.5 Gbps switches etc.
My bottleneck is the 1Gbps Intel pro card in the PfSense box atm.
-
Right, it looks like the NIC linked there supports that: X710T2LBLK
I've never tested that myself though.
Steve
-
@stephenw10 Roger that!
-
@whizatit Netgate has added Intel i225-lm support: https://github.com/pfsense/FreeBSD-src/commit/402cb8c4ab502887dc8b8651646890b8e047dd17
Just took a look at the code quickly, it seems that 70% source code are based
on Linux's igc, which is GPL license. Is Intel's igc dual licensed under the
BSD and GPL licenses now? -
@dave-1 Inteesting
-
The
igc
driver is in 2.5.0, but support may vary depending on the card. There may be some cards out there not yet covered by the driver or may need IDs added and so on. The only way to know for sure is to try it, or at least compare the IDs of the card against the driver code. -
Any updates on this? It looks like the new Netgate 6100 uses the i225-LM and is taking advantage of the support included in 2.5.0+. Is there is a list of tested i225-LM cards somewhere?
-
You can see the driver supported devices here:
https://github.com/pfsense/FreeBSD-src/blob/devel-12/sys/dev/igc/igc_hw.h#L44As far as I know though the only tested NIC is that in the 6100:
igc0@pci0:4:0:0: class=0x020000 card=0x00008086 chip=0x15f38086 rev=0x01 hdr=0x00 vendor = 'Intel Corporation' device = 'Ethernet Controller I225-V' class = network subclass = ethernet
Steve
-
I decided to give it a try and picked up a PCIe adapter for my Netgate 7100 and the dual port QNAP version listed by @whizatit and tested with 21.05. The igc driver seems to be correctly detecting both I225-LMs properly, and the port responds properly when forcing speed and duplex (as confirmed by watching ifconfig and the switchport that the I225-LM port is connected to). That said, I have been unable to get the I225-LM port (I am testing with igc0) to receive traffic. Packets show up as "errors in" in the interface counters. arp on the 7100 only shows the I225-LM interface, packet captures only show outbound traffic on the 7100 and captures from a device connected to the I225-LM show outbound traffic and inbound arp traffic from the I225-LM.
I tried disabling hardware checksum offloading, but this alone doesn't appear to have done anything.
Any recommendations for what I should try?
Here are my pciconf, ifconfig and sysctl output for this card:
igc0@pci0:4:0:0: class=0x020000 card=0xc0021baa chip=0x15f28086 rev=0x03 hdr=0x00 vendor = 'Intel Corporation' device = 'Intel(R) Ethernet Controller I225-LM' class = network subclass = ethernet bar [10] = type Memory, range 32, base 0xded00000, size 1048576, enabled bar [1c] = type Memory, range 32, base 0xdef00000, size 16384, enabled cap 01[40] = powerspec 3 supports D0 D3 current D0 cap 05[50] = MSI supports 1 message, 64 bit, vector masks cap 11[70] = MSI-X supports 5 messages, enabled Table in map 0x1c[0x0], PBA in map 0x1c[0x2000] cap 10[a0] = PCI-Express 2 endpoint max data 128(512) FLR RO NS max read 512 link x1(x1) speed 5.0(5.0) ASPM disabled(L1) ecap 0001[100] = AER 2 1 fatal 1 non-fatal 0 corrected ecap 0003[140] = Serial 1 245ebeffff64ce5b ecap 0018[1c0] = LTR 1 ecap 001f[1f0] = Precision Time Measurement 1 ecap 001e[1e0] = L1 PM Substates 1 igc1@pci0:7:0:0: class=0x020000 card=0xc0021baa chip=0x15f28086 rev=0x03 hdr=0x00 vendor = 'Intel Corporation' device = 'Intel(R) Ethernet Controller I225-LM' class = network subclass = ethernet bar [10] = type Memory, range 32, base 0xdf000000, size 1048576, enabled bar [1c] = type Memory, range 32, base 0xdf200000, size 16384, enabled cap 01[40] = powerspec 3 supports D0 D3 current D0 cap 05[50] = MSI supports 1 message, 64 bit, vector masks cap 11[70] = MSI-X supports 5 messages, enabled Table in map 0x1c[0x0], PBA in map 0x1c[0x2000] cap 10[a0] = PCI-Express 2 endpoint max data 128(512) FLR RO NS max read 512 link x1(x1) speed 5.0(5.0) ASPM disabled(L1) ecap 0001[100] = AER 2 0 fatal 0 non-fatal 0 corrected ecap 0003[140] = Serial 1 245ebeffff64ce5a ecap 0018[1c0] = LTR 1 ecap 001f[1f0] = Precision Time Measurement 1 ecap 001e[1e0] = L1 PM Substates 1
igc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 description: Test options=8120b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER> capabilities=f53fbb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_UCAST,WOL_MCAST,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,NETMAP,RXCSUM_IPV6,TXCSUM_IPV6> ether 24:5e:be:64:ce:5b inet6 fe80::265e:beff:fe64:ce5b%igc0 prefixlen 64 scopeid 0x1 inet 10.222.222.1 netmask 0xffffff00 broadcast 10.222.222.255 media: Ethernet autoselect (1000baseT <full-duplex>) status: active supported media: media autoselect media 2500Base-T media 1000baseT media 1000baseT mediaopt full-duplex media 100baseTX mediaopt full-duplex media 100baseTX media 10baseT/UTP mediaopt full-duplex media 10baseT/UTP nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
dev.igc.0.interrupts.rx_desc_min_thresh: 0 dev.igc.0.interrupts.asserts: 45 dev.igc.0.mac_stats.tso_txd: 0 dev.igc.0.mac_stats.tx_frames_1024_1522: 0 dev.igc.0.mac_stats.tx_frames_512_1023: 0 dev.igc.0.mac_stats.tx_frames_256_511: 0 dev.igc.0.mac_stats.tx_frames_128_255: 0 dev.igc.0.mac_stats.tx_frames_65_127: 0 dev.igc.0.mac_stats.tx_frames_64: 41 dev.igc.0.mac_stats.mcast_pkts_txd: 0 dev.igc.0.mac_stats.bcast_pkts_txd: 41 dev.igc.0.mac_stats.good_pkts_txd: 41 dev.igc.0.mac_stats.total_pkts_txd: 248 dev.igc.0.mac_stats.good_octets_txd: 2624 dev.igc.0.mac_stats.good_octets_recvd: 32709 dev.igc.0.mac_stats.rx_frames_1024_1522: 0 dev.igc.0.mac_stats.rx_frames_512_1023: 37 dev.igc.0.mac_stats.rx_frames_256_511: 0 dev.igc.0.mac_stats.rx_frames_128_255: 15 dev.igc.0.mac_stats.rx_frames_65_127: 14 dev.igc.0.mac_stats.rx_frames_64: 30 dev.igc.0.mac_stats.mcast_pkts_recvd: 68 dev.igc.0.mac_stats.bcast_pkts_recvd: 28 dev.igc.0.mac_stats.good_pkts_recvd: 96 dev.igc.0.mac_stats.total_pkts_recvd: 302 dev.igc.0.mac_stats.xoff_txd: 207 dev.igc.0.mac_stats.xoff_recvd: 0 dev.igc.0.mac_stats.xon_txd: 0 dev.igc.0.mac_stats.xon_recvd: 0 dev.igc.0.mac_stats.alignment_errs: 0 dev.igc.0.mac_stats.crc_errs: 0 dev.igc.0.mac_stats.recv_errs: 0 dev.igc.0.mac_stats.recv_jabber: 0 dev.igc.0.mac_stats.recv_oversize: 0 dev.igc.0.mac_stats.recv_fragmented: 0 dev.igc.0.mac_stats.recv_undersize: 0 dev.igc.0.mac_stats.recv_no_buff: 0 dev.igc.0.mac_stats.missed_packets: 206 dev.igc.0.mac_stats.defer_count: 0 dev.igc.0.mac_stats.sequence_errors: 0 dev.igc.0.mac_stats.symbol_errors: 0 dev.igc.0.mac_stats.collision_count: 0 dev.igc.0.mac_stats.late_coll: 0 dev.igc.0.mac_stats.multiple_coll: 0 dev.igc.0.mac_stats.single_coll: 0 dev.igc.0.mac_stats.excess_coll: 0 dev.igc.0.queue_rx_3.rx_irq: 0 dev.igc.0.queue_rx_3.rxd_tail: 128 dev.igc.0.queue_rx_3.rxd_head: 0 dev.igc.0.queue_rx_2.rx_irq: 0 dev.igc.0.queue_rx_2.rxd_tail: 128 dev.igc.0.queue_rx_2.rxd_head: 0 dev.igc.0.queue_rx_1.rx_irq: 0 dev.igc.0.queue_rx_1.rxd_tail: 128 dev.igc.0.queue_rx_1.rxd_head: 0 dev.igc.0.queue_rx_0.rx_irq: 0 dev.igc.0.queue_rx_0.rxd_tail: 128 dev.igc.0.queue_rx_0.rxd_head: 0 dev.igc.0.queue_tx_3.tx_irq: 0 dev.igc.0.queue_tx_3.txd_tail: 0 dev.igc.0.queue_tx_3.txd_head: 0 dev.igc.0.queue_tx_2.tx_irq: 0 dev.igc.0.queue_tx_2.txd_tail: 0 dev.igc.0.queue_tx_2.txd_head: 0 dev.igc.0.queue_tx_1.tx_irq: 0 dev.igc.0.queue_tx_1.txd_tail: 0 dev.igc.0.queue_tx_1.txd_head: 0 dev.igc.0.queue_tx_0.tx_irq: 0 dev.igc.0.queue_tx_0.txd_tail: 41 dev.igc.0.queue_tx_0.txd_head: 41 dev.igc.0.fc_low_water: 32752 dev.igc.0.fc_high_water: 32768 dev.igc.0.rx_control: 71335966 dev.igc.0.device_control: 404489793 dev.igc.0.watchdog_timeouts: 0 dev.igc.0.rx_overruns: 1 dev.igc.0.link_irq: 4 dev.igc.0.dropped: 0 dev.igc.0.eee_control: 1 dev.igc.0.itr: 488 dev.igc.0.tx_abs_int_delay: 66 dev.igc.0.rx_abs_int_delay: 66 dev.igc.0.tx_int_delay: 66 dev.igc.0.rx_int_delay: 0 dev.igc.0.rs_dump: 0 dev.igc.0.reg_dump: General Registers CTRL 181c0641 STATUS 40380683 CTRL_EXIT 10000040 Interrupt Registers ICR 00000000 RX Registers RCTL 0440801e RDLEN 00004000 RDH 00000000 RDT 00000080 RXDCTL 02040808 RDBAL 033a8000 RDBAH 00000001 TX Registers TCTL a503f0fa TDBAL 0336a000 TDBAH 00000001 TDLEN 00004000 TDH 00000029 TDT 00000029 TXDCTL 0201011f TDFH 00000000 TDFT 00000000 TDFHS 00000000 TDFPC 00000000 dev.igc.0.fc: 3 dev.igc.0.debug: -1 dev.igc.0.nvm: -1 dev.igc.0.iflib.rxq3.rxq_fl0.buf_size: 2048 dev.igc.0.iflib.rxq3.rxq_fl0.credits: 128 dev.igc.0.iflib.rxq3.rxq_fl0.cidx: 0 dev.igc.0.iflib.rxq3.rxq_fl0.pidx: 128 dev.igc.0.iflib.rxq2.rxq_fl0.buf_size: 2048 dev.igc.0.iflib.rxq2.rxq_fl0.credits: 128 dev.igc.0.iflib.rxq2.rxq_fl0.cidx: 0 dev.igc.0.iflib.rxq2.rxq_fl0.pidx: 128 dev.igc.0.iflib.rxq1.rxq_fl0.buf_size: 2048 dev.igc.0.iflib.rxq1.rxq_fl0.credits: 128 dev.igc.0.iflib.rxq1.rxq_fl0.cidx: 0 dev.igc.0.iflib.rxq1.rxq_fl0.pidx: 128 dev.igc.0.iflib.rxq0.rxq_fl0.buf_size: 2048 dev.igc.0.iflib.rxq0.rxq_fl0.credits: 128 dev.igc.0.iflib.rxq0.rxq_fl0.cidx: 0 dev.igc.0.iflib.rxq0.rxq_fl0.pidx: 128 dev.igc.0.iflib.txq3.r_abdications: 0 dev.igc.0.iflib.txq3.r_restarts: 0 dev.igc.0.iflib.txq3.r_stalls: 0 dev.igc.0.iflib.txq3.r_starts: 0 dev.igc.0.iflib.txq3.r_drops: 0 dev.igc.0.iflib.txq3.r_enqueues: 0 dev.igc.0.iflib.txq3.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000 state: IDLE dev.igc.0.iflib.txq3.txq_cleaned: 0 dev.igc.0.iflib.txq3.txq_processed: 0 dev.igc.0.iflib.txq3.txq_in_use: 0 dev.igc.0.iflib.txq3.txq_cidx_processed: 0 dev.igc.0.iflib.txq3.txq_cidx: 0 dev.igc.0.iflib.txq3.txq_pidx: 0 dev.igc.0.iflib.txq3.no_tx_dma_setup: 0 dev.igc.0.iflib.txq3.txd_encap_efbig: 0 dev.igc.0.iflib.txq3.tx_map_failed: 0 dev.igc.0.iflib.txq3.no_desc_avail: 0 dev.igc.0.iflib.txq3.mbuf_defrag_failed: 0 dev.igc.0.iflib.txq3.m_pullups: 0 dev.igc.0.iflib.txq3.mbuf_defrag: 0 dev.igc.0.iflib.txq2.r_abdications: 0 dev.igc.0.iflib.txq2.r_restarts: 0 dev.igc.0.iflib.txq2.r_stalls: 0 dev.igc.0.iflib.txq2.r_starts: 0 dev.igc.0.iflib.txq2.r_drops: 0 dev.igc.0.iflib.txq2.r_enqueues: 0 dev.igc.0.iflib.txq2.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000 state: IDLE dev.igc.0.iflib.txq2.txq_cleaned: 0 dev.igc.0.iflib.txq2.txq_processed: 0 dev.igc.0.iflib.txq2.txq_in_use: 0 dev.igc.0.iflib.txq2.txq_cidx_processed: 0 dev.igc.0.iflib.txq2.txq_cidx: 0 dev.igc.0.iflib.txq2.txq_pidx: 0 dev.igc.0.iflib.txq2.no_tx_dma_setup: 0 dev.igc.0.iflib.txq2.txd_encap_efbig: 0 dev.igc.0.iflib.txq2.tx_map_failed: 0 dev.igc.0.iflib.txq2.no_desc_avail: 0 dev.igc.0.iflib.txq2.mbuf_defrag_failed: 0 dev.igc.0.iflib.txq2.m_pullups: 0 dev.igc.0.iflib.txq2.mbuf_defrag: 0 dev.igc.0.iflib.txq1.r_abdications: 0 dev.igc.0.iflib.txq1.r_restarts: 0 dev.igc.0.iflib.txq1.r_stalls: 0 dev.igc.0.iflib.txq1.r_starts: 0 dev.igc.0.iflib.txq1.r_drops: 0 dev.igc.0.iflib.txq1.r_enqueues: 0 dev.igc.0.iflib.txq1.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000 state: IDLE dev.igc.0.iflib.txq1.txq_cleaned: 0 dev.igc.0.iflib.txq1.txq_processed: 0 dev.igc.0.iflib.txq1.txq_in_use: 0 dev.igc.0.iflib.txq1.txq_cidx_processed: 0 dev.igc.0.iflib.txq1.txq_cidx: 0 dev.igc.0.iflib.txq1.txq_pidx: 0 dev.igc.0.iflib.txq1.no_tx_dma_setup: 0 dev.igc.0.iflib.txq1.txd_encap_efbig: 0 dev.igc.0.iflib.txq1.tx_map_failed: 0 dev.igc.0.iflib.txq1.no_desc_avail: 0 dev.igc.0.iflib.txq1.mbuf_defrag_failed: 0 dev.igc.0.iflib.txq1.m_pullups: 0 dev.igc.0.iflib.txq1.mbuf_defrag: 0 dev.igc.0.iflib.txq0.r_abdications: 0 dev.igc.0.iflib.txq0.r_restarts: 0 dev.igc.0.iflib.txq0.r_stalls: 0 dev.igc.0.iflib.txq0.r_starts: 41 dev.igc.0.iflib.txq0.r_drops: 0 dev.igc.0.iflib.txq0.r_enqueues: 41 dev.igc.0.iflib.txq0.ring_state: pidx_head: 0041 pidx_tail: 0041 cidx: 0041 state: IDLE dev.igc.0.iflib.txq0.txq_cleaned: 0 dev.igc.0.iflib.txq0.txq_processed: 40 dev.igc.0.iflib.txq0.txq_in_use: 41 dev.igc.0.iflib.txq0.txq_cidx_processed: 40 dev.igc.0.iflib.txq0.txq_cidx: 0 dev.igc.0.iflib.txq0.txq_pidx: 41 dev.igc.0.iflib.txq0.no_tx_dma_setup: 0 dev.igc.0.iflib.txq0.txd_encap_efbig: 0 dev.igc.0.iflib.txq0.tx_map_failed: 0 dev.igc.0.iflib.txq0.no_desc_avail: 0 dev.igc.0.iflib.txq0.mbuf_defrag_failed: 0 dev.igc.0.iflib.txq0.m_pullups: 0 dev.igc.0.iflib.txq0.mbuf_defrag: 0 dev.igc.0.iflib.override_nrxds: 0 dev.igc.0.iflib.override_ntxds: 0 dev.igc.0.iflib.separate_txrx: 0 dev.igc.0.iflib.core_offset: 0 dev.igc.0.iflib.tx_abdicate: 0 dev.igc.0.iflib.rx_budget: 0 dev.igc.0.iflib.disable_msix: 0 dev.igc.0.iflib.override_qs_enable: 0 dev.igc.0.iflib.override_nrxqs: 0 dev.igc.0.iflib.override_ntxqs: 0 dev.igc.0.iflib.driver_version: 1 dev.igc.0.%parent: pci4 dev.igc.0.%pnpinfo: vendor=0x8086 device=0x15f2 subvendor=0x1baa subdevice=0xc002 class=0x020000 dev.igc.0.%location: slot=0 function=0 dbsf=pci0:4:0:0 dev.igc.0.%driver: igc dev.igc.0.%desc: Intel(R) PRO/1000 PCI-Express Network Driver
-
It shows that at all link rates?
-
@stephenw10 said in Intel Ethernet Controller I225-LM Support?:
It shows that at all link rates?
Yes, at least for 10,100, and 1000 (both full and half duplex) it does. I don't have a 2500Base-T equipped device to test with yet. Note that ARPs transmitted from the I225-LM port to another device connected to the port are getting through to the device, but the responses back from the device do not appear to be making it back to the I225-LM as the ARP request (from the I225-LM) and reply (from the device) continuously repeat. Here is a sample from when attempting to ping the connected test device on 10.222.222.2 from pfSense:
test device capture
19:03:57.641021 1209 QNAP_64:ce:5b Broadcast ARP 60 Who has 10.222.222.2? Tell 10.222.222.1 19:03:57.641030 1210 SamsungE_9c:a0:8e QNAP_64:ce:5b ARP 42 10.222.222.2 is at 98:83:89:9c:a0:8e 19:03:58.651569 1211 QNAP_64:ce:5b Broadcast ARP 60 Who has 10.222.222.2? Tell 10.222.222.1 19:03:58.651594 1212 SamsungE_9c:a0:8e QNAP_64:ce:5b ARP 42 10.222.222.2 is at 98:83:89:9c:a0:8e 19:03:59.670915 1213 QNAP_64:ce:5b Broadcast ARP 60 Who has 10.222.222.2? Tell 10.222.222.1 19:03:59.670930 1214 SamsungE_9c:a0:8e QNAP_64:ce:5b ARP 42 10.222.222.2 is at 98:83:89:9c:a0:8e
pfSense capture
19:03:57.313905 ARP, Request who-has 10.222.222.2 tell 10.222.222.1, length 28 19:03:58.324154 ARP, Request who-has 10.222.222.2 tell 10.222.222.1, length 28 19:03:59.343768 ARP, Request who-has 10.222.222.2 tell 10.222.222.1, length 28