Fortinet white logo
Fortinet white logo

Administration Guide

Displaying detail Hardware NIC information

Displaying detail Hardware NIC information

Monitoring the hardware NIC is important because interface errors indicate data link or physical layer issues which may impact the performance of the FortiGate.

To monitor hardware network operations in the CLI:
diagnose hardware deviceinfo nic <interface>

or

diagnose netlink interface list <interface>
Sample output:

The following is sample output when the <interface> is set to port1:

# diagnose netlink interface list port1
if=port1 family=00 type=1 index=3 mtu=1500 link=0 master=0
flags=up broadcast run multicast
Qdisc=mq hw_addr=00:0c:29:fc:18:54 broadcast_addr=ff:ff:ff:ff:ff:ff
stat: rxp=61149 txp=81109 rxb=5839308 txb=52396373 rxe=0 txe=0 rxd=0 txd=0 mc=95 collision=0 @ time=1678486883
re: rxl=0 rxo=0 rxc=0 rxf=0 rxfi=0 rxm=0
te: txa=0 txc=0 txfi=0 txh=0 txw=0
misc rxc=0 txc=0
Field descriptions

The diagnose hardware deviceinfo nic and diagnose netlink interface list commands display lists of error names and values that are related to hardware.

The following table describes possible hardware errors:

Field

Description

Rx packets (rxp)

Number of received packets.

Tx packets (txp)

Number of transmitted packets.

Rx bytes (rxb)

Number of received bytes.

Tx bytes (txb)

Number of transmitted bytes.

Rx_Errors (rxe) = rx error count

Bad frame was marked as error by PHY.

Tx_Errors (txe) = Tx_Aborted_Errors

ECOL (Excessive Collisions Count); only valid in half-duplex mode.

Rx_CRC_Errors +

Rx_Length_Errors -

Rx_Align_Errors

This error is only valid in 10/100M mode.

Rx_Dropped (rxd) or

Rx_No_Buffer_Count

Running out of buffer space.

Tx_Dropped (txd)

Number of dropped packet.

Multicast (mc)

Number of multicast packets received.

Collisions

Total number of collisions experienced by the transmitter; valid in half-duplex mode.

Rx_Length_Errors (rxl)

Number of packets dropped due to invalid length.

Rx_Over_Errors (rxo)

Receive FIFO overflow event counter.

Rx_CRC_Errors (rxc)

Number of received packets with Frame CRC error.

Rx_Frame_Errors (rxf)

Same as Rx_Align_Errors. This error is only valid in 10/100M mode.

Rx_FIFO_Errors (rxfi)

Same as Rx_Missed_Errors - a missed packet count

Rx_Missed_Errors (rxm)

Equals Rx_FIFO_Errors + CEXTERR (Carrier Extension Error Count). Only valid in 1000M mode, which is marked by PHY.

Tx_Aborted_Errors (txa)

See Tx_Errors.

Tx_Carrier_Errors (txc)

The PHY should assert the internal carrier sense signal during every transmission. Failure to do so may indicate that the link has failed or the PHY has an incorrect link configuration. This register only increments if transmits are enabled. This register isn't valid in internal SerDes 1 mode (TBI mode for the 82544GC/EI) and is valid only when the Ethernet controller is operating at full duplex.

Tx_FIFO_Errors (txfi)

Number of Frame transmission error due to underflow.

Tx_Heartbeat_Errors (txh)

Number of heartbeat error.

Tx_Window_Errors (txw)

Late Collisions (LATECOL) Count

Late collisions are collisions that occur after 64-byte time into the transmission of the packet while working in 10 to 100 Mb/s data rate and 512-byte time into the transmission of the packet while working in the 1,000 Mb/s data rate. This register only increments if transmits are enabled and the device is in half-duplex mode.

Rx compressed (misc rxc)

Number of received compressed packets.

Tx compressed (misc txc)

Number of transmitted compressed packets.

Tx_Single_Collision_Frames

Counts the number of times that a successfully transmitted packet encountered a single collision.

The value increments only if transmits are enabled and the Ethernet controller is in half-duplex mode.

Tx_Multiple_Collision_Frames

A Multiple Collision Count which indicates the number of times that a transmit encountered more than one collision, but less than 16. The value increments only if transmits are enabled and the Ethernet controller is in half-duplex mode.

Tx_Deferred

Counts defer events.

A deferred event occurs when the transmitter cannot immediately send a packet due to:

  • The medium being busy because another device is transmitting.

  • The IPG timer has not expired.

  • Half-duplex deferral events are occurring.

  • XOFF frames are being received .

  • The link is not up.

This register only increments if transmits are enabled. This counter does not increment for streaming transmits that are deferred due to TX IPG.

Rx_Frame_Too_Longs

The Rx frame is oversized.

