This is an initial import of the if_rge driver from OpenBSD
and adapted to FreeBSD.
Details
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped - Build Status
Buildable 69185 Build 66068: arc lint + arc unit
Event Timeline
Detected on:
rge0@pci0:2:0:0: class=0x020000 rev=0x05 hdr=0x00 vendor=0x10ec device=0x8125 subvendor=0x10ec subdevice=0
x0123
vendor = 'Realtek Semiconductor Co., Ltd.'
device = 'RTL8125 2.5GbE Controller' class = network
subclass = ethernetNeed to manually load the module (not auto-loaded when detected).
Physically connected to a 2.5Gb/s switch, but not able to go beyond 1Gb/s:
media: Ethernet autoselect (2500Base-T <full-duplex>)
From a 10G server on this same switch (iperf3 -P 8 -c 192.168.100.163):
- - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 104 MBytes 87.1 Mbits/sec 42 sender [ 5] 0.00-10.01 sec 103 MBytes 86.4 Mbits/sec receiver [ 7] 0.00-10.00 sec 212 MBytes 178 Mbits/sec 0 sender [ 7] 0.00-10.01 sec 211 MBytes 177 Mbits/sec receiver [ 9] 0.00-10.00 sec 96.4 MBytes 80.8 Mbits/sec 0 sender [ 9] 0.00-10.01 sec 96.0 MBytes 80.5 Mbits/sec receiver [ 11] 0.00-10.00 sec 82.1 MBytes 68.9 Mbits/sec 35 sender [ 11] 0.00-10.01 sec 80.1 MBytes 67.2 Mbits/sec receiver [ 13] 0.00-10.00 sec 141 MBytes 118 Mbits/sec 24 sender [ 13] 0.00-10.01 sec 140 MBytes 117 Mbits/sec receiver [ 15] 0.00-10.00 sec 122 MBytes 102 Mbits/sec 11 sender [ 15] 0.00-10.01 sec 119 MBytes 99.9 Mbits/sec receiver [ 17] 0.00-10.00 sec 193 MBytes 162 Mbits/sec 0 sender [ 17] 0.00-10.01 sec 192 MBytes 161 Mbits/sec receiver [ 19] 0.00-10.00 sec 124 MBytes 104 Mbits/sec 11 sender [ 19] 0.00-10.01 sec 122 MBytes 102 Mbits/sec receiver [SUM] 0.00-10.00 sec 1.05 GBytes 901 Mbits/sec 123 sender [SUM] 0.00-10.01 sec 1.04 GBytes 891 Mbits/sec receiver iperf Done.
And from the if_rge host:
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average |
Interface Traffic Peak Total
rge0 in 0.002 Mb/s 978.725 Mb/s 4.548 GB
out 0.000 Mb/s 0.000 Mb/s 1.578 KBFor data, here is pmc while iperf3 limited to 1Gb/s in place of the expected 2.5Gb/s:
PMC: [ls_not_halted_cyc] Samples: 209521 (100.0%) , 0 unresolved %SAMP IMAGE FUNCTION CALLERS 24.1 kernel lock_delay rge_transmit_if:13.3 tcp_usr_send:6.1 tcp_usr_rcvd:4.1 5.9 kernel cpu_idle sched_idletd 5.0 if_rge.ko rge_rxeof rge_intr_msi 3.6 if_rge.ko rge_intr_msi ithread_loop 3.4 kernel bpf_filter bpf_mtap 3.1 kernel bus_dmamap_load_mbuf_sg rge_fill_rx_ring 3.1 kernel cpu_search_highest cpu_search_highest 2.8 if_rge.ko rge_txeof rge_intr_msi 2.1 kernel _epoch_enter_preempt bpf_mtap 2.1 if_rge.ko rge_tx_task taskqueue_run_locked 1.7 kernel ether_nh_input netisr_dispatch_src 1.6 kernel taskqueue_run_locked taskqueue_thread_loop 1.6 kernel copyout_smap_erms uiomove_faultflag 1.5 kernel tcp_default_output tcp_do_segment:0.7 tcp_output:0.6 1.4 kernel cpu_switch mi_switch 1.3 kernel fpu_activate_sw cpu_switch 1.2 kernel sched_switch mi_switch 1.1 kernel doreti 0.9 kernel pmap_activate_sw cpu_switch 0.9 kernel tcp_do_segment tcp_input_with_port 0.9 kernel bpf_mtap rge_tx_task 0.9 kernel sched_pickcpu sched_add 0.9 kernel copyin_smap_erms uiomove_faultflag 0.9 libc.so.7 bsearch 0xaf9f 0.8 kernel fpurestore_xrstor3264 fpu_activate_sw
| sys/dev/rge/if_rge_hw.c | ||
|---|---|---|
| 669 | It's from openbsd via what I gather is the realtek vendor driver. Let me update the copyright for everything. | |
| share/man/man4/rge.4 | ||
|---|---|---|
| 1 | This hyphen was only used for a long abandoned parser that never quite worked, and should have been removed from all the style guides. | |
| 3 | If you want you can just use SPDX, like is shown in style.9 or the FreeBSD license guide: https://docs.freebsd.org/en/articles/license-guide/ | |
| 32 | Adapter is kinda a useless word, and removing it brings the apropos listing down to 77 char to fit neatly on one line. | |