We are seeing an Ethernet connectivity issue in our carrier board design. We connected the phy output through a 1:1 transformer Pulse HX5084NL to a Microchip KS9897R Ethernet switch on the same carrier board. Most of the time things are fine, but occasionally the link goes down for 3 seconds and comes back up intermittently. I need to know if there is some hardware issue I need to be looking for, or if this is a known issue with a workaround of some kind. Our interface operates at 1000Mb/sec and we need that to always operate at that speed for performance reasons.
I noticed others were having similar issues on the forum, but the results were not all posted at 1000Mb.
Here are the messages we get in the dmesg log:
[ 0.814972] eqos 2490000.ether_qos: Setting local MAC: 0 4 4b c4 8c a0
[ 10.909683] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 182.329696] eqos 2490000.ether_qos eth0: Link is Down
[ 185.512438] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 1167.301654] eqos 2490000.ether_qos eth0: Link is Down
[ 1170.521455] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 1238.145605] eqos 2490000.ether_qos eth0: Link is Down
[ 1241.201848] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control rx/tx
We checked the interface error counters with "ethtool -S eth0. Except for the disconnect/connect counts, we aren’t seeing ant error counts other than 0:
NIC statistics:
mmc_tx_octetcount_gb: 259504
mmc_tx_framecount_gb: 1300
mmc_tx_broadcastframe_g: 18
mmc_tx_multicastframe_g: 48
mmc_tx_64_octets_gb: 35
mmc_tx_65_to_127_octets_gb: 351
mmc_tx_128_to_255_octets_gb: 589
mmc_tx_256_to_511_octets_gb: 318
mmc_tx_512_to_1023_octets_gb: 5
mmc_tx_1024_to_max_octets_gb: 2
mmc_tx_unicast_gb: 1234
mmc_tx_multicast_gb: 48
mmc_tx_broadcast_gb: 18
mmc_tx_underflow_error: 0
mmc_tx_singlecol_g: 0
mmc_tx_multicol_g: 0
mmc_tx_deferred: 0
mmc_tx_latecol: 0
mmc_tx_exesscol: 0
mmc_tx_carrier_error: 0
mmc_tx_octetcount_g: 259504
mmc_tx_framecount_g: 1300
mmc_tx_excessdef: 0
mmc_tx_pause_frame: 0
mmc_tx_vlan_frame_g: 0
mmc_rx_framecount_gb: 1115
mmc_rx_octetcount_gb: 94042
mmc_rx_octetcount_g: 94042
mmc_rx_broadcastframe_g: 17
mmc_rx_multicastframe_g: 16
mmc_rx_crc_errror: 0
mmc_rx_align_error: 0
mmc_rx_run_error: 0
mmc_rx_jabber_error: 0
mmc_rx_undersize_g: 0
mmc_rx_oversize_g: 0
mmc_rx_64_octets_gb: 23
mmc_rx_65_to_127_octets_gb: 1078
mmc_rx_128_to_255_octets_gb: 6
mmc_rx_256_to_511_octets_gb: 4
mmc_rx_512_to_1023_octets_gb: 2
mmc_rx_1024_to_max_octets_gb: 2
mmc_rx_unicast_g: 1082
mmc_rx_length_error: 0
mmc_rx_outofrangetype: 0
mmc_rx_pause_frames: 0
mmc_rx_fifo_overflow: 0
mmc_rx_vlan_frames_gb: 0
mmc_rx_watchdog_error: 0
mmc_rx_ipc_intr_mask: 5368463355
mmc_rx_ipc_intr: 0
mmc_rx_ipv4_gd: 1092
mmc_rx_ipv4_hderr: 0
mmc_rx_ipv4_nopay: 0
mmc_rx_ipv4_frag: 0
mmc_rx_ipv4_udsbl: 0
mmc_rx_ipv6_gd_octets: 1024
mmc_rx_ipv6_hderr_octets: 0
mmc_rx_ipv6_nopay_octets: 0
mmc_rx_udp_gd: 32
mmc_rx_udp_err: 0
mmc_rx_tcp_gd: 1076
mmc_rx_tcp_err: 0
mmc_rx_icmp_gd: 0
mmc_rx_icmp_err: 0
mmc_rx_ipv4_gd_octets: 72594
mmc_rx_ipv4_hderr_octets: 0
mmc_rx_ipv4_nopay_octets: 0
mmc_rx_ipv4_frag_octets: 0
mmc_rx_ipv4_udsbl_octets: 0
mmc_rx_ipv6_gd: 16
mmc_rx_ipv6_hderr: 0
mmc_rx_ipv6_nopay: 0
mmc_rx_udp_gd_octets: 768
mmc_rx_udp_err_octets: 0
mmc_rx_tcp_gd_octets: 50370
mmc_rx_tcp_err_octets: 0
mmc_rx_icmp_gd_octets: 0
mmc_rx_icmp_err_octets: 0
q_re_alloc_rx_buf_failed[0]: 0
q_re_alloc_rx_buf_failed[1]: 0
q_re_alloc_rx_buf_failed[2]: 0
q_re_alloc_rx_buf_failed[3]: 0
q_re_alloc_rx_buf_failed[4]: 0
q_re_alloc_rx_buf_failed[5]: 0
q_re_alloc_rx_buf_failed[6]: 0
q_re_alloc_rx_buf_failed[7]: 0
tx_process_stopped_irq_n[0]: 0
tx_process_stopped_irq_n[1]: 0
tx_process_stopped_irq_n[2]: 0
tx_process_stopped_irq_n[3]: 0
tx_process_stopped_irq_n[4]: 0
tx_process_stopped_irq_n[5]: 0
tx_process_stopped_irq_n[6]: 0
tx_process_stopped_irq_n[7]: 0
rx_process_stopped_irq_n[0]: 0
rx_process_stopped_irq_n[1]: 0
rx_process_stopped_irq_n[2]: 0
rx_process_stopped_irq_n[3]: 0
rx_process_stopped_irq_n[4]: 0
rx_process_stopped_irq_n[5]: 0
rx_process_stopped_irq_n[6]: 0
rx_process_stopped_irq_n[7]: 0
tx_buf_unavailable_irq_n[0]: 0
tx_buf_unavailable_irq_n[1]: 0
tx_buf_unavailable_irq_n[2]: 0
tx_buf_unavailable_irq_n[3]: 0
tx_buf_unavailable_irq_n[4]: 0
tx_buf_unavailable_irq_n[5]: 0
tx_buf_unavailable_irq_n[6]: 0
tx_buf_unavailable_irq_n[7]: 0
rx_buf_unavailable_irq_n[0]: 0
rx_buf_unavailable_irq_n[1]: 0
rx_buf_unavailable_irq_n[2]: 0
rx_buf_unavailable_irq_n[3]: 0
rx_buf_unavailable_irq_n[4]: 0
rx_buf_unavailable_irq_n[5]: 0
rx_buf_unavailable_irq_n[6]: 0
rx_buf_unavailable_irq_n[7]: 0
rx_watchdog_irq_n: 0
fatal_bus_error_irq_n: 0
pmt_irq_n: 0
tx_normal_irq_n[0]: 1253
tx_normal_irq_n[1]: 0
tx_normal_irq_n[2]: 0
tx_normal_irq_n[3]: 0
tx_normal_irq_n[4]: 0
tx_normal_irq_n[5]: 0
tx_normal_irq_n[6]: 0
tx_normal_irq_n[7]: 0
rx_normal_irq_n[0]: 1024
rx_normal_irq_n[1]: 0
rx_normal_irq_n[2]: 0
rx_normal_irq_n[3]: 0
rx_normal_irq_n[4]: 0
rx_normal_irq_n[5]: 0
rx_normal_irq_n[6]: 0
rx_normal_irq_n[7]: 0
napi_poll_n: 2121
tx_clean_n[0]: 2121
tx_clean_n[1]: 0
tx_clean_n[2]: 0
tx_clean_n[3]: 0
tx_clean_n[4]: 0
tx_clean_n[5]: 0
tx_clean_n[6]: 0
tx_clean_n[7]: 0
tx_path_in_lpi_mode_irq_n: 69
tx_path_exit_lpi_mode_irq_n: 69
rx_path_in_lpi_mode_irq_n: 767
rx_path_exit_lpi_mode_irq_n: 767
tx_pkt_n: 1300
rx_pkt_n: 1115
tx_vlan_pkt_n: 0
rx_vlan_pkt_n: 0
tx_timestamp_captured_n: 0
rx_timestamp_captured_n: 0
tx_tso_pkt_n: 0
q_tx_pkt_n[0]: 1300
q_tx_pkt_n[1]: 0
q_tx_pkt_n[2]: 0
q_tx_pkt_n[3]: 0
q_tx_pkt_n[4]: 0
q_tx_pkt_n[5]: 0
q_tx_pkt_n[6]: 0
q_tx_pkt_n[7]: 0
q_rx_pkt_n[0]: 1115
q_rx_pkt_n[1]: 0
q_rx_pkt_n[2]: 0
q_rx_pkt_n[3]: 0
q_rx_pkt_n[4]: 0
q_rx_pkt_n[5]: 0
q_rx_pkt_n[6]: 0
q_rx_pkt_n[7]: 0
link_disconnect_count: 3
link_connect_count: 4