Rx_Frame_Too_Shorts

The Rx frame is too short.

Rx_Align_Errors

This error is only valid in 10/100M mode.

Symbol Error Count

Counts the number of symbol errors (SYMERRS) between reads.

The count increases for every bad symbol that's received, whether or not a packet is currently being received and whether or not the link is up. This register increments only in internal SerDes mode.

Specialized NIC interface diagnostics

Commands are available for displaying Forward Error Correction (FEC) status, RX/TX bits per second (bps), packets per second (pps), and host-level RX drop statistics in NIC interface diagnostics. This provides enhanced visibility to assist with debugging and performance analysis.

Note

This feature is currently only supported on FortiGate model 1801F and interfaces that support FEC CL91.

The diagnose hardware deviceinfo nic-details port<number> command was added to display the current FEC status. The following example demonstrates reviewing the FEC status for port 37.

# diagnose hardware deviceinfo nic-details port37
System time: Thu Jun 12 17:25:22 2025
                fec_stats_acc   changes         last change
corr codewds    :0               0               never
uncorr codewds  :0               0               never
lane 0          :0               0               never
lane 1          :0               0               never
lane 2          :0               0               never
lane 3          :0               0               never
FEC BER: 0.000000
FEC symbol err rate: 0.000000

The diagnose hardware deviceinfo nic port<number> command was updated to add additional counters for a debug-related analysis. The htx_drop, RX pps, Rx bps, Tx pps, and Tx bps counters have been added. The htx_drop counter indicates if there is an FCS, oversized, or jabber error.

The following example demonstrates reviewing the hardware NIC information for port17.

# diagnose hardware deviceinfo nic port17
Description     :FortiASIC NP7 Adapter
Driver Name     :FortiASIC Unified NPU Driver
pid             :17
oid             :145
vid             :18
macid           :16
eif_id          :127
promiscous      :1
local_port      :0
vlan_wa_done    :0
mtu             :9216
netdev oid      :145
dev-flags       :1903
dev-promis      :1
Current_HWaddr   e0:23:ff:50:31:6a
Permanent_HWaddr e0:23:ff:50:31:6a
==== Default Link Settings =====
auto-nego       :Disable
s_speed         :1000
s_duplex        :Full
==== Current Link Settings =====
auto-nego       :Enable
s_status        :Up
s_speed         :1000
s_duplex        :Full
FEC             :OFF (0x2)
FEC_cap         :None (0x0)
SerDes_if       :SGMII
SerDes_if_cap   :SGMII (0x4)
SerDes_dflt     :2
pm_mode_setting :0
pm_mode         :0x0
pm_mode_dflt    :0
pm_port         :No
medium_mode     :0
==== Link Status ===============
Admin           :Up
link_status     :Up
Speed           :1000
Duplex          :Full
==== Netdev Status =============
dev_running     :Yes
dev_carrier     :On
==== Host Counters =============
hrx_pkts        :233
hrx_bytes       :26831
htx_pkts        :1940
htx_bytes       :210405
htx_drop        :0
htx_e_busy      :0
htx_e_noheadroom:0
htx_e_oid       :0
htx_e_adapter   :0
htx_e_pad       :0
htx_e_frag      :0
htx_e_other     :0
==== Netdev Counters ===========
Rx Pkts         :233
Rx Bytes        :31025
Tx Pkts         :1939
Tx Bytes        :218713
Rx pps          :1
Rx bps          :1483
Tx pps          :1
Tx bps          :1313
==== Switch Poll Counters ======
sw_tx_pkts      :1939
sw_tx_bytes     :218713
sw_tx_bc_pkts   :0
sw_tx_mc_pkts   :0
sw_rx_pkts      :233
sw_rx_bytes     :31025
sw_rx_bc_bytes  :27
sw_rx_mc_bytes  :159
==== Switch Error Counters =====
rx_err          :0
rx_crc_err      :0
rx_len_err      :0
rx_carrier_err  :0
rx_over_err     :0
rx_under_err    :0
rx_drop_pkts    :0
tx_collision_err:0
tx_drop_pkts    :0
======Queue  Counters ===========
uc_que0_pkts    :0
uc_que1_pkts    :0
uc_que2_pkts    :0
uc_que3_pkts    :0
uc_que4_pkts    :0
uc_que5_pkts    :0
uc_que6_pkts    :0
uc_que7_pkts    :0
--------------------------------
uc_drop_que0_pkts:0
uc_drop_que1_pkts:0
uc_drop_que2_pkts:0
uc_drop_que3_pkts:0
uc_drop_que4_pkts:0
uc_drop_que5_pkts:0
uc_drop_que6_pkts:0
uc_drop_que7_pkts:0
==== Transceiver Info ==========
tx_disable      : N/A
rx_los          : N/A
tx_fault        : N/A
present         : N/A
last_spd        : 0

