On 8/6/2022 3:04 PM, Jim King wrote:
On 8/5/2022 12:47 PM, mike tancsa wrote:
On 8/5/2022 11:41 AM, Jim King wrote:
If I fiddle with the Flow Control settings it seems to make a
difference. I can do it without bouncing the link. I wonder what
the Linux driver has as default ?
ie.
sysctl -w dev.igc.1.fc=1
sysctl -w dev.igc.0.fc=1
Does it help in your case ?
Thanks for the suggestion. Unfortunately it doesn't seem to help in
my case. All four values for flow control give pretty much the same
results with my iperf test.
Are you able to boot a RELENG_13 stable kernel and test ? I am using
a stable kernel from a couple of days ago and setting the fc=0 (you
set that on all nics right ?) does work for me both at 2.5G and 1G.
Leaving the default causes the nic to bounce on my test boxes. I dont
see any obvious big changes in the driver itself since 13.1 came out
so I am guessing something else fixed or worked around this bug ?
I build stable/13 from yesterday and still haven't found a working
configuration. When I turn off Flow Control on both NICs my first
iperf test always causes the NIC to bounce, and sometimes subsequent
tests will work OK, but only sometimes. Most of the time the
subsequent iperf runs also cause the NIC to bounce.
I also tried -rxcsum and -txcsum on the NIC, which had no effect.
I let my unit run over night and it as well saw some drops. I wonder if
the relatively underpowered CPU doesnt generate enough traffic to cause
it to bounce as often? Not sure if there is anything in the sysctl logs
or not, but this is a before and after below. I guess I will open a PR.
Not sure if this driver is managed by Intel or not. I think the netgate
people did it initially
root@topton1:/var/tmp/reports # diff -u 1659776941b 1659777187a
--- 1659776941b 2022-08-06 05:11:03.514094000 -0400
+++ 1659777187a 2022-08-06 05:14:09.675013000 -0400
@@ -1,35 +1,35 @@
dev.igc.1.wake: 0
dev.igc.1.interrupts.rx_desc_min_thresh: 0
-dev.igc.1.interrupts.asserts: 704721082
-dev.igc.1.mac_stats.tso_txd: 400062204
-dev.igc.1.mac_stats.tx_frames_1024_1522: 4870151883
-dev.igc.1.mac_stats.tx_frames_512_1023: 38990
-dev.igc.1.mac_stats.tx_frames_256_511: 17758
-dev.igc.1.mac_stats.tx_frames_128_255: 4764
-dev.igc.1.mac_stats.tx_frames_65_127: 569597300
-dev.igc.1.mac_stats.tx_frames_64: 36196
+dev.igc.1.interrupts.asserts: 707056694
+dev.igc.1.mac_stats.tso_txd: 400573812
+dev.igc.1.mac_stats.tx_frames_1024_1522: 4882409702
+dev.igc.1.mac_stats.tx_frames_512_1023: 38993
+dev.igc.1.mac_stats.tx_frames_256_511: 17762
+dev.igc.1.mac_stats.tx_frames_128_255: 4769
+dev.igc.1.mac_stats.tx_frames_65_127: 572463728
+dev.igc.1.mac_stats.tx_frames_64: 36307
dev.igc.1.mac_stats.mcast_pkts_txd: 0
dev.igc.1.mac_stats.bcast_pkts_txd: 30
-dev.igc.1.mac_stats.good_pkts_txd: 5439846882
-dev.igc.1.mac_stats.total_pkts_txd: 5439846888
-dev.igc.1.mac_stats.good_octets_txd: 7432797311490
-dev.igc.1.mac_stats.good_octets_recvd: 7400832173605
-dev.igc.1.mac_stats.rx_frames_1024_1522: 4849042867
-dev.igc.1.mac_stats.rx_frames_512_1023: 62119
-dev.igc.1.mac_stats.rx_frames_256_511: 28123
-dev.igc.1.mac_stats.rx_frames_128_255: 5910
-dev.igc.1.mac_stats.rx_frames_65_127: 570440786
-dev.igc.1.mac_stats.rx_frames_64: 49169
+dev.igc.1.mac_stats.good_pkts_txd: 5454971260
+dev.igc.1.mac_stats.total_pkts_txd: 5454971261
+dev.igc.1.mac_stats.good_octets_txd: 7451605352901
+dev.igc.1.mac_stats.good_octets_recvd: 7435895205487
+dev.igc.1.mac_stats.rx_frames_1024_1522: 4872086268
+dev.igc.1.mac_stats.rx_frames_512_1023: 64952
+dev.igc.1.mac_stats.rx_frames_256_511: 29389
+dev.igc.1.mac_stats.rx_frames_128_255: 6311
+dev.igc.1.mac_stats.rx_frames_65_127: 571594440
+dev.igc.1.mac_stats.rx_frames_64: 49437
dev.igc.1.mac_stats.mcast_pkts_recvd: 0
dev.igc.1.mac_stats.bcast_pkts_recvd: 19
-dev.igc.1.mac_stats.good_pkts_recvd: 5419628981
-dev.igc.1.mac_stats.total_pkts_recvd: 5419629039
+dev.igc.1.mac_stats.good_pkts_recvd: 5443830806
+dev.igc.1.mac_stats.total_pkts_recvd: 5443830878
dev.igc.1.mac_stats.xoff_txd: 0
dev.igc.1.mac_stats.xoff_recvd: 14
dev.igc.1.mac_stats.xon_txd: 0
dev.igc.1.mac_stats.xon_recvd: 0
dev.igc.1.mac_stats.alignment_errs: 0
-dev.igc.1.mac_stats.crc_errs: 6
+dev.igc.1.mac_stats.crc_errs: 8
dev.igc.1.mac_stats.recv_errs: 0
dev.igc.1.mac_stats.recv_jabber: 0
dev.igc.1.mac_stats.recv_oversize: 0
@@ -40,43 +40,43 @@
dev.igc.1.mac_stats.defer_count: 0
dev.igc.1.mac_stats.sequence_errors: 0
dev.igc.1.mac_stats.symbol_errors: 0
-dev.igc.1.mac_stats.collision_count: 6
+dev.igc.1.mac_stats.collision_count: 8
dev.igc.1.mac_stats.late_coll: 0
dev.igc.1.mac_stats.multiple_coll: 0
dev.igc.1.mac_stats.single_coll: 0
dev.igc.1.mac_stats.excess_coll: 0
dev.igc.1.queue_rx_3.rx_irq: 0
-dev.igc.1.queue_rx_3.rxd_tail: 907
-dev.igc.1.queue_rx_3.rxd_head: 908
+dev.igc.1.queue_rx_3.rxd_tail: 128
+dev.igc.1.queue_rx_3.rxd_head: 0
dev.igc.1.queue_rx_2.rx_irq: 0
-dev.igc.1.queue_rx_2.rxd_tail: 809
-dev.igc.1.queue_rx_2.rxd_head: 812
+dev.igc.1.queue_rx_2.rxd_tail: 722
+dev.igc.1.queue_rx_2.rxd_head: 723
dev.igc.1.queue_rx_1.rx_irq: 0
-dev.igc.1.queue_rx_1.rxd_tail: 401
-dev.igc.1.queue_rx_1.rxd_head: 402
+dev.igc.1.queue_rx_1.rxd_tail: 83
+dev.igc.1.queue_rx_1.rxd_head: 84
dev.igc.1.queue_rx_0.rx_irq: 0
-dev.igc.1.queue_rx_0.rxd_tail: 521
-dev.igc.1.queue_rx_0.rxd_head: 522
+dev.igc.1.queue_rx_0.rxd_tail: 228
+dev.igc.1.queue_rx_0.rxd_head: 229
dev.igc.1.queue_tx_3.tx_irq: 0
-dev.igc.1.queue_tx_3.txd_tail: 1023
-dev.igc.1.queue_tx_3.txd_head: 1023
+dev.igc.1.queue_tx_3.txd_tail: 750
+dev.igc.1.queue_tx_3.txd_head: 750
dev.igc.1.queue_tx_2.tx_irq: 0
-dev.igc.1.queue_tx_2.txd_tail: 770
-dev.igc.1.queue_tx_2.txd_head: 914
+dev.igc.1.queue_tx_2.txd_tail: 116
+dev.igc.1.queue_tx_2.txd_head: 116
dev.igc.1.queue_tx_1.tx_irq: 0
-dev.igc.1.queue_tx_1.txd_tail: 184
-dev.igc.1.queue_tx_1.txd_head: 643
+dev.igc.1.queue_tx_1.txd_tail: 347
+dev.igc.1.queue_tx_1.txd_head: 347
dev.igc.1.queue_tx_0.tx_irq: 0
-dev.igc.1.queue_tx_0.txd_tail: 210
-dev.igc.1.queue_tx_0.txd_head: 210
+dev.igc.1.queue_tx_0.txd_tail: 17
+dev.igc.1.queue_tx_0.txd_head: 17
dev.igc.1.fc_low_water: 32752
dev.igc.1.fc_high_water: 32768
dev.igc.1.rx_control: 71335966
dev.igc.1.device_control: 404489793
dev.igc.1.watchdog_timeouts: 0
dev.igc.1.rx_overruns: 0
-dev.igc.1.link_irq: 38
-dev.igc.1.dropped: 6
+dev.igc.1.link_irq: 42
+dev.igc.1.dropped: 8
dev.igc.1.eee_control: 1
dev.igc.1.itr: 488
dev.igc.1.tx_abs_int_delay: 66
@@ -90,13 +90,13 @@
CTRL_EXIT 10000040
Interrupt Registers
- ICR 00000001
+ ICR 00000000
RX Registers
RCTL 0440801e
RDLEN 00004000
- RDH 0000020a
- RDT 00000209
+ RDH 000000e5
+ RDT 000000e4
RXDCTL 02040808
RDBAL 02f44000
RDBAH 00000000
@@ -106,8 +106,8 @@
TDBAL 02f06000
TDBAH 00000000
TDLEN 00004000
- TDH 000000d2
- TDT 000000d2
+ TDH 00000011
+ TDT 00000011
TXDCTL 0201011f
TDFH 00000000
TDFT 00000000
@@ -119,38 +119,38 @@
dev.igc.1.debug: -1
dev.igc.1.nvm: -1
dev.igc.1.iflib.rxq3.rxq_fl0.buf_size: 2048
-dev.igc.1.iflib.rxq3.rxq_fl0.credits: 1023
-dev.igc.1.iflib.rxq3.rxq_fl0.cidx: 908
-dev.igc.1.iflib.rxq3.rxq_fl0.pidx: 907
+dev.igc.1.iflib.rxq3.rxq_fl0.credits: 128
+dev.igc.1.iflib.rxq3.rxq_fl0.cidx: 0
+dev.igc.1.iflib.rxq3.rxq_fl0.pidx: 128
dev.igc.1.iflib.rxq3.cpu: 3
dev.igc.1.iflib.rxq2.rxq_fl0.buf_size: 2048
dev.igc.1.iflib.rxq2.rxq_fl0.credits: 1023
-dev.igc.1.iflib.rxq2.rxq_fl0.cidx: 827
-dev.igc.1.iflib.rxq2.rxq_fl0.pidx: 826
+dev.igc.1.iflib.rxq2.rxq_fl0.cidx: 723
+dev.igc.1.iflib.rxq2.rxq_fl0.pidx: 722
dev.igc.1.iflib.rxq2.cpu: 2
dev.igc.1.iflib.rxq1.rxq_fl0.buf_size: 2048
dev.igc.1.iflib.rxq1.rxq_fl0.credits: 1023
-dev.igc.1.iflib.rxq1.rxq_fl0.cidx: 414
-dev.igc.1.iflib.rxq1.rxq_fl0.pidx: 413
+dev.igc.1.iflib.rxq1.rxq_fl0.cidx: 84
+dev.igc.1.iflib.rxq1.rxq_fl0.pidx: 83
dev.igc.1.iflib.rxq1.cpu: 1
dev.igc.1.iflib.rxq0.rxq_fl0.buf_size: 2048
dev.igc.1.iflib.rxq0.rxq_fl0.credits: 1023
-dev.igc.1.iflib.rxq0.rxq_fl0.cidx: 522
-dev.igc.1.iflib.rxq0.rxq_fl0.pidx: 521
+dev.igc.1.iflib.rxq0.rxq_fl0.cidx: 229
+dev.igc.1.iflib.rxq0.rxq_fl0.pidx: 228
dev.igc.1.iflib.rxq0.cpu: 0
dev.igc.1.iflib.txq3.r_abdications: 0
-dev.igc.1.iflib.txq3.r_restarts: 185763
-dev.igc.1.iflib.txq3.r_stalls: 185763
-dev.igc.1.iflib.txq3.r_starts: 22126656
+dev.igc.1.iflib.txq3.r_restarts: 0
+dev.igc.1.iflib.txq3.r_stalls: 0
+dev.igc.1.iflib.txq3.r_starts: 104312
dev.igc.1.iflib.txq3.r_drops: 0
-dev.igc.1.iflib.txq3.r_enqueues: 23334820
-dev.igc.1.iflib.txq3.ring_state: pidx_head: 0430 pidx_tail: 0430 cidx:
0430 state: IDLE
-dev.igc.1.iflib.txq3.txq_cleaned: 106314707
-dev.igc.1.iflib.txq3.txq_processed: 106314747
+dev.igc.1.iflib.txq3.r_enqueues: 104513
+dev.igc.1.iflib.txq3.ring_state: pidx_head: 1960 pidx_tail: 1960 cidx:
1960 state: IDLE
+dev.igc.1.iflib.txq3.txq_cleaned: 208578
+dev.igc.1.iflib.txq3.txq_processed: 208618
dev.igc.1.iflib.txq3.txq_in_use: 44
-dev.igc.1.iflib.txq3.txq_cidx_processed: 1019
-dev.igc.1.iflib.txq3.txq_cidx: 979
-dev.igc.1.iflib.txq3.txq_pidx: 1023
+dev.igc.1.iflib.txq3.txq_cidx_processed: 746
+dev.igc.1.iflib.txq3.txq_cidx: 706
+dev.igc.1.iflib.txq3.txq_pidx: 750
dev.igc.1.iflib.txq3.no_tx_dma_setup: 0
dev.igc.1.iflib.txq3.txd_encap_efbig: 0
dev.igc.1.iflib.txq3.tx_map_failed: 0
@@ -160,18 +160,18 @@
dev.igc.1.iflib.txq3.mbuf_defrag: 0
dev.igc.1.iflib.txq3.cpu: 3
dev.igc.1.iflib.txq2.r_abdications: 0
-dev.igc.1.iflib.txq2.r_restarts: 360876
-dev.igc.1.iflib.txq2.r_stalls: 360877
-dev.igc.1.iflib.txq2.r_starts: 24509109
+dev.igc.1.iflib.txq2.r_restarts: 0
+dev.igc.1.iflib.txq2.r_stalls: 0
+dev.igc.1.iflib.txq2.r_starts: 99386
dev.igc.1.iflib.txq2.r_drops: 0
-dev.igc.1.iflib.txq2.r_enqueues: 26698302
-dev.igc.1.iflib.txq2.ring_state: pidx_head: 0070 pidx_tail: 0070 cidx:
1883 state: STALLED
-dev.igc.1.iflib.txq2.txq_cleaned: 96507779
-dev.igc.1.iflib.txq2.txq_processed: 96507819
-dev.igc.1.iflib.txq2.txq_in_use: 987
-dev.igc.1.iflib.txq2.txq_cidx_processed: 939
-dev.igc.1.iflib.txq2.txq_cidx: 899
-dev.igc.1.iflib.txq2.txq_pidx: 862
+dev.igc.1.iflib.txq2.r_enqueues: 99386
+dev.igc.1.iflib.txq2.ring_state: pidx_head: 0394 pidx_tail: 0394 cidx:
0394 state: IDLE
+dev.igc.1.iflib.txq2.txq_cleaned: 198730
+dev.igc.1.iflib.txq2.txq_processed: 198770
+dev.igc.1.iflib.txq2.txq_in_use: 42
+dev.igc.1.iflib.txq2.txq_cidx_processed: 114
+dev.igc.1.iflib.txq2.txq_cidx: 74
+dev.igc.1.iflib.txq2.txq_pidx: 116
dev.igc.1.iflib.txq2.no_tx_dma_setup: 0
dev.igc.1.iflib.txq2.txd_encap_efbig: 0
dev.igc.1.iflib.txq2.tx_map_failed: 0
@@ -181,18 +181,18 @@
dev.igc.1.iflib.txq2.mbuf_defrag: 0
dev.igc.1.iflib.txq2.cpu: 2
dev.igc.1.iflib.txq1.r_abdications: 0
-dev.igc.1.iflib.txq1.r_restarts: 1133594
-dev.igc.1.iflib.txq1.r_stalls: 1133594
-dev.igc.1.iflib.txq1.r_starts: 19099238
+dev.igc.1.iflib.txq1.r_restarts: 0
+dev.igc.1.iflib.txq1.r_stalls: 0
+dev.igc.1.iflib.txq1.r_starts: 751030
dev.igc.1.iflib.txq1.r_drops: 0
-dev.igc.1.iflib.txq1.r_enqueues: 26635148
-dev.igc.1.iflib.txq1.ring_state: pidx_head: 0088 pidx_tail: 0088 cidx:
0088 state: IDLE
-dev.igc.1.iflib.txq1.txq_cleaned: 134333877
-dev.igc.1.iflib.txq1.txq_processed: 134333917
-dev.igc.1.iflib.txq1.txq_in_use: 771
-dev.igc.1.iflib.txq1.txq_cidx_processed: 477
-dev.igc.1.iflib.txq1.txq_cidx: 437
-dev.igc.1.iflib.txq1.txq_pidx: 184
+dev.igc.1.iflib.txq1.r_enqueues: 751120
+dev.igc.1.iflib.txq1.ring_state: pidx_head: 0145 pidx_tail: 0145 cidx:
0145 state: IDLE
+dev.igc.1.iflib.txq1.txq_cleaned: 6523185
+dev.igc.1.iflib.txq1.txq_processed: 6523225
+dev.igc.1.iflib.txq1.txq_in_use: 42
+dev.igc.1.iflib.txq1.txq_cidx_processed: 345
+dev.igc.1.iflib.txq1.txq_cidx: 305
+dev.igc.1.iflib.txq1.txq_pidx: 347
dev.igc.1.iflib.txq1.no_tx_dma_setup: 0
dev.igc.1.iflib.txq1.txd_encap_efbig: 0
dev.igc.1.iflib.txq1.tx_map_failed: 0
@@ -202,18 +202,18 @@
dev.igc.1.iflib.txq1.mbuf_defrag: 0
dev.igc.1.iflib.txq1.cpu: 1
dev.igc.1.iflib.txq0.r_abdications: 0
-dev.igc.1.iflib.txq0.r_restarts: 825923
-dev.igc.1.iflib.txq0.r_stalls: 825923
-dev.igc.1.iflib.txq0.r_starts: 31553019
+dev.igc.1.iflib.txq0.r_restarts: 0
+dev.igc.1.iflib.txq0.r_stalls: 0
+dev.igc.1.iflib.txq0.r_starts: 8
dev.igc.1.iflib.txq0.r_drops: 0
-dev.igc.1.iflib.txq0.r_enqueues: 37045348
-dev.igc.1.iflib.txq0.ring_state: pidx_head: 1471 pidx_tail: 1471 cidx:
1471 state: IDLE
-dev.igc.1.iflib.txq0.txq_cleaned: 153006246
-dev.igc.1.iflib.txq0.txq_processed: 153006286
-dev.igc.1.iflib.txq0.txq_in_use: 44
-dev.igc.1.iflib.txq0.txq_cidx_processed: 206
-dev.igc.1.iflib.txq0.txq_cidx: 166
-dev.igc.1.iflib.txq0.txq_pidx: 210
+dev.igc.1.iflib.txq0.r_enqueues: 8
+dev.igc.1.iflib.txq0.ring_state: pidx_head: 0816 pidx_tail: 0816 cidx:
0816 state: IDLE
+dev.igc.1.iflib.txq0.txq_cleaned: 0
+dev.igc.1.iflib.txq0.txq_processed: 15
+dev.igc.1.iflib.txq0.txq_in_use: 17
+dev.igc.1.iflib.txq0.txq_cidx_processed: 15
+dev.igc.1.iflib.txq0.txq_cidx: 0
+dev.igc.1.iflib.txq0.txq_pidx: 17
dev.igc.1.iflib.txq0.no_tx_dma_setup: 0
dev.igc.1.iflib.txq0.txd_encap_efbig: 0
dev.igc.1.iflib.txq0.tx_map_failed: 0