xref: /linux/Documentation/networking/diagnostic/twisted_pair_layer1_diagnostics.rst (revision 1260ed77798502de9c98020040d2995008de10cc)
1e793b86aSOleksij Rempel.. SPDX-License-Identifier: GPL-2.0
2e793b86aSOleksij Rempel
3e793b86aSOleksij RempelDiagnostic Concept for Investigating Twisted Pair Ethernet Variants at OSI Layer 1
4e793b86aSOleksij Rempel==================================================================================
5e793b86aSOleksij Rempel
6e793b86aSOleksij RempelIntroduction
7e793b86aSOleksij Rempel------------
8e793b86aSOleksij Rempel
9e793b86aSOleksij RempelThis documentation is designed for two primary audiences:
10e793b86aSOleksij Rempel
11e793b86aSOleksij Rempel1. **Users and System Administrators**: For those dealing with real-world
12e793b86aSOleksij Rempel   Ethernet issues, this guide provides a practical, step-by-step
13e793b86aSOleksij Rempel   troubleshooting flow to help identify and resolve common problems in Twisted
14e793b86aSOleksij Rempel   Pair Ethernet at OSI Layer 1. If you're facing unstable links, speed drops,
15e793b86aSOleksij Rempel   or mysterious network issues, jump right into the step-by-step guide and
16e793b86aSOleksij Rempel   follow it through to find your solution.
17e793b86aSOleksij Rempel
18e793b86aSOleksij Rempel2. **Kernel Developers**: For developers working with network drivers and PHY
19e793b86aSOleksij Rempel   support, this documentation outlines the diagnostic process and highlights
20e793b86aSOleksij Rempel   areas where the Linux kernel’s diagnostic interfaces could be extended or
21e793b86aSOleksij Rempel   improved. By understanding the diagnostic flow, developers can better
22e793b86aSOleksij Rempel   prioritize future enhancements.
23e793b86aSOleksij Rempel
24e793b86aSOleksij RempelStep-by-Step Diagnostic Guide from Linux (General Ethernet)
25e793b86aSOleksij Rempel-----------------------------------------------------------
26e793b86aSOleksij Rempel
27e793b86aSOleksij RempelThis diagnostic guide covers common Ethernet troubleshooting scenarios,
28e793b86aSOleksij Rempelfocusing on **link stability and detection** across different Ethernet
29e793b86aSOleksij Rempelenvironments, including **Single-Pair Ethernet (SPE)** and **Multi-Pair
30e793b86aSOleksij RempelEthernet (MPE)**, as well as power delivery technologies like **PoDL** (Power
31e793b86aSOleksij Rempelover Data Line) and **PoE** (Clause 33 PSE).
32e793b86aSOleksij Rempel
33e793b86aSOleksij RempelThe guide is designed to help users diagnose physical layer (Layer 1) issues on
34e793b86aSOleksij Rempelsystems running **Linux kernel version 6.11 or newer**, utilizing **ethtool
35e793b86aSOleksij Rempelversion 6.10 or later** and **iproute2 version 6.4.0 or later**.
36e793b86aSOleksij Rempel
37e793b86aSOleksij RempelIn this guide, we assume that users may have **limited or no access to the link
38e793b86aSOleksij Rempelpartner** and will focus on diagnosing issues locally.
39e793b86aSOleksij Rempel
40e793b86aSOleksij RempelDiagnostic Scenarios
41e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~
42e793b86aSOleksij Rempel
43e793b86aSOleksij Rempel- **Link is up and stable, but no data transfer**: If the link is stable but
44e793b86aSOleksij Rempel  there are issues with data transmission, refer to the **OSI Layer 2
45e793b86aSOleksij Rempel  Troubleshooting Guide**.
46e793b86aSOleksij Rempel
47e793b86aSOleksij Rempel- **Link is unstable**: Link resets, speed drops, or other fluctuations
48e793b86aSOleksij Rempel  indicate potential issues at the hardware or physical layer.
49e793b86aSOleksij Rempel
50e793b86aSOleksij Rempel- **No link detected**: The interface is up, but no link is established.
51e793b86aSOleksij Rempel
52e793b86aSOleksij RempelVerify Interface Status
53e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~~~~
54e793b86aSOleksij Rempel
55e793b86aSOleksij RempelBegin by verifying the status of the Ethernet interface to check if it is
56e793b86aSOleksij Rempeladministratively up. Unlike `ethtool`, which provides information on the link
57e793b86aSOleksij Rempeland PHY status, it does not show the **administrative state** of the interface.
58e793b86aSOleksij RempelTo check this, you should use the `ip` command, which describes the interface
59e793b86aSOleksij Rempelstate within the angle brackets `"<>"` in its output.
60e793b86aSOleksij Rempel
61e793b86aSOleksij RempelFor example, in the output `<NO-CARRIER,BROADCAST,MULTICAST,UP>`, the important
62e793b86aSOleksij Rempelkeywords are:
63e793b86aSOleksij Rempel
64e793b86aSOleksij Rempel- **UP**: The interface is in the administrative "UP" state.
65e793b86aSOleksij Rempel- **NO-CARRIER**: The interface is administratively up, but no physical link is
66e793b86aSOleksij Rempel  detected.
67e793b86aSOleksij Rempel
68e793b86aSOleksij RempelIf the output shows `<BROADCAST,MULTICAST>`, this indicates the interface is in
69e793b86aSOleksij Rempelthe administrative "DOWN" state.
70e793b86aSOleksij Rempel
71e793b86aSOleksij Rempel- **Command:** `ip link show dev <interface>`
72e793b86aSOleksij Rempel
73e793b86aSOleksij Rempel- **Expected Output:**
74e793b86aSOleksij Rempel
75e793b86aSOleksij Rempel  .. code-block:: bash
76e793b86aSOleksij Rempel
77e793b86aSOleksij Rempel     4: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 ...
78e793b86aSOleksij Rempel        link/ether 88:14:2b:00:96:f2 brd ff:ff:ff:ff:ff:ff
79e793b86aSOleksij Rempel
80e793b86aSOleksij Rempel- **Interpreting the Output:**
81e793b86aSOleksij Rempel
82e793b86aSOleksij Rempel  - **Administrative UP State**:
83e793b86aSOleksij Rempel
84e793b86aSOleksij Rempel    - If the output contains **"UP"**, the interface is administratively up,
85e793b86aSOleksij Rempel      and the system is trying to establish a physical link.
86e793b86aSOleksij Rempel
87e793b86aSOleksij Rempel    - If you also see **"NO-CARRIER"**, it means the physical link has not been
88e793b86aSOleksij Rempel      detected, indicating potential Layer 1 issues like a cable fault,
89e793b86aSOleksij Rempel      misconfiguration, or no connection at the link partner. In this case,
90e793b86aSOleksij Rempel      proceed to the **Inspect Link Status and PHY Configuration** section.
91e793b86aSOleksij Rempel
92e793b86aSOleksij Rempel  - **Administrative DOWN State**:
93e793b86aSOleksij Rempel
94e793b86aSOleksij Rempel    - If the output lacks **"UP"** and shows only states like
95e793b86aSOleksij Rempel      **"<BROADCAST,MULTICAST>"**, it means the interface is administratively
96e793b86aSOleksij Rempel      down. In this case, bring the interface up using the following command:
97e793b86aSOleksij Rempel
98e793b86aSOleksij Rempel      .. code-block:: bash
99e793b86aSOleksij Rempel
100e793b86aSOleksij Rempel         ip link set dev <interface> up
101e793b86aSOleksij Rempel
102e793b86aSOleksij Rempel- **Next Steps**:
103e793b86aSOleksij Rempel
104e793b86aSOleksij Rempel  - If the interface is **administratively up** but shows **NO-CARRIER**,
105e793b86aSOleksij Rempel    proceed to the **Inspect Link Status and PHY Configuration** section to
106e793b86aSOleksij Rempel    troubleshoot potential physical layer issues.
107e793b86aSOleksij Rempel
108e793b86aSOleksij Rempel  - If the interface was **administratively down** and you have brought it up,
109e793b86aSOleksij Rempel    ensure to **repeat this verification step** to confirm the new state of the
110e793b86aSOleksij Rempel    interface before proceeding
111e793b86aSOleksij Rempel
112e793b86aSOleksij Rempel  - **If the interface is up and the link is detected**:
113e793b86aSOleksij Rempel
114e793b86aSOleksij Rempel    - If the output shows **"UP"** and there is **no `NO-CARRIER`**, the
115e793b86aSOleksij Rempel      interface is administratively up, and the physical link has been
116e793b86aSOleksij Rempel      successfully established. If everything is working as expected, the Layer
117e793b86aSOleksij Rempel      1 diagnostics are complete, and no further action is needed.
118e793b86aSOleksij Rempel
119e793b86aSOleksij Rempel    - If the interface is up and the link is detected but **no data is being
120e793b86aSOleksij Rempel      transferred**, the issue is likely beyond Layer 1, and you should proceed
121e793b86aSOleksij Rempel      with diagnosing the higher layers of the OSI model. This may involve
122e793b86aSOleksij Rempel      checking Layer 2 configurations (such as VLANs or MAC address issues),
123e793b86aSOleksij Rempel      Layer 3 settings (like IP addresses, routing, or ARP), or Layer 4 and
124e793b86aSOleksij Rempel      above (firewalls, services, etc.).
125e793b86aSOleksij Rempel
126e793b86aSOleksij Rempel    - If the **link is unstable** or **frequently resetting or dropping**, this
127e793b86aSOleksij Rempel      may indicate a physical layer issue such as a faulty cable, interference,
128e793b86aSOleksij Rempel      or power delivery problems. In this case, proceed with the next step in
129e793b86aSOleksij Rempel      this guide.
130e793b86aSOleksij Rempel
131e793b86aSOleksij RempelInspect Link Status and PHY Configuration
132e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133e793b86aSOleksij Rempel
134e793b86aSOleksij RempelUse `ethtool -I` to check the link status, PHY configuration, supported link
135e793b86aSOleksij Rempelmodes, and additional statistics such as the **Link Down Events** counter. This
136e793b86aSOleksij Rempelstep is essential for diagnosing Layer 1 problems such as speed mismatches,
137e793b86aSOleksij Rempelduplex issues, and link instability.
138e793b86aSOleksij Rempel
139e793b86aSOleksij RempelFor both **Single-Pair Ethernet (SPE)** and **Multi-Pair Ethernet (MPE)**
140e793b86aSOleksij Rempeldevices, you will use this step to gather key details about the link. **SPE**
141e793b86aSOleksij Rempellinks generally support a single speed and mode without autonegotiation (with
142e793b86aSOleksij Rempelthe exception of **10BaseT1L**), while **MPE** devices typically support
143e793b86aSOleksij Rempelmultiple link modes and autonegotiation.
144e793b86aSOleksij Rempel
145e793b86aSOleksij Rempel- **Command:** `ethtool -I <interface>`
146e793b86aSOleksij Rempel
147e793b86aSOleksij Rempel- **Example Output for SPE Interface (Non-autonegotiation)**:
148e793b86aSOleksij Rempel
149e793b86aSOleksij Rempel  .. code-block:: bash
150e793b86aSOleksij Rempel
151e793b86aSOleksij Rempel     Settings for spe4:
152e793b86aSOleksij Rempel         Supported ports: [ TP ]
153e793b86aSOleksij Rempel         Supported link modes:   100baseT1/Full
154e793b86aSOleksij Rempel         Supported pause frame use: No
155e793b86aSOleksij Rempel         Supports auto-negotiation: No
156e793b86aSOleksij Rempel         Supported FEC modes: Not reported
157e793b86aSOleksij Rempel         Advertised link modes: Not applicable
158e793b86aSOleksij Rempel         Advertised pause frame use: No
159e793b86aSOleksij Rempel         Advertised auto-negotiation: No
160e793b86aSOleksij Rempel         Advertised FEC modes: Not reported
161e793b86aSOleksij Rempel         Speed: 100Mb/s
162e793b86aSOleksij Rempel         Duplex: Full
163e793b86aSOleksij Rempel         Auto-negotiation: off
164e793b86aSOleksij Rempel         master-slave cfg: forced slave
165e793b86aSOleksij Rempel         master-slave status: slave
166e793b86aSOleksij Rempel         Port: Twisted Pair
167e793b86aSOleksij Rempel         PHYAD: 6
168e793b86aSOleksij Rempel         Transceiver: external
169e793b86aSOleksij Rempel         MDI-X: Unknown
170e793b86aSOleksij Rempel         Supports Wake-on: d
171e793b86aSOleksij Rempel         Wake-on: d
172e793b86aSOleksij Rempel         Link detected: yes
173e793b86aSOleksij Rempel         SQI: 7/7
174e793b86aSOleksij Rempel         Link Down Events: 2
175e793b86aSOleksij Rempel
176e793b86aSOleksij Rempel- **Example Output for MPE Interface (Autonegotiation)**:
177e793b86aSOleksij Rempel
178e793b86aSOleksij Rempel  .. code-block:: bash
179e793b86aSOleksij Rempel
180e793b86aSOleksij Rempel     Settings for eth1:
181e793b86aSOleksij Rempel         Supported ports: [ TP    MII ]
182e793b86aSOleksij Rempel         Supported link modes:   10baseT/Half 10baseT/Full
183e793b86aSOleksij Rempel                                 100baseT/Half 100baseT/Full
184e793b86aSOleksij Rempel         Supported pause frame use: Symmetric Receive-only
185e793b86aSOleksij Rempel         Supports auto-negotiation: Yes
186e793b86aSOleksij Rempel         Supported FEC modes: Not reported
187e793b86aSOleksij Rempel         Advertised link modes:  10baseT/Half 10baseT/Full
188e793b86aSOleksij Rempel                                 100baseT/Half 100baseT/Full
189e793b86aSOleksij Rempel         Advertised pause frame use: Symmetric Receive-only
190e793b86aSOleksij Rempel         Advertised auto-negotiation: Yes
191e793b86aSOleksij Rempel         Advertised FEC modes: Not reported
192e793b86aSOleksij Rempel         Link partner advertised link modes:  10baseT/Half 10baseT/Full
193e793b86aSOleksij Rempel                                              100baseT/Half 100baseT/Full
194e793b86aSOleksij Rempel         Link partner advertised pause frame use: Symmetric Receive-only
195e793b86aSOleksij Rempel         Link partner advertised auto-negotiation: Yes
196e793b86aSOleksij Rempel         Link partner advertised FEC modes: Not reported
197e793b86aSOleksij Rempel         Speed: 100Mb/s
198e793b86aSOleksij Rempel         Duplex: Full
199e793b86aSOleksij Rempel         Auto-negotiation: on
200e793b86aSOleksij Rempel         Port: Twisted Pair
201e793b86aSOleksij Rempel         PHYAD: 10
202e793b86aSOleksij Rempel         Transceiver: internal
203e793b86aSOleksij Rempel         MDI-X: Unknown
204e793b86aSOleksij Rempel         Supports Wake-on: pg
205e793b86aSOleksij Rempel         Wake-on: p
206e793b86aSOleksij Rempel         Link detected: yes
207e793b86aSOleksij Rempel         Link Down Events: 1
208e793b86aSOleksij Rempel
209e793b86aSOleksij Rempel- **Next Steps**:
210e793b86aSOleksij Rempel
211e793b86aSOleksij Rempel  - Record the output provided by `ethtool`, particularly noting the
212e793b86aSOleksij Rempel    **master-slave status**, **speed**, **duplex**, and other relevant fields.
213e793b86aSOleksij Rempel    This information will be useful for further analysis or troubleshooting.
214e793b86aSOleksij Rempel    Once the **ethtool** output has been collected and stored, move on to the
215e793b86aSOleksij Rempel    next diagnostic step.
216e793b86aSOleksij Rempel
217e793b86aSOleksij RempelCheck Power Delivery (PoDL or PoE)
218e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
219e793b86aSOleksij Rempel
220e793b86aSOleksij RempelIf it is known that **PoDL** or **PoE** is **not implemented** on the system,
221e793b86aSOleksij Rempelor the **PSE** (Power Sourcing Equipment) is managed by proprietary user-space
222e793b86aSOleksij Rempelsoftware or external tools, you can skip this step. In such cases, verify power
223e793b86aSOleksij Rempeldelivery through alternative methods, such as checking hardware indicators
224e793b86aSOleksij Rempel(LEDs), using multimeters, or consulting vendor-specific software for
225e793b86aSOleksij Rempelmonitoring power status.
226e793b86aSOleksij Rempel
227e793b86aSOleksij RempelIf **PoDL** or **PoE** is implemented and managed directly by Linux, follow
228e793b86aSOleksij Rempelthese steps to ensure power is being delivered correctly:
229e793b86aSOleksij Rempel
230e793b86aSOleksij Rempel- **Command:** `ethtool --show-pse <interface>`
231e793b86aSOleksij Rempel
232e793b86aSOleksij Rempel- **Expected Output Examples**:
233e793b86aSOleksij Rempel
234e793b86aSOleksij Rempel  1. **PSE Not Supported**:
235e793b86aSOleksij Rempel
236e793b86aSOleksij Rempel     If no PSE is attached or the interface does not support PSE, the following
237e793b86aSOleksij Rempel     output is expected:
238e793b86aSOleksij Rempel
239e793b86aSOleksij Rempel     .. code-block:: bash
240e793b86aSOleksij Rempel
241e793b86aSOleksij Rempel        netlink error: No PSE is attached
242e793b86aSOleksij Rempel        netlink error: Operation not supported
243e793b86aSOleksij Rempel
244e793b86aSOleksij Rempel  2. **PoDL (Single-Pair Ethernet)**:
245e793b86aSOleksij Rempel
246e793b86aSOleksij Rempel     When PoDL is implemented, you might see the following attributes:
247e793b86aSOleksij Rempel
248e793b86aSOleksij Rempel     .. code-block:: bash
249e793b86aSOleksij Rempel
250e793b86aSOleksij Rempel        PSE attributes for eth1:
251e793b86aSOleksij Rempel        PoDL PSE Admin State: enabled
252e793b86aSOleksij Rempel        PoDL PSE Power Detection Status: delivering power
253e793b86aSOleksij Rempel
254e793b86aSOleksij Rempel  3. **PoE (Clause 33 PSE)**:
255e793b86aSOleksij Rempel
256e793b86aSOleksij Rempel     For standard PoE, the output may look like this:
257e793b86aSOleksij Rempel
258e793b86aSOleksij Rempel     .. code-block:: bash
259e793b86aSOleksij Rempel
260e793b86aSOleksij Rempel        PSE attributes for eth1:
261e793b86aSOleksij Rempel        Clause 33 PSE Admin State: enabled
262e793b86aSOleksij Rempel        Clause 33 PSE Power Detection Status: delivering power
263e793b86aSOleksij Rempel        Clause 33 PSE Available Power Limit: 18000
264e793b86aSOleksij Rempel
265e793b86aSOleksij Rempel- **Adjust Power Limit (if needed)**:
266e793b86aSOleksij Rempel
267e793b86aSOleksij Rempel  - Sometimes, the available power limit may not be sufficient for the link
268e793b86aSOleksij Rempel    partner. You can increase the power limit as needed.
269e793b86aSOleksij Rempel
270e793b86aSOleksij Rempel  - **Command:** `ethtool --set-pse <interface> c33-pse-avail-pw-limit <limit>`
271e793b86aSOleksij Rempel
272e793b86aSOleksij Rempel    Example:
273e793b86aSOleksij Rempel
274e793b86aSOleksij Rempel    .. code-block:: bash
275e793b86aSOleksij Rempel
276e793b86aSOleksij Rempel      ethtool --set-pse eth1 c33-pse-avail-pw-limit 18000
277e793b86aSOleksij Rempel      ethtool --show-pse eth1
278e793b86aSOleksij Rempel
279e793b86aSOleksij Rempel    **Expected Output** after adjusting the power limit:
280e793b86aSOleksij Rempel
281e793b86aSOleksij Rempel    .. code-block:: bash
282e793b86aSOleksij Rempel
283e793b86aSOleksij Rempel      Clause 33 PSE Available Power Limit: 18000
284e793b86aSOleksij Rempel
285e793b86aSOleksij Rempel
286e793b86aSOleksij Rempel- **Next Steps**:
287e793b86aSOleksij Rempel
288e793b86aSOleksij Rempel  - **PoE or PoDL Not Used**: If **PoE** or **PoDL** is not implemented or used
289e793b86aSOleksij Rempel    on the system, proceed to the next diagnostic step, as power delivery is
290e793b86aSOleksij Rempel    not relevant for this setup.
291e793b86aSOleksij Rempel
292e793b86aSOleksij Rempel  - **PoE or PoDL Controlled Externally**: If **PoE** or **PoDL** is used but
293e793b86aSOleksij Rempel    is not managed by the Linux kernel's **PSE-PD** framework (i.e., it is
294e793b86aSOleksij Rempel    controlled by proprietary user-space software or external tools), this part
295e793b86aSOleksij Rempel    is out of scope for this documentation. Please consult vendor-specific
296e793b86aSOleksij Rempel    documentation or external tools for monitoring and managing power delivery.
297e793b86aSOleksij Rempel
298e793b86aSOleksij Rempel  - **PSE Admin State Disabled**:
299e793b86aSOleksij Rempel
300e793b86aSOleksij Rempel    - If the `PSE Admin State:` is **disabled**, enable it by running one of
301e793b86aSOleksij Rempel      the following commands:
302e793b86aSOleksij Rempel
303e793b86aSOleksij Rempel      .. code-block:: bash
304e793b86aSOleksij Rempel
305e793b86aSOleksij Rempel         ethtool --set-pse <devname> podl-pse-admin-control enable
306e793b86aSOleksij Rempel
307e793b86aSOleksij Rempel      or, for Clause 33 PSE (PoE):
308e793b86aSOleksij Rempel
309e793b86aSOleksij Rempel         ethtool --set-pse <devname> c33-pse-admin-control enable
310e793b86aSOleksij Rempel
311e793b86aSOleksij Rempel    - After enabling the PSE Admin State, return to the start of the **Check
312e793b86aSOleksij Rempel      Power Delivery (PoDL or PoE)** step to recheck the power delivery status.
313e793b86aSOleksij Rempel
314e793b86aSOleksij Rempel  - **Power Not Delivered**: If the `Power Detection Status` shows something
315e793b86aSOleksij Rempel    other than "delivering power" (e.g., `over current`), troubleshoot the
316e793b86aSOleksij Rempel    **PSE**. Check for potential issues such as a short circuit in the cable,
317e793b86aSOleksij Rempel    insufficient power delivery, or a fault in the PSE itself.
318e793b86aSOleksij Rempel
319e793b86aSOleksij Rempel  - **Power Delivered but No Link**: If power is being delivered but no link is
320e793b86aSOleksij Rempel    established, proceed with further diagnostics by performing **Cable
321e793b86aSOleksij Rempel    Diagnostics** or reviewing the **Inspect Link Status and PHY
322e793b86aSOleksij Rempel    Configuration** steps to identify any underlying issues with the physical
323e793b86aSOleksij Rempel    link or settings.
324e793b86aSOleksij Rempel
325e793b86aSOleksij RempelCable Diagnostics
326e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~
327e793b86aSOleksij Rempel
328e793b86aSOleksij RempelUse `ethtool` to test for physical layer issues such as cable faults. The test
329e793b86aSOleksij Rempelresults can vary depending on the cable's condition, the technology in use, and
330e793b86aSOleksij Rempelthe state of the link partner. The results from the cable test will help in
331e793b86aSOleksij Rempeldiagnosing issues like open circuits, shorts, impedance mismatches, and
332e793b86aSOleksij Rempelnoise-related problems.
333e793b86aSOleksij Rempel
334e793b86aSOleksij Rempel- **Command:** `ethtool --cable-test <interface>`
335e793b86aSOleksij Rempel
336e793b86aSOleksij RempelThe following are the typical outputs for **Single-Pair Ethernet (SPE)** and
337e793b86aSOleksij Rempel**Multi-Pair Ethernet (MPE)**:
338e793b86aSOleksij Rempel
339e793b86aSOleksij Rempel- **For Single-Pair Ethernet (SPE)**:
340e793b86aSOleksij Rempel  - **Expected Output (SPE)**:
341e793b86aSOleksij Rempel
342e793b86aSOleksij Rempel  .. code-block:: bash
343e793b86aSOleksij Rempel
344e793b86aSOleksij Rempel    Cable test completed for device eth1.
345e793b86aSOleksij Rempel    Pair A, fault length: 25.00m
346e793b86aSOleksij Rempel    Pair A code Open Circuit
347e793b86aSOleksij Rempel
348e793b86aSOleksij Rempel  This indicates an open circuit or cable fault at the reported distance, but
349e793b86aSOleksij Rempel  results can be influenced by the link partner's state. Refer to the
350e793b86aSOleksij Rempel  **"Troubleshooting Based on Cable Test Results"** section for further
351e793b86aSOleksij Rempel  interpretation of these results.
352e793b86aSOleksij Rempel
353e793b86aSOleksij Rempel- **For Multi-Pair Ethernet (MPE)**:
354e793b86aSOleksij Rempel  - **Expected Output (MPE)**:
355e793b86aSOleksij Rempel
356e793b86aSOleksij Rempel  .. code-block:: bash
357e793b86aSOleksij Rempel
358e793b86aSOleksij Rempel    Cable test completed for device eth0.
359e793b86aSOleksij Rempel    Pair A code OK
360e793b86aSOleksij Rempel    Pair B code OK
361e793b86aSOleksij Rempel    Pair C code Open Circuit
362e793b86aSOleksij Rempel
363e793b86aSOleksij Rempel  Here, Pair C is reported as having an open circuit, while Pairs A and B are
364e793b86aSOleksij Rempel  functioning correctly. However, if autonegotiation is in use on Pairs A and
365e793b86aSOleksij Rempel  B, the cable test may be disrupted. Refer to the **"Troubleshooting Based on
366e793b86aSOleksij Rempel  Cable Test Results"** section for a detailed explanation of these issues and
367e793b86aSOleksij Rempel  how to resolve them.
368e793b86aSOleksij Rempel
369e793b86aSOleksij RempelFor detailed descriptions of the different possible cable test results, please
370e793b86aSOleksij Rempelrefer to the **"Troubleshooting Based on Cable Test Results"** section.
371e793b86aSOleksij Rempel
372e793b86aSOleksij RempelTroubleshooting Based on Cable Test Results
373e793b86aSOleksij Rempel^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
374e793b86aSOleksij Rempel
375e793b86aSOleksij RempelAfter running the cable test, the results can help identify specific issues in
376e793b86aSOleksij Rempelthe physical connection. However, it is important to note that **cable testing
377e793b86aSOleksij Rempelresults heavily depend on the capabilities and characteristics of both the
378e793b86aSOleksij Rempellocal hardware and the link partner**. The accuracy and reliability of the
379e793b86aSOleksij Rempelresults can vary significantly between different hardware implementations.
380e793b86aSOleksij Rempel
381e793b86aSOleksij RempelIn some cases, this can introduce **blind spots** in the current cable testing
382e793b86aSOleksij Rempelimplementation, where certain results may not accurately reflect the actual
383e793b86aSOleksij Rempelphysical state of the cable. For example:
384e793b86aSOleksij Rempel
385e793b86aSOleksij Rempel- An **Open Circuit** result might not only indicate a damaged or disconnected
386e793b86aSOleksij Rempel  cable but also occur if the cable is properly attached to a powered-down link
387e793b86aSOleksij Rempel  partner.
388e793b86aSOleksij Rempel
389e793b86aSOleksij Rempel- Some PHYs may report a **Short within Pair** if the link partner is in
390e793b86aSOleksij Rempel  **forced slave mode**, even though there is no actual short in the cable.
391e793b86aSOleksij Rempel
392e793b86aSOleksij RempelTo help users interpret the results more effectively, it could be beneficial to
393e793b86aSOleksij Rempelextend the **kernel UAPI** (User API) to provide additional context or
394e793b86aSOleksij Rempel**possible variants** of issues based on the hardware’s characteristics. Since
395e793b86aSOleksij Rempelthese quirks are often hardware-specific, the **kernel driver** would be an
396e793b86aSOleksij Rempelideal source of such information. By providing flags or hints related to
397e793b86aSOleksij Rempelpotential false positives for each test result, users would have a better
398e793b86aSOleksij Rempelunderstanding of what to verify and where to investigate further.
399e793b86aSOleksij Rempel
400e793b86aSOleksij RempelUntil such improvements are made, users should be aware of these limitations
401e793b86aSOleksij Rempeland manually verify cable issues as needed. Physical inspections may help
402e793b86aSOleksij Rempelresolve uncertainties related to false positive results.
403e793b86aSOleksij Rempel
404e793b86aSOleksij RempelThe results can be one of the following:
405e793b86aSOleksij Rempel
406e793b86aSOleksij Rempel- **OK**:
407e793b86aSOleksij Rempel
408e793b86aSOleksij Rempel  - The cable is functioning correctly, and no issues were detected.
409e793b86aSOleksij Rempel
410e793b86aSOleksij Rempel  - **Next Steps**: If you are still experiencing issues, it might be related
411e793b86aSOleksij Rempel    to higher-layer problems, such as duplex mismatches or speed negotiation,
412e793b86aSOleksij Rempel    which are not physical-layer issues.
413e793b86aSOleksij Rempel
414e793b86aSOleksij Rempel  - **Special Case for `BaseT1` (1000/100/10BaseT1)**: In `BaseT1` systems, an
415e793b86aSOleksij Rempel    "OK" result typically also means that the link is up and likely in **slave
416e793b86aSOleksij Rempel    mode**, since cable tests usually only pass in this mode. For some
417e793b86aSOleksij Rempel    **10BaseT1L** PHYs, an "OK" result may occur even if the cable is too long
418e793b86aSOleksij Rempel    for the PHY's configured range (for example, when the range is configured
419e793b86aSOleksij Rempel    for short-distance mode).
420e793b86aSOleksij Rempel
421e793b86aSOleksij Rempel- **Open Circuit**:
422e793b86aSOleksij Rempel
423e793b86aSOleksij Rempel  - An **Open Circuit** result typically indicates that the cable is damaged or
424e793b86aSOleksij Rempel    disconnected at the reported fault length. Consider these possibilities:
425e793b86aSOleksij Rempel
426e793b86aSOleksij Rempel    - If the link partner is in **admin down** state or powered off, you might
427e793b86aSOleksij Rempel      still get an "Open Circuit" result even if the cable is functional.
428e793b86aSOleksij Rempel
429e793b86aSOleksij Rempel    - **Next Steps**: Inspect the cable at the fault length for visible damage
430e793b86aSOleksij Rempel      or loose connections. Verify the link partner is powered on and in the
431e793b86aSOleksij Rempel      correct mode.
432e793b86aSOleksij Rempel
433e793b86aSOleksij Rempel- **Short within Pair**:
434e793b86aSOleksij Rempel
435e793b86aSOleksij Rempel  - A **Short within Pair** indicates an unintended connection within the same
436e793b86aSOleksij Rempel    pair of wires, typically caused by physical damage to the cable.
437e793b86aSOleksij Rempel
438e793b86aSOleksij Rempel    - **Next Steps**: Replace or repair the cable and check for any physical
439e793b86aSOleksij Rempel      damage or improperly crimped connectors.
440e793b86aSOleksij Rempel
441e793b86aSOleksij Rempel- **Short to Another Pair**:
442e793b86aSOleksij Rempel
443e793b86aSOleksij Rempel  - A **Short to Another Pair** means the wires from different pairs are
444e793b86aSOleksij Rempel    shorted, which could occur due to physical damage or incorrect wiring.
445e793b86aSOleksij Rempel
446e793b86aSOleksij Rempel    - **Next Steps**: Replace or repair the damaged cable. Inspect the cable for
447e793b86aSOleksij Rempel      incorrect terminations or pinched wiring.
448e793b86aSOleksij Rempel
449e793b86aSOleksij Rempel- **Impedance Mismatch**:
450e793b86aSOleksij Rempel
451e793b86aSOleksij Rempel  - **Impedance Mismatch** indicates a reflection caused by an impedance
452e793b86aSOleksij Rempel    discontinuity in the cable. This can happen when a part of the cable has
453e793b86aSOleksij Rempel    abnormal impedance (e.g., when different cable types are spliced together
454e793b86aSOleksij Rempel    or when there is a defect in the cable).
455e793b86aSOleksij Rempel
456e793b86aSOleksij Rempel    - **Next Steps**: Check the cable quality and ensure consistent impedance
457e793b86aSOleksij Rempel      throughout its length. Replace any sections of the cable that do not meet
458e793b86aSOleksij Rempel      specifications.
459e793b86aSOleksij Rempel
460e793b86aSOleksij Rempel- **Noise**:
461e793b86aSOleksij Rempel
462e793b86aSOleksij Rempel  - **Noise** means that the Time Domain Reflectometry (TDR) test could not
463e793b86aSOleksij Rempel    complete due to excessive noise on the cable, which can be caused by
464e793b86aSOleksij Rempel    interference from electromagnetic sources.
465e793b86aSOleksij Rempel
466e793b86aSOleksij Rempel    - **Next Steps**: Identify and eliminate sources of electromagnetic
467e793b86aSOleksij Rempel      interference (EMI) near the cable. Consider using shielded cables or
468e793b86aSOleksij Rempel      rerouting the cable away from noise sources.
469e793b86aSOleksij Rempel
470e793b86aSOleksij Rempel- **Resolution Not Possible**:
471e793b86aSOleksij Rempel
472e793b86aSOleksij Rempel  - **Resolution Not Possible** means that the TDR test could not detect the
473e793b86aSOleksij Rempel    issue due to the resolution limitations of the test or because the fault is
474e793b86aSOleksij Rempel    beyond the distance that the test can measure.
475e793b86aSOleksij Rempel
476e793b86aSOleksij Rempel    - **Next Steps**: Inspect the cable manually if possible, or use alternative
477e793b86aSOleksij Rempel      diagnostic tools that can handle greater distances or higher resolution.
478e793b86aSOleksij Rempel
479e793b86aSOleksij Rempel- **Unknown**:
480e793b86aSOleksij Rempel
481e793b86aSOleksij Rempel  - An **Unknown** result may occur when the test cannot classify the fault or
482e793b86aSOleksij Rempel    when a specific issue is outside the scope of the tool's detection
483e793b86aSOleksij Rempel    capabilities.
484e793b86aSOleksij Rempel
485e793b86aSOleksij Rempel    - **Next Steps**: Re-run the test, verify the link partner's state, and inspect
486e793b86aSOleksij Rempel      the cable manually if necessary.
487e793b86aSOleksij Rempel
488e793b86aSOleksij RempelVerify Link Partner PHY Configuration
489e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
490e793b86aSOleksij Rempel
491e793b86aSOleksij RempelIf the cable test passes but the link is still not functioning correctly, it’s
492e793b86aSOleksij Rempelessential to verify the configuration of the link partner’s PHY. Mismatches in
493e793b86aSOleksij Rempelspeed, duplex settings, or master-slave roles can cause connection issues.
494e793b86aSOleksij Rempel
495e793b86aSOleksij RempelAutonegotiation Mismatch
496e793b86aSOleksij Rempel^^^^^^^^^^^^^^^^^^^^^^^^
497e793b86aSOleksij Rempel
498e793b86aSOleksij Rempel- If both link partners support autonegotiation, ensure that autonegotiation is
499e793b86aSOleksij Rempel  enabled on both sides and that all supported link modes are advertised. A
500e793b86aSOleksij Rempel  mismatch can lead to connectivity problems or sub optimal performance.
501e793b86aSOleksij Rempel
502e793b86aSOleksij Rempel- **Quick Fix:** Reset autonegotiation to the default settings, which will
503e793b86aSOleksij Rempel  advertise all default link modes:
504e793b86aSOleksij Rempel
505e793b86aSOleksij Rempel  .. code-block:: bash
506e793b86aSOleksij Rempel
507e793b86aSOleksij Rempel     ethtool -s <interface> autoneg on
508e793b86aSOleksij Rempel
509e793b86aSOleksij Rempel- **Command to check configuration:** `ethtool <interface>`
510e793b86aSOleksij Rempel
511e793b86aSOleksij Rempel- **Expected Output:** Ensure that both sides advertise compatible link modes.
512e793b86aSOleksij Rempel  If autonegotiation is off, verify that both link partners are configured for
513e793b86aSOleksij Rempel  the same speed and duplex.
514e793b86aSOleksij Rempel
515e793b86aSOleksij Rempel  The following example shows a case where the local PHY advertises fewer link
516e793b86aSOleksij Rempel  modes than it supports. This will reduce the number of overlapping link modes
517e793b86aSOleksij Rempel  with the link partner. In the worst case, there will be no common link modes,
518e793b86aSOleksij Rempel  and the link will not be created:
519e793b86aSOleksij Rempel
520e793b86aSOleksij Rempel  .. code-block:: bash
521e793b86aSOleksij Rempel
522e793b86aSOleksij Rempel     Settings for eth0:
523e793b86aSOleksij Rempel        Supported link modes:  1000baseT/Full, 100baseT/Full
524e793b86aSOleksij Rempel        Advertised link modes: 1000baseT/Full
525e793b86aSOleksij Rempel        Speed: 1000Mb/s
526e793b86aSOleksij Rempel        Duplex: Full
527e793b86aSOleksij Rempel        Auto-negotiation: on
528e793b86aSOleksij Rempel
529e793b86aSOleksij RempelCombined Mode Mismatch (Autonegotiation on One Side, Forced on the Other)
530e793b86aSOleksij Rempel^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
531e793b86aSOleksij Rempel
532e793b86aSOleksij Rempel- One possible issue occurs when one side is using **autonegotiation** (as in
533e793b86aSOleksij Rempel  most modern systems), and the other side is set to a **forced link mode**
534e793b86aSOleksij Rempel  (e.g., older hardware with single-speed hubs). In such cases, modern PHYs
535e793b86aSOleksij Rempel  will attempt to detect the forced mode on the other side. If the link is
536e793b86aSOleksij Rempel  established, you may notice:
537e793b86aSOleksij Rempel
538e793b86aSOleksij Rempel  - **No or empty "Link partner advertised link modes"**.
539e793b86aSOleksij Rempel
540e793b86aSOleksij Rempel  - **"Link partner advertised auto-negotiation:"** will be **"no"** or not
541e793b86aSOleksij Rempel    present.
542e793b86aSOleksij Rempel
543e793b86aSOleksij Rempel- This type of detection does not always work reliably:
544e793b86aSOleksij Rempel
545e793b86aSOleksij Rempel  - Typically, the modern PHY will default to **Half Duplex**, even if the link
546e793b86aSOleksij Rempel    partner is actually configured for **Full Duplex**.
547e793b86aSOleksij Rempel
548e793b86aSOleksij Rempel  - Some PHYs may not work reliably if the link partner switches from one
549e793b86aSOleksij Rempel    forced mode to another. In this case, only a down/up cycle may help.
550e793b86aSOleksij Rempel
551e793b86aSOleksij Rempel- **Next Steps**: Set both sides to the same fixed speed and duplex mode to
552e793b86aSOleksij Rempel  avoid potential detection issues.
553e793b86aSOleksij Rempel
554e793b86aSOleksij Rempel  .. code-block:: bash
555e793b86aSOleksij Rempel
556e793b86aSOleksij Rempel     ethtool -s <interface> speed 1000 duplex full autoneg off
557e793b86aSOleksij Rempel
558e793b86aSOleksij RempelMaster/Slave Role Mismatch (BaseT1 and 1000BaseT PHYs)
559e793b86aSOleksij Rempel^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
560e793b86aSOleksij Rempel
561e793b86aSOleksij Rempel- In **BaseT1** systems (e.g., 1000BaseT1, 100BaseT1), link establishment
562e793b86aSOleksij Rempel  requires that one device is configured as **master** and the other as
563e793b86aSOleksij Rempel  **slave**. A mismatch in this master-slave configuration can prevent the link
564e793b86aSOleksij Rempel  from being established. However, **1000BaseT** also supports configurable
565e793b86aSOleksij Rempel  master/slave roles and can face similar issues.
566e793b86aSOleksij Rempel
567e793b86aSOleksij Rempel- **Role Preference in 1000BaseT**: The **1000BaseT** specification allows link
568e793b86aSOleksij Rempel  partners to negotiate master-slave roles or role preferences during
569e793b86aSOleksij Rempel  autonegotiation. Some PHYs have hardware limitations or bugs that prevent
570e793b86aSOleksij Rempel  them from functioning properly in certain roles. In such cases, drivers may
571e793b86aSOleksij Rempel  force these PHYs into a specific role (e.g., **forced master** or **forced
572e793b86aSOleksij Rempel  slave**) or try a weaker option by setting preferences. If both link partners
573e793b86aSOleksij Rempel  have the same issue and are forced into the same mode (e.g., both forced into
574e793b86aSOleksij Rempel  master mode), they will not be able to establish a link.
575e793b86aSOleksij Rempel
576e793b86aSOleksij Rempel- **Next Steps**: Ensure that one side is configured as **master** and the
577e793b86aSOleksij Rempel  other as **slave** to avoid this issue, particularly when hardware
578e793b86aSOleksij Rempel  limitations are involved, or try the weaker **preferred** option instead of
579e793b86aSOleksij Rempel  **forced**. Check for any driver-related restrictions or forced modes.
580e793b86aSOleksij Rempel
581e793b86aSOleksij Rempel- **Command to force master/slave mode**:
582e793b86aSOleksij Rempel
583e793b86aSOleksij Rempel  .. code-block:: bash
584e793b86aSOleksij Rempel
585e793b86aSOleksij Rempel     ethtool -s <interface> master-slave forced-master
586e793b86aSOleksij Rempel
587e793b86aSOleksij Rempel  or:
588e793b86aSOleksij Rempel
589e793b86aSOleksij Rempel  .. code-block:: bash
590e793b86aSOleksij Rempel
591e793b86aSOleksij Rempel     ethtool -s <interface> master-slave forced-master speed 1000 duplex full autoneg off
592e793b86aSOleksij Rempel
593e793b86aSOleksij Rempel
594e793b86aSOleksij Rempel- **Check the current master/slave status**:
595e793b86aSOleksij Rempel
596e793b86aSOleksij Rempel  .. code-block:: bash
597e793b86aSOleksij Rempel
598e793b86aSOleksij Rempel     ethtool <interface>
599e793b86aSOleksij Rempel
600e793b86aSOleksij Rempel  Example Output:
601e793b86aSOleksij Rempel
602e793b86aSOleksij Rempel  .. code-block:: bash
603e793b86aSOleksij Rempel
604e793b86aSOleksij Rempel     master-slave cfg: forced-master
605e793b86aSOleksij Rempel     master-slave status: master
606e793b86aSOleksij Rempel
607e793b86aSOleksij Rempel- **Hardware Bugs and Driver Forcing**: If a known hardware issue forces the
608e793b86aSOleksij Rempel  PHY into a specific mode, it’s essential to check the driver source code or
609e793b86aSOleksij Rempel  hardware documentation for details. Ensure that the roles are compatible
610e793b86aSOleksij Rempel  across both link partners, and if both PHYs are forced into the same mode,
611e793b86aSOleksij Rempel  adjust one side accordingly to resolve the mismatch.
612e793b86aSOleksij Rempel
613e793b86aSOleksij RempelMonitor Link Resets and Speed Drops
614e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
615e793b86aSOleksij Rempel
616e793b86aSOleksij RempelIf the link is unstable, showing frequent resets or speed drops, this may
617e793b86aSOleksij Rempelindicate issues with the cable, PHY configuration, or environmental factors.
618e793b86aSOleksij RempelWhile there is still no completely unified way in Linux to directly monitor
619e793b86aSOleksij Rempeldownshift events or link speed changes via user space tools, both the Linux
620e793b86aSOleksij Rempelkernel logs and `ethtool` can provide valuable insights, especially if the
621e793b86aSOleksij Rempeldriver supports reporting such events.
622e793b86aSOleksij Rempel
623e793b86aSOleksij Rempel- **Monitor Kernel Logs for Link Resets and Speed Drops**:
624e793b86aSOleksij Rempel
625e793b86aSOleksij Rempel  - The Linux kernel will print link status changes, including downshift
626e793b86aSOleksij Rempel    events, in the system logs. These messages typically include speed changes,
627e793b86aSOleksij Rempel    duplex mode, and downshifted link speed (if the driver supports it).
628e793b86aSOleksij Rempel
629e793b86aSOleksij Rempel  - **Command to monitor kernel logs in real-time:**
630e793b86aSOleksij Rempel
631e793b86aSOleksij Rempel    .. code-block:: bash
632e793b86aSOleksij Rempel
633e793b86aSOleksij Rempel      dmesg -w | grep "Link is Up\|Link is Down"
634e793b86aSOleksij Rempel
635e793b86aSOleksij Rempel  - Example Output (if a downshift occurs):
636e793b86aSOleksij Rempel
637e793b86aSOleksij Rempel    .. code-block:: bash
638e793b86aSOleksij Rempel
639e793b86aSOleksij Rempel      eth0: Link is Up - 100Mbps/Full (downshifted) - flow control rx/tx
640e793b86aSOleksij Rempel      eth0: Link is Down
641e793b86aSOleksij Rempel
642e793b86aSOleksij Rempel    This indicates that the link has been established but has downshifted from
643e793b86aSOleksij Rempel    a higher speed.
644e793b86aSOleksij Rempel
645e793b86aSOleksij Rempel  - **Note**: Not all drivers or PHYs support downshift reporting, so you may
646e793b86aSOleksij Rempel    not see this information for all devices.
647e793b86aSOleksij Rempel
648e793b86aSOleksij Rempel- **Monitor Link Down Events Using `ethtool`**:
649e793b86aSOleksij Rempel
650e793b86aSOleksij Rempel  - Starting with the latest kernel and `ethtool` versions, you can track
651e793b86aSOleksij Rempel    **Link Down Events** using the `ethtool -I` command. This will provide
652e793b86aSOleksij Rempel    counters for link drops, helping to diagnose link instability issues if
653e793b86aSOleksij Rempel    supported by the driver.
654e793b86aSOleksij Rempel
655e793b86aSOleksij Rempel  - **Command to monitor link down events:**
656e793b86aSOleksij Rempel
657e793b86aSOleksij Rempel    .. code-block:: bash
658e793b86aSOleksij Rempel
659e793b86aSOleksij Rempel      ethtool -I <interface>
660e793b86aSOleksij Rempel
661e793b86aSOleksij Rempel  - Example Output (if supported):
662e793b86aSOleksij Rempel
663e793b86aSOleksij Rempel    .. code-block:: bash
664e793b86aSOleksij Rempel
665e793b86aSOleksij Rempel      PSE attributes for eth1:
666e793b86aSOleksij Rempel      Link Down Events: 5
667e793b86aSOleksij Rempel
668e793b86aSOleksij Rempel    This indicates that the link has dropped 5 times. Frequent link down events
669e793b86aSOleksij Rempel    may indicate cable or environmental issues that require further
670e793b86aSOleksij Rempel    investigation.
671e793b86aSOleksij Rempel
672e793b86aSOleksij Rempel- **Check Link Status and Speed**:
673e793b86aSOleksij Rempel
674e793b86aSOleksij Rempel  - Even though downshift counts or events are not easily tracked, you can
675e793b86aSOleksij Rempel    still use `ethtool` to manually check the current link speed and status.
676e793b86aSOleksij Rempel
677e793b86aSOleksij Rempel  - **Command:** `ethtool <interface>`
678e793b86aSOleksij Rempel
679e793b86aSOleksij Rempel  - **Expected Output:**
680e793b86aSOleksij Rempel
681e793b86aSOleksij Rempel    .. code-block:: bash
682e793b86aSOleksij Rempel
683e793b86aSOleksij Rempel      Speed: 1000Mb/s
684e793b86aSOleksij Rempel      Duplex: Full
685e793b86aSOleksij Rempel      Auto-negotiation: on
686e793b86aSOleksij Rempel      Link detected: yes
687e793b86aSOleksij Rempel
688e793b86aSOleksij Rempel    Any inconsistencies in the expected speed or duplex setting could indicate
689e793b86aSOleksij Rempel    an issue.
690e793b86aSOleksij Rempel
691e793b86aSOleksij Rempel- **Disable Energy-Efficient Ethernet (EEE) for Diagnostics**:
692e793b86aSOleksij Rempel
693e793b86aSOleksij Rempel  - **EEE** (Energy-Efficient Ethernet) can be a source of link instability due
694e793b86aSOleksij Rempel    to transitions in and out of low-power states. For diagnostic purposes, it
695e793b86aSOleksij Rempel    may be useful to **temporarily** disable EEE to determine if it is
696e793b86aSOleksij Rempel    contributing to link instability. This is **not a generic recommendation**
697e793b86aSOleksij Rempel    for disabling power management.
698e793b86aSOleksij Rempel
699e793b86aSOleksij Rempel  - **Next Steps**: Disable EEE and monitor if the link becomes stable. If
700e793b86aSOleksij Rempel    disabling EEE resolves the issue, report the bug so that the driver can be
701e793b86aSOleksij Rempel    fixed.
702e793b86aSOleksij Rempel
703e793b86aSOleksij Rempel  - **Command:**
704e793b86aSOleksij Rempel
705e793b86aSOleksij Rempel    .. code-block:: bash
706e793b86aSOleksij Rempel
707e793b86aSOleksij Rempel      ethtool --set-eee <interface> eee off
708e793b86aSOleksij Rempel
709e793b86aSOleksij Rempel  - **Important**: If disabling EEE resolves the instability, the issue should
710e793b86aSOleksij Rempel    be reported to the maintainers as a bug, and the driver should be corrected
711e793b86aSOleksij Rempel    to handle EEE properly without causing instability. Disabling EEE
712e793b86aSOleksij Rempel    permanently should not be seen as a solution.
713e793b86aSOleksij Rempel
714e793b86aSOleksij Rempel- **Monitor Error Counters**:
715e793b86aSOleksij Rempel
716*7d66c74aSOleksij Rempel  - Use `ethtool -S <interface> --all-groups` to retrieve standardized interface
717*7d66c74aSOleksij Rempel    statistics if the driver supports the unified interface:
718e793b86aSOleksij Rempel
719*7d66c74aSOleksij Rempel  - **Command:** `ethtool -S <interface> --all-groups`
720*7d66c74aSOleksij Rempel
721*7d66c74aSOleksij Rempel  - **Example Output (if supported)**:
722*7d66c74aSOleksij Rempel
723*7d66c74aSOleksij Rempel    .. code-block:: bash
724*7d66c74aSOleksij Rempel
725*7d66c74aSOleksij Rempel      phydev-RxFrames: 100391
726*7d66c74aSOleksij Rempel      phydev-RxErrors: 0
727*7d66c74aSOleksij Rempel      phydev-TxFrames: 9
728*7d66c74aSOleksij Rempel      phydev-TxErrors: 0
729*7d66c74aSOleksij Rempel
730*7d66c74aSOleksij Rempel  - If the unified interface is not supported, use `ethtool -S <interface>` to
731*7d66c74aSOleksij Rempel    retrieve MAC and PHY counters. Note that non-standardized PHY counter names
732*7d66c74aSOleksij Rempel    vary by driver and must be interpreted accordingly:
733e793b86aSOleksij Rempel
734e793b86aSOleksij Rempel  - **Command:** `ethtool -S <interface>`
735e793b86aSOleksij Rempel
736e793b86aSOleksij Rempel  - **Example Output (if supported)**:
737e793b86aSOleksij Rempel
738e793b86aSOleksij Rempel    .. code-block:: bash
739e793b86aSOleksij Rempel
740e793b86aSOleksij Rempel      rx_crc_errors: 123
741e793b86aSOleksij Rempel      tx_errors: 45
742e793b86aSOleksij Rempel      rx_frame_errors: 78
743e793b86aSOleksij Rempel
744e793b86aSOleksij Rempel  - **Note**: If no meaningful error counters are available or if counters are
745e793b86aSOleksij Rempel    not supported, you may need to rely on physical inspections (e.g., cable
746e793b86aSOleksij Rempel    condition) or kernel log messages (e.g., link up/down events) to further
747e793b86aSOleksij Rempel    diagnose the issue.
748e793b86aSOleksij Rempel
749*7d66c74aSOleksij Rempel  - **Compare Counters**:
750*7d66c74aSOleksij Rempel
751*7d66c74aSOleksij Rempel    - Compare the egress and ingress frame counts reported by the PHY and MAC.
752*7d66c74aSOleksij Rempel
753*7d66c74aSOleksij Rempel    - A small difference may occur due to sampling rate differences between the
754*7d66c74aSOleksij Rempel      MAC and PHY drivers, or if the PHY and MAC are not always fully
755*7d66c74aSOleksij Rempel      synchronized in their UP or DOWN states.
756*7d66c74aSOleksij Rempel
757*7d66c74aSOleksij Rempel    - Significant discrepancies indicate potential issues in the data path
758*7d66c74aSOleksij Rempel      between the MAC and PHY.
759*7d66c74aSOleksij Rempel
760e793b86aSOleksij RempelWhen All Else Fails...
761e793b86aSOleksij Rempel~~~~~~~~~~~~~~~~~~~~~~
762e793b86aSOleksij Rempel
763e793b86aSOleksij RempelSo you've checked the cables, monitored the logs, disabled EEE, and still...
764e793b86aSOleksij Rempelnothing? Don’t worry, you’re not alone. Sometimes, Ethernet gremlins just don’t
765e793b86aSOleksij Rempelwant to cooperate.
766e793b86aSOleksij Rempel
767e793b86aSOleksij RempelBut before you throw in the towel (or the Ethernet cable), take a deep breath.
768e793b86aSOleksij RempelIt’s always possible that:
769e793b86aSOleksij Rempel
770e793b86aSOleksij Rempel1. Your PHY has a unique, undocumented personality.
771e793b86aSOleksij Rempel
772e793b86aSOleksij Rempel2. The problem is lying dormant, waiting for just the right moment to magically
773e793b86aSOleksij Rempel   resolve itself (hey, it happens!).
774e793b86aSOleksij Rempel
775e793b86aSOleksij Rempel3. Or, it could be that the ultimate solution simply hasn’t been invented yet.
776e793b86aSOleksij Rempel
777e793b86aSOleksij RempelIf none of the above bring you comfort, there’s one final step: contribute! If
778e793b86aSOleksij Rempelyou've uncovered new or unusual issues, or have creative diagnostic methods,
779e793b86aSOleksij Rempelfeel free to share your findings and extend this documentation. Together, we
780e793b86aSOleksij Rempelcan hunt down every elusive network issue - one twisted pair at a time.
781e793b86aSOleksij Rempel
782e793b86aSOleksij RempelRemember: sometimes the solution is just a reboot away, but if not, it’s time to
783e793b86aSOleksij Rempeldig deeper - or report that bug!
784e793b86aSOleksij Rempel
785