Displaying detail Hardware NIC information

Displaying detail Hardware NIC information

Monitoring the hardware NIC is important because interface errors indicate data link or physical layer issues which may impact the performance of the FortiGate.

To monitor hardware network operations in the CLI:
diagnose hardware deviceinfo nic <interface>

or

diagnose netlink interface list <interface>
Sample output:

The following is sample output when the <interface> is set to port1:

# diagnose netlink interface list port1
if=port1 family=00 type=1 index=3 mtu=1500 link=0 master=0
flags=up broadcast run multicast
Qdisc=mq hw_addr=00:0c:29:fc:18:54 broadcast_addr=ff:ff:ff:ff:ff:ff
stat: rxp=61149 txp=81109 rxb=5839308 txb=52396373 rxe=0 txe=0 rxd=0 txd=0 mc=95 collision=0 @ time=1678486883
re: rxl=0 rxo=0 rxc=0 rxf=0 rxfi=0 rxm=0
te: txa=0 txc=0 txfi=0 txh=0 txw=0
misc rxc=0 txc=0
Field descriptions

The diagnose hardware deviceinfo nic and diagnose netlink interface list commands display lists of error names and values that are related to hardware.

The following table describes possible hardware errors:

Field

Description

Rx packets (rxp)

Number of received packets.

Tx packets (txp)

Number of transmitted packets.

Rx bytes (rxb)

Number of received bytes.

Tx bytes (txb)

Number of transmitted bytes.

Rx_Errors (rxe) = rx error count

Bad frame was marked as error by PHY.

Tx_Errors (txe) = Tx_Aborted_Errors

ECOL (Excessive Collisions Count); only valid in half-duplex mode.

Rx_CRC_Errors +

Rx_Length_Errors -

Rx_Align_Errors

This error is only valid in 10/100M mode.

Rx_Dropped (rxd) or

Rx_No_Buffer_Count

Running out of buffer space.

Tx_Dropped (txd)

Number of dropped packet.

Multicast (mc)

Number of multicast packets received.

Collisions

Total number of collisions experienced by the transmitter; valid in half-duplex mode.

Rx_Length_Errors (rxl)

Number of packets dropped due to invalid length.

Rx_Over_Errors (rxo)

Receive FIFO overflow event counter.

Rx_CRC_Errors (rxc)

Number of received packets with Frame CRC error.

Rx_Frame_Errors (rxf)

Same as Rx_Align_Errors. This error is only valid in 10/100M mode.

Rx_FIFO_Errors (rxfi)

Same as Rx_Missed_Errors - a missed packet count

Rx_Missed_Errors (rxm)

Equals Rx_FIFO_Errors + CEXTERR (Carrier Extension Error Count). Only valid in 1000M mode, which is marked by PHY.

Tx_Aborted_Errors (txa)

See Tx_Errors.

Tx_Carrier_Errors (txc)

The PHY should assert the internal carrier sense signal during every transmission. Failure to do so may indicate that the link has failed or the PHY has an incorrect link configuration. This register only increments if transmits are enabled. This register isn't valid in internal SerDes 1 mode (TBI mode for the 82544GC/EI) and is valid only when the Ethernet controller is operating at full duplex.

Tx_FIFO_Errors (txfi)

Number of Frame transmission error due to underflow.

Tx_Heartbeat_Errors (txh)

Number of heartbeat error.

Tx_Window_Errors (txw)

Late Collisions (LATECOL) Count

Late collisions are collisions that occur after 64-byte time into the transmission of the packet while working in 10 to 100 Mb/s data rate and 512-byte time into the transmission of the packet while working in the 1,000 Mb/s data rate. This register only increments if transmits are enabled and the device is in half-duplex mode.

Rx compressed (misc rxc)

Number of received compressed packets.

Tx compressed (misc txc)

Number of transmitted compressed packets.

Tx_Single_Collision_Frames

Counts the number of times that a successfully transmitted packet encountered a single collision.

The value increments only if transmits are enabled and the Ethernet controller is in half-duplex mode.

Tx_Multiple_Collision_Frames

A Multiple Collision Count which indicates the number of times that a transmit encountered more than one collision, but less than 16. The value increments only if transmits are enabled and the Ethernet controller is in half-duplex mode.

Tx_Deferred

Counts defer events.

A deferred event occurs when the transmitter cannot immediately send a packet due to:

  • The medium being busy because another device is transmitting.

  • The IPG timer has not expired.

  • Half-duplex deferral events are occurring.

  • XOFF frames are being received .

  • The link is not up.

This register only increments if transmits are enabled. This counter does not increment for streaming transmits that are deferred due to TX IPG.

Rx_Frame_Too_Longs

The Rx frame is oversized.

Rx_Frame_Too_Shorts

