> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure Ethernet features

Ethernet supports a wide range of generic features that don’t require specific configuration. However, a few features that must be configured explicitly for each reference kit are described here.

<Tabs>
  <Tab title="QCS6490">
    ## **Configure link speed**

    You can configure link speed from the supported link modes in the `ethtool` command output.

    ```text theme={null}
    ethtool -s [device_name] autoneg [on/off] speed [10/100/1000/2500] duplex [full]

    ```

    For example:

    ```text theme={null}
    ethtool -s enP1p5s0f0 autoneg on speed 2500 duplex full

    ```

    ## **Configure energy efficient Ethernet**

    <Note>
      EEE feature is supported only on QEP8121 PHY.
    </Note>

    You can control EEE by performing certain functions such as verifying the status of EEE and enabling or disabling EEE. Sample commands and their outputs for each function are provided here for your reference.

    * Verify EEE status
      > ```text theme={null}
      > ethtool --show-eee [interface]
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --show-eee enP1p5s0f1
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enP1p5s0f1:
      > EEE status: disabled
      > Tx LPI: disabled
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      > Advertised EEE link modes:  Not reported
      > Link partner advertised EEE link modes:  Not reported
      > ```

    * Enable EEE
      > ```text theme={null}
      > ethtool --set-eee [interface] eee on
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --set-eee enP1p5s0f1 eee on
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enP1p5s0f1:
      > EEE status: enabled - inactive
      > Tx LPI: 17 (us)
      > Supported EEE link modes:  100baseT/Full
      >                            1000baseT/Full
      > Advertised EEE link modes: 100baseT/Full
      >                            1000baseT/Full
      > Link partner advertised EEE link modes: Not reported
      > ```

    * Disable EEE
      > ```text theme={null}
      > ethtool --set-eee [interface] eee off
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --set-eee enP1p5s0f1 eee off
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enP1p5s0f1:
      > EEE status: disabled
      > Tx LPI: 17 (us)
      > Supported EEE link modes:  100baseT/Full
      >                            1000baseT/Full
      > Advertised EEE link modes: 100baseT/Full
      >                            1000baseT/Full
      > Link partner advertised EEE link modes: Not reported
      > ```

    ## **Verify preconfigured MAC address**

    QPS615 is a PCIe switch on RB3 Gen 2 Development Kit. It doesn’t have an electrically erasable programmable read only memory (EEPROM) to store the MAC address permanently. However, the MAC address is programmed and stored at a persistent path on the device.

    Verify the configuration of the interface.

    > ```text theme={null}
    > ip -s addr show dev enP1p5s0f1
    > ```

    Sample output:

    > ```text theme={null}
    > enP1p5s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >             link/ether 62:99:60:23:4d:52 brd ff:ff:ff:ff:ff:ff
    >             RX:  bytes packets errors dropped  missed   mcast
    >                105971     313      0       2       0       0
    >             TX:  bytes packets errors dropped carrier collsns
    >                145434     762      0       2       0       0
    > ```
  </Tab>

  <Tab title="IQ-9075">
    ## **Configure link speed**

    You can configure link speed from the supported link modes in the `ethtool` command output.

    ```text theme={null}
    ethtool -s [device_name] autoneg [on/off] speed [10/100/1000/2500] duplex [full]

    ```

    For example:

    ```text theme={null}
    ethtool -s end0 autoneg on speed 2500 duplex full
    ```

    ## **Configure gPTP**

    You can configure PTP feature to synchronize clocks throughout a device. The ptp4l daemon enables accurate time synchronization between networked devices and is commonly used in Time Sensitive Networking (TSN) and industrial automation environments where deterministic timing and low synchronization error are required.

    To use the ptp4l utility, install the linuxptp package on the target Linux system. The linuxptp package is available in most Linux distributions and can be installed using the distribution's supported package manager.

    To configure PTP, do the following:

    1. Download the latest [Linux PTP](https://www.linuxptp.org/) source code.
    2. Compile the source code to generate ptp4l binary.
    3. Download the ptp4l binary and `default.cfg` file to the `/etc` directory in the EVK.

       The `default.cfg` file is available in the `configs` directory of the Linux PTP source code.

    ### **Test setup**

    1. Connect two EVK devices in a back-to-back topology using an RJ45 Ethernet cable.
    2. Configure one device as the reference (gPTP master) and the other as the mirror (gPTP slave).
    3. Use the ptp4l utilities with platform-specific custom configuration files for both master and slave devices.
    4. Run the PTP daemon as master on one EVK device.
       ```text theme={null}
       ptp4l -i end0 -f /etc/gptp_master.cfg
       ```
    5. Run the PTP daemon as slave on another EVK device.
       ```text theme={null}
       ptp4l -i end0 -f /etc/gptp_slave.cfg
       ```
           <Note>
             For information about ptp4l arguments, see ptp4l Linux man page.
           </Note>
    6. Monitor synchronization status by examining the gPTP related messages in `/var/log/syslog`.
       ```text theme={null}
       cat /var/log/syslog | grep -i ptp
       ```
    7. Observe timing performance metrics, including RMS error, maximum offset, frequency error, and path delay.
    8. Analyze the logged results to confirm successful time synchronization between devices and to quantify any remaining differences.

    ### **Configuration parameters**

    The following table lists the parameters for `gptp_master.cfg` configuration file.

    | **Parameter** | **Value** |
    | :- | :- |
    | gmCapable | 1 |
    | priority1 | 128 |
    | priority2 | 248 |
    | logAnnounceInterval | 0 |
    | logSyncInterval | -3 |
    | syncReceiptTimeout | 3 |
    | neighborPropDelayThresh | 8000 |
    | min\_neighbor\_prop\_delay | -20000000 |
    | assume\_two\_step | 1 |
    | path\_trace\_enabled | 1 |
    | follow\_up\_info | 1 |
    | transportSpecific | 0x1 |
    | ptp\_dst\_mac | 01:80:C2:00:00:0E |
    | network\_transport | L2 |
    | delay\_mechanism | P2P |
    | tx\_timestamp\_timeout | 1000 |

    The following table lists the parameters for `gptp_slave.cfg` configuration file.

    | **Parameter** | **Value** |
    | :- | :- |
    | gmCapable | 0 |
    | priority1 | 248 |
    | priority2 | 248 |
    | logAnnounceInterval | 0 |
    | logSyncInterval | -3 |
    | syncReceiptTimeout | 3 |
    | neighborPropDelayThresh | 8000 |
    | min\_neighbor\_prop\_delay | -20000000 |
    | assume\_two\_step | 1 |
    | path\_trace\_enabled | 1 |
    | follow\_up\_info | 1 |
    | transportSpecific | 0x1 |
    | ptp\_dst\_mac | 01:80:C2:00:00:0E |
    | network\_transport | L2 |
    | delay\_mechanism | P2P |
    | tx\_timestamp\_timeout | 1000 |

    ### **Sample logs**

    Sample log for master device.

    ```text theme={null}
    cat /var/log/syslog | grep -i ptp
    2026-03-13T15:37:25.221449+00:00 iq-9075-evk kernel: PTP clock support registered
    2026-03-13T15:37:25.222684+00:00 iq-9075-evk kernel: qcom-ethqos 23040000.ethernet end0: registered PTP clock
    2026-03-13T15:42:13.740620+00:00 iq-9075-evk ptp4l: [362.671] selected /dev/ptp0 as PTP clock
    2026-03-13T15:42:13.780931+00:00 iq-9075-evk ptp4l: [362.712] port 1 (end0): INITIALIZING to LISTENING on INIT_COMPLETE
    2026-03-13T15:42:13.781042+00:00 iq-9075-evk ptp4l: [362.712] port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
    2026-03-13T15:42:13.781088+00:00 iq-9075-evk ptp4l: [362.712] port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
    2026-03-13T15:42:17.359566+00:00 iq-9075-evk ptp4l: [366.290] port 1 (end0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
    2026-03-13T15:42:17.359751+00:00 iq-9075-evk ptp4l: [366.290] selected local clock aabbcc.fffe.ddeeff as best master
    2026-03-13T15:42:17.359801+00:00 iq-9075-evk ptp4l: [366.290] port 1 (end0): assuming the grand master role
    ```

    Sample log for slave device.

    ```text theme={null}
    2026-03-13T15:43:33.243079+00:00 iq-9075-evk kernel: PTP clock support registered
    2026-03-13T15:43:33.244219+00:00 iq-9075-evk kernel: qcom-ethqos 23040000.ethernet end0: registered PTP clock
    2026-03-13T15:59:54.442980+00:00 iq-9075-evk ptp4l: [1054.284] selected /dev/ptp0 as PTP clock
    2026-03-13T15:59:54.505326+00:00 iq-9075-evk ptp4l: [1054.347] port 1 (end0): INITIALIZING to LISTENING on INIT_COMPLETE
    2026-03-13T15:59:57.901593+00:00 iq-9075-evk ptp4l: [1057.742] port 1 (end0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
    2026-03-13T15:59:58.881612+00:00 iq-9075-evk ptp4l: [1058.723] port 1 (end0): new foreign master aabbcc.fffe.ddeeff-1
    2026-03-13T16:00:00.884348+00:00 iq-9075-evk ptp4l: [1060.725] selected best master clock aabbcc.fffe.ddeeff
    2026-03-13T16:00:00.884525+00:00 iq-9075-evk ptp4l: [1060.725] port 1 (end0): MASTER to UNCALIBRATED on RS_SLAVE
    2026-03-13T16:00:01.785606+00:00 iq-9075-evk ptp4l: [1061.627] port 1 (end0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
    2026-03-13T16:00:02.419840+00:00 iq-9075-evk ptp4l: [1062.261] rms 159053688363 max 318107376783 freq   +787 +/- 298 delay  3965 +/-   0
    2026-03-13T16:00:03.432827+00:00 iq-9075-evk ptp4l: [1063.273] rms   11 max   21 freq   +916 +/-   7 delay  3965 +/-   0
    ```

    ### Execute gPTP using RTC testbench

    The gPTP standard serves as a prerequisite for several other Time-Sensitive Networking (TSN) standards and, therefore, cannot be validated independently using the Real-Time Communication (RTC) testbench. As a result, gPTP is configured and exercised as part of the validation workflows for dependent standards within the RTC testbench environment.

    In the current release, the validation setup includes the ptp4l daemon running on both the master and slave devices, which are connected in a back-to-back topology. In alignment with the RTC testbench validation methodology, gPTP execution is integrated into other standard test scenarios.

    ## RTC testbench

    The Real-Time Communication (RTC) testbench is a validation framework used to simulate, configure, and verify real-time networking behavior across Ethernet and TSN-capable hardware. It is designed to support functional testing of time-sensitive features such as PTP-based time synchronization, IEEE 802.1Qav credit-based shaping, IEEE 802.1Qbv time-aware scheduling, Tx Launch Time, and multi-queue transmission. The tool enables execution of repeatable test scenarios for evaluating protocol behavior, timing accuracy, and deterministic packet delivery.

    Required dependencies: CLANG, XDPTools, LIBBPF, LIBYAML, and OPENSSL.

    Prerequisites to execute RTC testbench on Ethernet:

    * VLAN: Basic validation of VLAN configuration and frame segregation.
    * PCP: Verification of priority code point (PCP) handling for configured queues.
    * XDP: Validation of XDP configuration and data exchange using XDP sockets. The following XDP modes are supported:

      * Native XDP
      * AF\_XDP
      * AF\_XDP Zero-Copy

    ## Run IEEE 802.1Qbv EST tests

    IEEE 802.1Qbv – Enhancements for Scheduled Traffic (EST) is a Time-Sensitive Networking (TSN) amendment that provides deterministic Ethernet transmission through the Time-Aware Shaper (TAS) mechanism. TAS enables time-based control of incoming traffic by opening and closing transmission gates for individual queues according to a preconfigured schedule.

    You can run the IEEE 802.1Qbv Enhancements for Scheduled Traffic (EST) test scenarios on IQ-9075 EVK devices using a back-to-back connected Ethernet setup.

    Before running the IEEE 802.1Qbv EST test scenarios, ensure the following requirements are met:

    * Two IQ-9075 EVK devices are available and connected in a back-to-back topology using an RJ45 Ethernet cable.
    * The required test scripts and configuration files are available on both systems.

    ### Test setup

    1. Connect two IQ-9075 EVK devices in a back-to-back topology using an RJ45 Ethernet cable.

    2. Configure one device as the reference node for traffic transmission and the other as the mirror node for traffic reception.

    3. Ensure synchronization is enabled and correctly configured on both devices.

    4. Update the test scripts for the intended scenario:
       * Modify `ref.sh` to configure the transmitting interface and destination MAC address. Update the associated `reference.yaml` file with the required parameters.
       * Modify `mirror.sh` to configure the receiving interface and destination MAC address. Update the associated `mirror.yaml` file with the required parameters.
       * Update `flow.sh` to support the required `stmmac`-based scripts.

    5. Run `ref.sh` on the transmitting device and `mirror.sh` on the receiving device.

    6. After execution, verify the generated log files and metric outputs.

    7. Review the captured logs and packet flow metrics to validate the test results.

    ### Analyze test results

    During execution, the following files are generated by default:

    * `ref.log` and `mirror.log` in the execution directory on both devices
    * `/var/run/reference.txt`
    * `/var/run/mirror.txt`

    These files contain the test logs and packet flow metrics required for post-run analysis.

    Analyze the generated logs and metric files to confirm correct packet scheduling, transmission behavior, and synchronization performance for the executed test scenario.

    ### Supported applications and sockets

    | Application | Socket type | Description |
    | - | - | - |
    | OPCUA | AF\_PACKET | OPCUA traffic over the AF\_PACKET socket path |
    | OPCUA | AF\_XDP | OPCUA traffic over the AF\_XDP socket path |
    | PROFINET | AF\_PACKET | PROFINET traffic over the AF\_PACKET socket path |
    | PROFINET | AF\_XDP/Queue 2 | PROFINET traffic over the AF\_XDP socket path using Queue 2 |
    | BUSY POLLING | 8 ms, 1 ms, 250 µs, 125 µs | Ethernet operation in polling mode for packet flow handling |

    ### Sample logs

    **opcua**

    ```text theme={null}
    [2AOpcUa   : Tx:      8704 Rx:       112 RttMin[us]:    997506 RttAvg[us]:999208.357143 RttMax[us]:   1000481 Err:       0 Outlier:     112
    --------------------------------------------------------------------------------
    [2AOpcUa   : Tx:     40704 Rx:     40640 RttMin[us]:      1481 RttAvg[us]:193232.934621 RttMax[us]:   1000481 Err:   23360 Outlier:   12489
    --------------------------------------------------------------------------------
    [2AOpcUa   : Tx:     72736 Rx:     72672 RttMin[us]:      1481 RttAvg[us]:108721.355006 RttMax[us]:   1000481 Err:   23360 Outlier:   12489
    --------------------------------------------------------------------------------
    [2AOpcUa   : Tx:    104768 Rx:    104704 RttMin[us]:      1477 RttAvg[us]:75918.890568 RttMax[us]:   1000481 Err:   23360 Outlier:   12489
    --------------------------------------------------------------------------------
    [2AOpcUa   : Tx:    136800 Rx:    136736 RttMin[us]:      1470 RttAvg[us]:58485.176961 RttMax[us]:   1000481 Err:   23360 Outlier:   12489
    --------------------------------------------------------------------------------
    [2AOpcUa   : Tx:    168800 Rx:    168736 RttMin[us]:      1470 RttAvg[us]:47678.027629 RttMax[us]:   1000481 Err:   23360 Outlier:   12489
    ```

    **profinet**

    ```text theme={null}
    [9ATsnHigh : Tx:      2002 Rx:      4010 RttMin[us]:      1472 RttAvg[us]:269069.069077 RttMax[us]:   1013513 Err:    8029 Outlier:    2151
    TsnLow  : Tx:      2002 Rx:      1486 RttMin[us]:    515445 RttAvg[us]:597625.647376 RttMax[us]:   1001478 Err:       0 Outlier:    1486
    Rtc     : Tx:      2002 Rx:         0 RttMin[us]:18446744073709551615 RttAvg[us]:  0.000000 RttMax[us]:         0 Err:       0 Outlier:       0
    Rta     : Tx:        10 Rx:         0 RttMin[us]:18446744073709551615 RttAvg[us]:  0.000000 RttMax[us]:         0 Err:       0 Outlier:       0
    Dcp     : Tx:         1 Rx:         1 RttMin[us]:      1377 RttAvg[us]:1377.000000 RttMax[us]:      1377 Err:       0 Outlier:       0
    Lldp    : Tx:         0 Rx:         0 RttMin[us]:18446744073709551615 RttAvg[us]:  0.000000 RttMax[us]:         0 Err:       0 Outlier:       0
    UdpHigh : Tx:         2 Rx:         1 RttMin[us]:     53298 RttAvg[us]:53298.000000 RttMax[us]:     53298 Err:       0 Outlier:       0
    UdpLow  : Tx:         2 Rx:         1 RttMin[us]:     53251 RttAvg[us]:53251.000000 RttMax[us]:     53251 Err:       0 Outlier:       0
    ```

    **Busypolling**

    ```text theme={null}
    [2ARtc     : Tx:      8704 Rx:       249 RttMin[us]:   1000683 RttAvg[us]:1000693.216867 RttMax[us]:   1000703 Err:       0 Outlier:     249
    --------------------------------------------------------------------------------
    [2ARtc     : Tx:    247296 Rx:    242112 RttMin[us]:      2788 RttAvg[us]:25516.533365 RttMax[us]:   1001716 Err:  237992 Outlier:  242112
    --------------------------------------------------------------------------------
    [2ARtc     : Tx:    485888 Rx:    480717 RttMin[us]:      2751 RttAvg[us]:15020.334484 RttMax[us]:   1001716 Err:  286464 Outlier:  480717
    --------------------------------------------------------------------------------
    [2ARtc     : Tx:    724736 Rx:    719521 RttMin[us]:      2719 RttAvg[us]:11482.695397 RttMax[us]:   1001716 Err:  304128 Outlier:  719521
    --------------------------------------------------------------------------------
    [2ARtc     : Tx:    963584 Rx:    958404 RttMin[us]:      2719 RttAvg[us]:9707.512170 RttMax[us]:   1001716 Err:  321476 Outlier:  958404
    ```

    ## IEEE 802.1Qav credit-based shaper

    IEEE 802.1Qav (Amendment 12 to IEEE 802.1Q) defines enhancements to the forwarding and queuing functions of a VLAN bridge to support the transmission of time-sensitive data streams. These are primarily real-time audio/video (AV) traffic streams that require bounded latency, low latency variation, and loss-sensitive delivery.

    ### Credit-based shaper

    The credit-based shaper (CBS) is the core traffic shaping mechanism defined in IEEE 802.1Qav-2009 for Time-Sensitive Networking (TSN). Its primary goal is to smooth out traffic, reduce bursts, and ensure optimal bandwidth distribution across traffic classes. CBS is the mandatory transmission selection algorithm for all Stream Reservation (SR) class queues in AVB/TSN bridges and end stations.

    CBS regulates the rate at which frames are transmitted from a queue by using a credit counter. This ensures that reserved bandwidth is honored, bursts are smoothed, and best-effort traffic always retains at least 25% of the port bandwidth.

    ### CBS algorithm operation

    #### Eligibility for transmission

    A frame is eligible for transmission only if all the following conditions are true:

    * The queue contains one or more frames.
    * The `transmitAllowed` signal is `TRUE`, that is, the credit value is ≥ 0.

    If either condition fails, the frame waits and keeps accumulating credit until it becomes eligible.

    #### Credit behavior

    CBS maintains a credit value that determines when frames can be transmitted. The credit value changes based on the queue state and transmission activity.

    The following table describes the various operating conditions that impact credit behavior.

    | **Condition** | **Credit behavior** |
    | - | - |
    | Queue empty, `transmit` = `FALSE`, credit > 0 | Credit resets to 0 immediately |
    | Queue empty, `transmit` = `FALSE`, credit ≤ 0 | Credit doesn't change |
    | Queue has frames, `transmit` = `FALSE` (waiting) | Credit increases at the `idleSlope` rate |
    | Frame being transmitted (`transmit` = `TRUE`) | Credit decreases at the `sendSlope` rate |
    | Credit \< 0 | `transmitAllowed` = `FALSE`; the frame is held back |
    | Credit ≥ 0 | `transmitAllowed` = `TRUE`; the frame can be transmitted |

    ## Test AF\_XDP using DPDK testpmd

    Address Family eXpress Data Path (AF\_XDP) is a high-performance Linux socket interface built on top of XDP. Data Plane Development Kit (DPDK) provides AF\_XDP support through the `net_af_xdp` poll mode driver (PMD), allowing `testpmd` to send and receive packets using AF\_XDP sockets.

    The following test cases validate AF\_XDP receive, transmit, and packet-forwarding functionality using `testpmd`.

    ### Test case 1: RX only validation

    RX only mode is used to validate the AF\_XDP receive path. In this mode, `testpmd` only receives packets from the AF\_XDP interface and doesn't transmit any traffic. This test verifies packet reception, queue handling, packet statistics, and receive-side stability.

    ```text theme={null}
    dpdk-testpmd -l 0-3 -n 4 --vdev=net_af_xdp0,iface=end0,force_copy=0 -- -i --forward-mode=rxonly
    start
    show port stats all
    ```

    Use `iperf3` to generate traffic and `show port stats all` to verify that RX packets increase with no RX errors.

    ### Test case 2: TX only validation

    TX only mode is used to validate the AF\_XDP transmit path. In this mode, `testpmd` continuously generates and transmits packets through the AF\_XDP interface. This test verifies packet transmission capability, transmit queue functionality, traffic generation rate, and overall transmit-side performance.

    ```text theme={null}
    dpdk-testpmd -l 0-3 -n 4 --vdev=net_af_xdp0,iface=end0,force_copy=0 -- -i --forward-mode=txonly
    start
    show port stats all
    ```

    Use `iperf3` to generate traffic and `show port stats all` to verify that TX packets increase with no TX errors.

    ### Test case 3: Forward mode validation

    Forward mode validates end-to-end packet processing through the AF\_XDP interface. In this mode, packets received on the ingress interface are forwarded back through the egress path. This mode exercises both RX and TX paths simultaneously and verifies packet forwarding functionality, packet integrity, and overall AF\_XDP data path stability.

    ```text theme={null}
    dpdk-testpmd -l 0-3 -n 4 --vdev=net_af_xdp0,iface=end0,force_copy=0 -- -i --forward-mode=io
    start
    show port stats all
    ```

    Use `iperf3` to generate traffic and `show port stats all` to verify that both TX and RX packets increase without packet drops.

    ### Pass criteria

    The following table summarizes the pass criteria for each validation scenario.

    | **Test case** | **Pass criteria** |
    | :- | :- |
    | RX only | RX packets increase with zero errors |
    | TX only | TX packets transmitted successfully with zero errors |
    | Forward mode | Traffic forwarded correctly with no drops |
  </Tab>

  <Tab title="IQ-9075 with Mezzanine">
    ## **Configure link speed**

    You can configure link speed from the supported link modes in the `ethtool` command output.

    ```text theme={null}
    ethtool -s [device_name] autoneg [on/off] speed [100/1000/2500/5000/10000] duplex [full]

    ```

    For example:

    ```text theme={null}
    ethtool -s enp5s0f0 autoneg on speed 2500 duplex full
    ```

    ## **Configure energy efficient Ethernet**

    <Note>
      EEE feature is supported only on QEP8121 PHY.
    </Note>

    You can control EEE by performing certain functions such as verifying the status of EEE and enabling or disabling EEE. Sample commands and their outputs for each function are provided here for your reference.

    * Verify EEE status
      > ```text theme={null}
      > ethtool --show-eee [interface]
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --show-eee enP1p5s0f0
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enp5s0f0:
      > EEE status: disabled
      > Tx LPI: disabled
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      >                            2500baseT/Full
      >                            5000baseT/Full
      > Advertised EEE link modes:  Not reported
      > Link partner advertised EEE link modes:  Not reported
      > ```

    * Enable EEE
      > ```text theme={null}
      > ethtool --set-eee [interface] eee on
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --set-eee enP1p5s0f0 eee on
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enp5s0f0:
      > EEE status: enabled - inactive
      > Tx LPI: 600 (us)
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      >                            2500baseT/Full
      >                            5000baseT/Full
      > Advertised EEE link modes:  1000baseT/Full
      >                             10000baseT/Full
      >                             1000baseKX/Full
      >                             10000baseKX4/Full
      >                             10000baseKR/Full
      >                             2500baseT/Full
      >                             5000baseT/Full
      > Link partner advertised EEE link modes:  Not reported
      > ```

    * Disable EEE
      > ```text theme={null}
      > ethtool --set-eee [interface] eee off
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --set-eee enP1p5s0f0 eee off
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enp5s0f0:
      > EEE status: disabled
      > Tx LPI: disabled
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      >                            2500baseT/Full
      >                            5000baseT/Full
      > Advertised EEE link modes:  Not reported
      > Link partner advertised EEE link modes:  Not reported
      > ```

    ## **Verify preconfigured MAC address**

    QPS615 is a PCIe switch on IQ-9075 EVK with Mezzanine card. It doesn't have an electrically erasable programmable read only memory (EEPROM) to store the MAC address permanently. However, the MAC address is programmed and stored at a persistent path on the device.

    Verify the configuration of the interface.

    > ```text theme={null}
    > ip a
    > ```

    Sample output:

    > ```text theme={null}
    > enp5s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    > link/ether 5c:0a:11:22:33:44 brd ff:ff:ff:ff:ff:ff
    > altname enx5c0a11223344
    > ```
  </Tab>

  <Tab title="IQ-8275">
    ## **Configure link speed**

    You can configure link speed from the supported link modes in the `ethtool` command output.

    ```text theme={null}
    ethtool -s [device_name] autoneg [on/off] speed [10/100/1000/2500] duplex [full]

    ```

    For example:

    ```text theme={null}
    ethtool -s end0 autoneg on speed 2500 duplex full
    ```
  </Tab>

  <Tab title="IQ-8275 with Mezzanine">
    ## **Configure link speed**

    You can configure link speed from the supported link modes in the `ethtool` command output.

    ```text theme={null}
    ethtool -s [device_name] autoneg [on/off] speed [100/1000/2500] duplex [full]

    ```

    For example:

    ```text theme={null}
    ethtool -s enp5s0f0 autoneg on speed 2500 duplex full
    ```

    ## **Configure energy efficient Ethernet**

    <Note>
      EEE feature is supported only on QEP8121 PHY.
    </Note>

    You can control EEE by performing certain functions such as verifying the status of EEE and enabling or disabling EEE. Sample commands and their outputs for each function are provided here for your reference.

    * Verify EEE status
      > ```text theme={null}
      > ethtool --show-eee [interface]
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --show-eee enP1p5s0f0
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enp5s0f0:
      > EEE status: disabled
      > Tx LPI: disabled
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      >                            2500baseT/Full
      >                            5000baseT/Full
      > Advertised EEE link modes:  Not reported
      > Link partner advertised EEE link modes:  Not reported
      > ```

    * Enable EEE
      > ```text theme={null}
      > ethtool --set-eee [interface] eee on
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --set-eee enP1p5s0f0 eee on
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enp5s0f0:
      > EEE status: enabled - inactive
      > Tx LPI: 600 (us)
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      >                            2500baseT/Full
      >                            5000baseT/Full
      > Advertised EEE link modes:  1000baseT/Full
      >                             10000baseT/Full
      >                             1000baseKX/Full
      >                             10000baseKX4/Full
      >                             10000baseKR/Full
      >                             2500baseT/Full
      >                             5000baseT/Full
      > Link partner advertised EEE link modes:  Not reported
      > ```

    * Disable EEE
      > ```text theme={null}
      > ethtool --set-eee [interface] eee off
      > ```
      >
      > For example:
      >
      > ```text theme={null}
      > ethtool --set-eee enP1p5s0f0 eee off
      > ```
      >
      > Sample output:
      >
      > ```text theme={null}
      > EEE settings for enp5s0f0:
      > EEE status: disabled
      > Tx LPI: disabled
      > Supported EEE link modes:  1000baseT/Full
      >                            10000baseT/Full
      >                            1000baseKX/Full
      >                            10000baseKX4/Full
      >                            10000baseKR/Full
      >                            2500baseT/Full
      >                            5000baseT/Full
      > Advertised EEE link modes:  Not reported
      > Link partner advertised EEE link modes:  Not reported
      > ```

    ## **Verify preconfigured MAC address**

    QPS615 is a PCIe switch on IQ-8275 EVK with Mezzanine card. It doesn't have an electrically erasable programmable read only memory (EEPROM) to store the MAC address permanently. However, the MAC address is programmed and stored at a persistent path on the device.

    Verify the configuration of the interface.

    > ```text theme={null}
    > ip a
    > ```

    Sample output:

    > ```text theme={null}
    > enp5s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    > link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
    > altname enxaabbccddeeff
    > ```
  </Tab>

  <Tab title="IQ-615">
    IQ-615 supports a wide range of generic Ethernet features that don’t require specific configuration.
  </Tab>

  <Tab title="CQ-2390">
    CQ-2390 supports a wide range of generic Ethernet features that don’t require specific configuration.
  </Tab>

  <Tab title="IQ-2390">
    IQ-2390 supports a wide range of generic Ethernet features that don’t require specific configuration.
  </Tab>
</Tabs>

## **Next steps**

> * [Troubleshoot Ethernet issues](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/troubleshoot-ethernet-issues)