The Rx frame is too short.

Rx_Align_Errors

This error is only valid in 10/100M mode.

Symbol Error Count

Counts the number of symbol errors (SYMERRS) between reads.

The count increases for every bad symbol that's received, whether or not a packet is currently being received and whether or not the link is up. This register increments only in internal SerDes mode.

Specialized NIC interface diagnostics

Commands are available for displaying Forward Error Correction (FEC) status, RX/TX bits per second (bps), packets per second (pps), and host-level RX drop statistics in NIC interface diagnostics. This provides enhanced visibility to assist with debugging and performance analysis.

Note

This feature is currently only supported on FortiGate model 1801F and interfaces that support FEC CL91.

The diagnose hardware deviceinfo nic-details port<number> command was added to display the current FEC status. The following example demonstrates reviewing the FEC status for port 37.

# diagnose hardware deviceinfo nic-details port37
System time: Thu Jun 12 17:25:22 2025
                fec_stats_acc   changes         last change
corr codewds    :0               0               never
uncorr codewds  :0               0               never
lane 0          :0               0               never
lane 1          :0               0               never
lane 2          :0               0               never
lane 3          :0               0               never
FEC BER: 0.000000
FEC symbol err rate: 0.000000

The diagnose hardware deviceinfo nic port<number> command was updated to add additional counters for a debug-related analysis. The htx_drop, RX pps, Rx bps, Tx pps, and Tx bps counters have been added. The htx_drop counter indicates if there is an FCS, oversized, or jabber error.

The following example demonstrates reviewing the hardware NIC information for port17.

# diagnose hardware deviceinfo nic port17
Description     :FortiASIC NP7 Adapter
Driver Name     :FortiASIC Unified NPU Driver
pid             :17
oid             :145
vid             :18
macid           :16
eif_id          :127
promiscous      :1
local_port      :0
vlan_wa_done    :0
mtu             :9216
netdev oid      :145
dev-flags       :1903
dev-promis      :1
Current_HWaddr   e0:23:ff:50:31:6a
Permanent_HWaddr e0:23:ff:50:31:6a
==== Default Link Settings =====
auto-nego       :Disable
s_speed         :1000
s_duplex        :Full
==== Current Link Settings =====
auto-nego       :Enable
s_status        :Up
s_speed         :1000
s_duplex        :Full
FEC             :OFF (0x2)
FEC_cap         :None (0x0)
SerDes_if       :SGMII
SerDes_if_cap   :SGMII (0x4)
SerDes_dflt     :2
pm_mode_setting :0
pm_mode         :0x0
pm_mode_dflt    :0
pm_port         :No
medium_mode     :0
==== Link Status ===============
Admin           :Up
link_status     :Up
Speed           :1000
Duplex          :Full
==== Netdev Status =============
dev_running     :Yes
dev_carrier     :On
==== Host Counters =============
hrx_pkts        :233
hrx_bytes       :26831
htx_pkts        :1940
htx_bytes       :210405
htx_drop        :0
htx_e_busy      :0
htx_e_noheadroom:0
htx_e_oid       :0
htx_e_adapter   :0
htx_e_pad       :0
htx_e_frag      :0
htx_e_other     :0
==== Netdev Counters ===========
Rx Pkts         :233
Rx Bytes        :31025
Tx Pkts         :1939
Tx Bytes        :218713
Rx pps          :1
Rx bps          :1483
Tx pps          :1
Tx bps          :1313
==== Switch Poll Counters ======
sw_tx_pkts      :1939
sw_tx_bytes     :218713
sw_tx_bc_pkts   :0
sw_tx_mc_pkts   :0
sw_rx_pkts      :233
sw_rx_bytes     :31025
sw_rx_bc_bytes  :27
sw_rx_mc_bytes  :159
==== Switch Error Counters =====
rx_err          :0
rx_crc_err      :0
rx_len_err      :0
rx_carrier_err  :0
rx_over_err     :0
rx_under_err    :0
rx_drop_pkts    :0
tx_collision_err:0
tx_drop_pkts    :0
======Queue  Counters ===========
uc_que0_pkts    :0
uc_que1_pkts    :0
uc_que2_pkts    :0
uc_que3_pkts    :0
uc_que4_pkts    :0
uc_que5_pkts    :0
uc_que6_pkts    :0
uc_que7_pkts    :0
--------------------------------
uc_drop_que0_pkts:0
uc_drop_que1_pkts:0
uc_drop_que2_pkts:0
uc_drop_que3_pkts:0
uc_drop_que4_pkts:0
uc_drop_que5_pkts:0
uc_drop_que6_pkts:0
uc_drop_que7_pkts:0
==== Transceiver Info ==========
tx_disable      : N/A
rx_los          : N/A
tx_fault        : N/A
present         : N/A
last_spd        : 0