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

# Bring up Ethernet

The following figure shows the workflow to bring up Ethernet on the reference kits.

<Frame caption="Ethernet bringup workflow">
  <img src="https://mintcdn.com/qualcomm-prod/h7j64QujhJHkLxyj/Technologies/Ethernet/media/qli-ethernet/bringup-workflow.svg?fit=max&auto=format&n=h7j64QujhJHkLxyj&q=85&s=df099c8909928ece63a7554f5a77a244" alt="Ethernet bringup workflow" width="769" height="133" data-path="Technologies/Ethernet/media/qli-ethernet/bringup-workflow.svg" />
</Frame>

<Tabs>
  <Tab title="QCS6490">
    <Note>
      * Flash the corresponding [CDT](https://dragonwingdocs.qualcomm.com/Key-Documents/Software-Release-Notes/release-specific-information) on the device to ensure that the correct configuration is used for Ethernet bringup.
      * The QPS615 MAC driver and kernel configuration are enabled by default in the source code.
      * To bring up hardware configurations other than the configuration provided by Qualcomm, see [Bring up alternate hardware enablement](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/bring-up-ethernet#bring-up-alternate-hardware-enablement).
    </Note>

    To bring up Ethernet functionality on RB3 Gen 2 Development Kit, do the following:

    > 1. The RB3 Gen 2 Development Kit comes with a [preconfigured MAC address](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/configure-ethernet-features#verify-preconfigured-mac-address). Skip this step if you choose to use the same MAC address.
    >    > Alternatively, to change the preconfigured MAC address on the device, perform the following steps:
    >    >
    >    > 1. Bring down the interface.
    >    >    > ```text theme={null}
    >    >    > ip link set <Interface_name> down
    >    >    > ```
    >    >    >
    >    >    > For example:
    >    >    >
    >    >    > ```text theme={null}
    >    >    > ip link set enP1p5s0f0 down
    >    >    > ```
    >    > 2. Assign the MAC address.
    >    >    > ```text theme={null}
    >    >    > ip link set dev <Interface_name> address <MAC>
    >    >    > ```
    >    >    >
    >    >    > For example:
    >    >    >
    >    >    > ```text theme={null}
    >    >    > ip link set dev enP15s0f0 address XX:XX:XX:YY:YY:YY
    >    >    > ```
    >    > 3. Bring up the interface.
    >    >    > ```text theme={null}
    >    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    >    > ip link set dev <Interface_name> up
    >    >    > ```
    >    >    >
    >    >    > For example:
    >    >    >
    >    >    > ```text theme={null}
    >    >    > ip addr add 169.254.227.235/16 dev enP1p5s0f0
    >    >    > ip link set dev enP1p5s0f0 up
    >    >    > ```
    >    >    >
    >    >    > Sample output:
    >    >    >
    >    >    > ```text theme={null}
    >    >    > ip -s addr show dev enP1p5s0f1
    >    >    > 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
    >    >    > ```
    >    >    >
    >    >    >     <Note>
    >    >    >       This MAC address is valid only for the current boot cycle. On rebooting the device, the MAC address is updated with the address from persistent storage as described in [Verify preconfigured MAC address](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/configure-ethernet-features#qcs6490).
    >    >    >     </Note>
    > 2. When the device is connected to a public network, the DHCP server connected to the network assigns an IP address automatically. If a dynamic IP address is not assigned to the device but Ethernet connectivity is required, configure a static IP address manually within the same subnet of the client.
    >    > ```text theme={null}
    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip addr add 169.254.227.235/16 dev enP1p5s0f0
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > ip -s addr show dev enP1p5s0f1
    >    > 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
    >    > ```
    >    >
    >    >     <Note>
    >    >       This IP address is valid only for the current boot cycle. On rebooting the device, the IP address isn’t retained.
    >    >     </Note>
    > 3. Configure the MTU size for the data packets over the Ethernet interface.
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> down
    >    >
    >    > ip link set dev <Interface_name> mtu <mtu_size>
    >    >
    >    > ip link set dev <Interface_name> up
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev enP1p5s0f0 down
    >    >
    >    > ip link set dev enP1p5s0f0 mtu 1500
    >    >
    >    > ip link set dev enP1p5s0f0 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > ip -s addr show dev enP1p5s0f1
    >    > 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
    >    > ```

    ## **Bring up alternate hardware enablement**

    You can attach MAC/PHY components other than the hardware configuration provided by Qualcomm and bring them up. To replace QPS615 with other PCIe based MAC/PHY, see [PCIe software support for QPS615 switch](https://dragonwingdocs.qualcomm.com/System/Interfaces/pcie#enable-qps615-pcie-switch).

    <Note>
      You must obtain the MAC/PHY driver and firmware from the respective vendor. Qualcomm isn’t responsible for these configuration changes.
    </Note>

    ### **Retain QPS615 PCIe and replace QEP8121/AQR113C**

    To retain QPS615 PCIe and replace QEP8121/AQR113C with other PHY components, do the following:

    1. Based on the attached PHY recommendations, update all the parameters in the `arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-staging.dtso` file.
    2. Compile the software.
       Sample code for QEP PHY:
       ```text theme={null}
       qep_vreg: qep_vreg {
                  compatible = "regulator-fixed";
                  regulator-name = "qep_vreg";
                  gpio = <&pm7325_gpios 8 0>;
                  regulator-min-microvolt = <1800000>;
                  regulator-max-microvolt = <1800000>;
                  enable-active-high;
               };
       pci@0,1 {
               interrupts-extended = <&tlmm 101 IRQ_TYPE_EDGE_FALLING>;
               interrupt-names = "wol_irq";
               phy-supply = <&qep_vreg>;
               pinctrl-names = "default";
               pinctrl-0 = <&napa_intn_wol_sig>;
               phy-reset-gpios = <&qps615 1 GPIO_ACTIVE_LOW>;
               reset-deassert-us = <20000>;
               };
       ```
       After flashing the modified software, the QPS615 driver scans the physical devices connected to it and matches the device tree information.
           <Note>
             A PHY may fail to load due to mismatch between the configuration in the `.dtso` file and actual recommendations for the PHY. In such cases, you must update the configuration in the `.dtso` file accordingly.
           </Note>

    ## **AQR PHY enablement**

    Though AQR PHY for 10 GbE is optional, it’s validated on reference RB3 Gen 2 Development Kit. When bringing up Ethernet with AQR PHY for the first time, flash the PHY firmware to the hardware once. The AQR PHY is then detected and the PHY driver is enabled by default.

    Qualcomm verified the following AQR PHY firmware on RB3 Gen 2 Development Kit:

    * Marvell firmware: `AQR-G4_v5.6.1-QR_Marvell_NoSwap_XFI_ID44874_VER1836.cld`
    * Marvell proprietary flashburn tool is recommended for flashing Marvell AQR113 PHY.
    * Contact Marvell Technology, Inc. to obtain the AQR PHY firmware.

    ### **Detect the PHY**

    To detect the PHY, do the following:

    1. Update the AQR PHY parameters in the `arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-staging.dtso` file.
    2. Compile the software.
       Sample code for AQR PHY:
       ```text theme={null}
       aqr_vreg: aqr_vreg {
               compatible = "regulator-fixed";
               regulator-name = "aqr_vreg";
               gpio = <&pm7250b_gpios 4 0>;
               regulator-min-microvolt = <1800000>;
               regulator-max-microvolt = <1800000>;
               enable-active-high;
               };

       pci@0,0 {
               interrupts-extended = <&tlmm 141 IRQ_TYPE_EDGE_FALLING>;
               interrupt-names = "wol_irq";
               phy-supply = <&aqr_vreg>;
               pinctrl-names = "default";
               pinctrl-0 = <&aqr_intn_wol_sig>;
               phy-reset-gpios = <&qps615 0 GPIO_ACTIVE_LOW>;
               reset-deassert-us = <221000>;

               gpio-controller;
               #gpio-cells = <2>;
               };
       ```
  </Tab>

  <Tab title="IQ-9075">
    <Note>
      Flash the corresponding [CDT](https://dragonwingdocs.qualcomm.com/Key-Documents/Software-Release-Notes/release-specific-information) on the device to ensure that the correct configuration is used for Ethernet bringup.
    </Note>

    To bring up Ethernet functionality on IQ-9075 EVK, do the following:

    > 1. The IQ-9075 EVK comes with a MAC address. Skip this step if you choose to use the same MAC address.
    >    > Alternatively, you can change the MAC address on the device.
    >    >
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> address <MAC Address>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev eth0 address XX:XX:XX:YY:YY:YY
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > eth0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::1234:abcd:5678:9abc/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```
    >    >
    >    >     <Note>
    >    >       This MAC address is valid only for the current boot cycle. On rebooting the device, the MAC address is updated with the address from persistent storage.
    >    >     </Note>
    > 2. When the device is connected to a public network, the DHCP server connected to the network assigns an IP address automatically. If a dynamic IP address is not assigned to the device but Ethernet connectivity is required, configure a static IP address manually within the same subnet of the client.
    >    > ```text theme={null}
    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip addr add 192.168.1.1/24 dev eth0
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > eth0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::1234:abcd:5678:9abc/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```

    > 3. Configure the MTU size for the data packets over the Ethernet interface.
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> down
    >    >
    >    > ip link set dev <Interface_name> mtu <mtu_size>
    >    >
    >    > ip link set dev <Interface_name> up
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev eth0 down
    >    >
    >    > ip link set dev eth0 mtu 1500
    >    >
    >    > ip link set dev eth0 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > eth0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::1234:abcd:5678:9abc/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```
  </Tab>

  <Tab title="IQ-9075 with Mezzanine">
    <Note>
      * Flash the corresponding [CDT](https://dragonwingdocs.qualcomm.com/Key-Documents/Software-Release-Notes/release-specific-information) on the device to ensure that the correct configuration is used for Ethernet bringup.
      * The QPS615 MAC driver and kernel configuration are enabled by default in the source code.
      * To bring up hardware configurations other than the configuration provided by Qualcomm, see [Bring up alternate hardware enablement](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/bring-up-ethernet#bring-up-alternate-hardware-enablement-2).
    </Note>

    To bring up Ethernet functionality on IQ-9075 EVK with Mezzanine card, do the following:

    > 1. The IQ-9075 EVK with Mezzanine comes with a MAC address. Skip this step if you choose to use the same MAC address.
    >    > Alternatively, you can change the MAC address on the device.
    >    >
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> address <MAC Address>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set enp5s0f1 down
    >    > ip link set dev enp5s0f1 address ec:21:e5:11:4f:eb
    >    > ip link set enp5s0f1 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > enp5s0f1:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >    >             link/ether ec:21:e5:11:4f:eb brd ff:ff:ff:ff:ff:ff permaddr ec:21:e5:11:4f:ea
    >    >             altname enxec21e5114fea
    >    >             inet 192.168.1.1/24 scope global enp5s0f1
    >    >             valid_lft forever preferred_lft forever
    >    > ```
    >    >
    >    >     <Note>
    >    >       This MAC address is valid only for the current boot cycle. On rebooting the device, the MAC address is updated with the address from persistent storage.
    >    >     </Note>
    > 2. When the device is connected to a public network, the DHCP server connected to the network assigns an IP address automatically. If a dynamic IP address isn't assigned to the device but Ethernet connectivity is required, configure a static IP address manually within the same subnet of the client.
    >    > ```text theme={null}
    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip addr add 192.168.1.1/24 dev enp5s0f1
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > enp5s0f1:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >    >             link/ether ec:21:e5:11:4f:eb brd ff:ff:ff:ff:ff:ff permaddr ec:21:e5:11:4f:ea
    >    >             altname enxec21e5114fea
    >    >             inet 192.168.1.1/24 scope global enp5s0f1
    >    >             valid_lft forever preferred_lft forever
    >    > ```

    > 3. Configure the MTU size for the data packets over the Ethernet interface.
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> down
    >    >
    >    > ip link set dev <Interface_name> mtu <mtu_size>
    >    >
    >    > ip link set dev <Interface_name> up
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev enp5s0f1 down
    >    >
    >    > ip link set dev enp5s0f1 mtu 1500
    >    >
    >    > ip link set dev enp5s0f1 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > enp5s0f1:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >    >             link/ether ec:21:e5:11:4f:eb brd ff:ff:ff:ff:ff:ff permaddr ec:21:e5:11:4f:ea
    >    >             altname enxec21e5114fea
    >    >             inet 192.168.1.1/24 scope global enp5s0f1
    >    >             valid_lft forever preferred_lft forever
    >    > ```

    ## **Bring up alternate hardware enablement**

    You can attach MAC/PHY components other than the hardware configuration provided by Qualcomm and bring them up. To replace QPS615 with other PCIe based MAC/PHY, see [PCIe software support for QPS615 switch](https://dragonwingdocs.qualcomm.com/System/Interfaces/pcie#enable-qps615-pcie-switch).

    <Note>
      You must obtain the MAC/PHY driver and firmware from the respective vendor. Qualcomm isn't responsible for these configuration changes.
    </Note>

    ### **Retain QPS615 PCIe and replace QEP8121/AQR113C**

    To retain QPS615 PCIe and replace QEP8121/AQR113C with other PHY components, do the following:

    1. Based on the attached PHY recommendations, update all the parameters in the `arch/arm64/boot/dts/qcom/lemans-evk-staging.dtso` file.
    2. Compile the software.
       Sample code for QEP PHY:
       ```text theme={null}
       napa_intn_wol_sig: napa-intn-wol-sig {
               pins = "gpio57";
               function = "gpio";
               input-enable;
               bias-disable;
           };

       pci@0,1 {
               interrupts-extended = <&tlmm 57 IRQ_TYPE_EDGE_FALLING>;
               interrupt-names = "wol_irq";
               nvmem-cells = <&mac_addr3>;
               nvmem-cell-names = "mac-address";
               pinctrl-names = "default";
               pinctrl-0 = <&napa_intn_wol_sig>;
               phy-reset-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>;
               reset-deassert-us = <20000>;
           };
       ```
       After flashing the modified software, the QPS615 driver scans the physical devices connected to it and matches the device tree information.
           <Note>
             A PHY may fail to load due to mismatch between the configuration in the `.dtso` file and actual recommendations for the PHY. In such cases, you must update the configuration in the `.dtso` file accordingly.
           </Note>

    ## **AQR PHY enablement**

    Though AQR PHY for 10 GbE is optional, it's validated on reference IQ-9075 EVK with Mezzanine card. When bringing up Ethernet with AQR PHY for the first time, flash the PHY firmware to the hardware once. The AQR PHY is then detected and the PHY driver is enabled by default.

    Qualcomm verified the following AQR PHY firmware on IQ-9075 EVK with Mezzanine card:

    * Marvell firmware: `AQR-G4_v5.6.1-QR_Marvell_NoSwap_XFI_ID44874_VER1836.cld`
    * Marvell proprietary flashburn tool is recommended for flashing Marvell AQR113 PHY.
    * Contact Marvell Technology, Inc. to obtain the AQR PHY firmware.

    ### **Detect the PHY**

    To detect the PHY, do the following:

    1. Update the AQR PHY parameters in the `arch/arm64/boot/dts/qcom/lemans-evk-staging.dtso` file.
    2. Compile the software.
       Sample code for AQR PHY:
       ```text theme={null}
       aqr_intn_wol_sig: aqr-intn-wol-sig {
               pins = "gpio56";
               function = "gpio";
               input-enable;
               bias-disable;
           };

       pci@0,0 {
               interrupts-extended = <&tlmm 56 IRQ_TYPE_EDGE_FALLING>;
               interrupt-names = "wol_irq";
               nvmem-cells = <&mac_addr2>;
               nvmem-cell-names = "mac-address";
               pinctrl-names = "default";
               pinctrl-0 = <&aqr_intn_wol_sig>;
               phy-reset-gpios = <&tlmm 76 GPIO_ACTIVE_HIGH>;
               reset-deassert-us = <221000>;
           };
       ```

    ## **Enable QPS615 Ethernet ports using DTS overlay**

    Before you begin, ensure that the Qualcomm Linux build is flashed successfully onto the target device.

    To enable QPS615 Ethernet ports, which internally rely on a Device tree source (DTS) overlay, do the following:

    1. Boot the target device.
    2. Write the overlay selection value.
       ```text theme={null}
       echo -n "staging" > /var/data
       ```
    3. Program the DTS overlay variable using `efivar`.
       ```text theme={null}
       efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays \
       -w -f /var/data
       ```
    4. Verify whether the write operation is successful.
       ```text theme={null}
       efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -p
       ```
    5. Flush filesystem buffers.
       ```text theme={null}
       sync
       ```
    6. Reboot the device.
       ```text theme={null}
       reboot
       ```

    After the next boot cycle, the QPS615 Ethernet ports should be functional and available for use.
  </Tab>

  <Tab title="IQ-8275">
    <Note>
      Flash the corresponding [CDT](https://dragonwingdocs.qualcomm.com/Key-Documents/Software-Release-Notes/release-specific-information) on the device to ensure that the correct configuration is used for Ethernet bringup.
    </Note>

    To bring up Ethernet functionality on IQ-8275 EVK, do the following:

    > 1. The IQ-8275 EVK comes with a MAC address. Skip this step if you choose to use the same MAC address.
    >    > Alternatively, you can change the MAC address on the device.
    >    >
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> address <MAC>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev end0 address XX:XX:XX:YY:YY:YY
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > end0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 192.168.1.1/24 brd 192.168.1.255 scope global end0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::1234:abcd:5678:9abc/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```
    >    >
    >    >     <Note>
    >    >       This MAC address is valid only for the current boot cycle. On rebooting the device, the MAC address is updated with the address from persistent storage.
    >    >     </Note>
    > 2. When the device is connected to a public network, the DHCP server connected to the network assigns an IP address automatically. If a dynamic IP address isn't assigned to the device but Ethernet connectivity is required, configure a static IP address manually within the same subnet of the client.
    >    > ```text theme={null}
    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip addr add 192.168.1.1/24 dev end0
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > end0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 192.168.1.1/24 brd 192.168.1.255 scope global end0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::1234:abcd:5678:9abc/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```

    > 3. Configure the MTU size for the data packets over the Ethernet interface.
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> down
    >    >
    >    > ip link set dev <Interface_name> mtu <mtu_size>
    >    >
    >    > ip link set dev <Interface_name> up
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev end0 down
    >    >
    >    > ip link set dev end0 mtu 1500
    >    >
    >    > ip link set dev end0 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > end0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 192.168.1.1/24 brd 192.168.1.255 scope global end0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::1234:abcd:5678:9abc/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```
  </Tab>

  <Tab title="IQ-8275 with Mezzanine">
    <Note>
      * Flash the corresponding [CDT](https://dragonwingdocs.qualcomm.com/Key-Documents/Software-Release-Notes/release-specific-information) on the device to ensure that the correct configuration is used for Ethernet bringup.
      * The QPS615 MAC driver and kernel configuration are enabled by default in the source code.
      * To bring up hardware configurations other than the configuration provided by Qualcomm, see [Bring up alternate hardware enablement](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/bring-up-ethernet#bring-up-alternate-hardware-enablement-3).
    </Note>

    To bring up Ethernet functionality on IQ-8275 EVK with Mezzanine card, do the following:

    > 1. The IQ-8275 EVK with Mezzanine comes with a MAC address. Skip this step if you choose to use the same MAC address.
    >    > Alternatively, you can change the MAC address on the device.
    >    >
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> address <MAC Address>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set enp5s0f1 down
    >    > ip link set dev enp5s0f1 address 5c:0a:11:22:33:45
    >    > ip link set enp5s0f1 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > enp5s0f1:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >    >             link/ether 5c:0a:11:22:33:45 brd ff:ff:ff:ff:ff:ff permaddr 5c:0a:11:22:33:44
    >    >             altname enx5c0a11223344
    >    >             inet 192.168.1.1/24 scope global enp5s0f1
    >    >             valid_lft forever preferred_lft forever
    >    >             inet6 fe80::a45c:bca3:bb00:7f43/64 scope link noprefixroute
    >    >             valid_lft forever preferred_lft forever
    >    > ```
    >    >
    >    >     <Note>
    >    >       This MAC address is valid only for the current boot cycle. On rebooting the device, the MAC address is updated with the address from persistent storage.
    >    >     </Note>
    > 2. When the device is connected to a public network, the DHCP server connected to the network assigns an IP address automatically. If a dynamic IP address isn't assigned to the device but Ethernet connectivity is required, configure a static IP address manually within the same subnet of the client.
    >    > ```text theme={null}
    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip addr add 192.168.1.1/24 dev enp5s0f1
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > enp5s0f1:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >    >             link/ether 5c:0a:11:22:33:45 brd ff:ff:ff:ff:ff:ff permaddr 5c:0a:11:22:33:44
    >    >             altname enx5c0a11223344
    >    >             inet 192.168.1.1/24 scope global enp5s0f1
    >    >             valid_lft forever preferred_lft forever
    >    >             inet6 fe80::a45c:bca3:bb00:7f43/64 scope link noprefixroute
    >    >             valid_lft forever preferred_lft forever
    >    > ```

    > 3. Configure the MTU size for the data packets over the Ethernet interface.
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> down
    >    >
    >    > ip link set dev <Interface_name> mtu <mtu_size>
    >    >
    >    > ip link set dev <Interface_name> up
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev enp5s0f1 down
    >    >
    >    > ip link set dev enp5s0f1 mtu 1500
    >    >
    >    > ip link set dev enp5s0f1 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > enp5s0f1:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    >    >             link/ether 5c:0a:11:22:33:45 brd ff:ff:ff:ff:ff:ff permaddr 5c:0a:11:22:33:44
    >    >             altname enx5c0a11223344
    >    >             inet 192.168.1.1/24 scope global enp5s0f1
    >    >             valid_lft forever preferred_lft forever
    >    >             inet6 fe80::a45c:bca3:bb00:7f43/64 scope link noprefixroute
    >    >             valid_lft forever preferred_lft forever
    >    > ```

    ## **Bring up alternate hardware enablement**

    You can attach MAC/PHY components other than the hardware configuration provided by Qualcomm and bring them up. To replace QPS615 with other PCIe based MAC/PHY, see [PCIe software support for QPS615 switch](https://dragonwingdocs.qualcomm.com/System/Interfaces/pcie#enable-qps615-pcie-switch).

    <Note>
      You must obtain the MAC/PHY driver and firmware from the respective vendor. Qualcomm isn't responsible for these configuration changes.
    </Note>

    ### **Retain QPS615 PCIe and replace QEP8121/AQR113C**

    To retain QPS615 PCIe and replace QEP8121/AQR113C with other PHY components, do the following:

    1. Based on the attached PHY recommendations, update all the parameters in the `arch/arm64/boot/dts/qcom/monaco-evk-staging.dtso` file.
    2. Compile the software.
       Sample code for QEP PHY:
       ```text theme={null}
       napa_intn_wol_sig: napa-intn-wol-sig {
               pins = "gpio39";
               function = "gpio";
               input-enable;
               bias-disable;
           };

       pci@0,1 {
               interrupts-extended = <&tlmm 39 IRQ_TYPE_EDGE_FALLING>;
               interrupt-names = "wol_irq";
               nvmem-cells = <&mac_addr2>;
               nvmem-cell-names = "mac-address";
               pinctrl-names = "default";
               pinctrl-0 = <&napa_intn_wol_sig>;
               phy-reset-gpios = <&expander5 0 GPIO_ACTIVE_HIGH>;
               reset-deassert-us = <20000>;
           };
       ```
       After flashing the modified software, the QPS615 driver scans the physical devices connected to it and matches the device tree information.
           <Note>
             A PHY may fail to load due to mismatch between the configuration in the `.dtso` file and actual recommendations for the PHY. In such cases, you must update the configuration in the `.dtso` file accordingly.
           </Note>

    ## **AQR PHY enablement**

    Though AQR PHY for 10 GbE is optional, it's validated on reference IQ-8275 EVK with Mezzanine card. When bringing up Ethernet with AQR PHY for the first time, flash the PHY firmware to the hardware once. The AQR PHY is then detected and the PHY driver is enabled by default.

    Qualcomm verified the following AQR PHY firmware on IQ-8275 EVK with Mezzanine card:

    * Marvell firmware: `AQR-G4_v5.6.1-QR_Marvell_NoSwap_XFI_ID44874_VER1836.cld`
    * Marvell proprietary flashburn tool is recommended for flashing Marvell AQR113 PHY.
    * Contact Marvell Technology, Inc. to obtain the AQR PHY firmware.

    ### **Detect the PHY**

    To detect the PHY, do the following:

    1. Update the AQR PHY parameters in the `arch/arm64/boot/dts/qcom/monaco-evk-staging.dtso` file.
    2. Compile the software.
       Sample code for AQR PHY:
       ```text theme={null}
       aqr_intn_wol_sig: aqr-intn-wol-sig {
               pins = "gpio40";
               function = "gpio";
               input-enable;
               bias-disable;
           };

       pci@0,0 {
               interrupts-extended = <&tlmm 40 IRQ_TYPE_EDGE_FALLING>;
               interrupt-names = "wol_irq";
               nvmem-cells = <&mac_addr1>;
               nvmem-cell-names = "mac-address";
               pinctrl-names = "default";
               pinctrl-0 = <&aqr_intn_wol_sig>;
               phy-reset-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
               reset-deassert-us = <221000>;
           };
       ```

    ## **Enable QPS615 Ethernet ports using DTS overlay**

    Before you begin, ensure that the Qualcomm Linux build is flashed successfully onto the target device.

    To enable QPS615 Ethernet ports, which internally rely on a Device tree source (DTS) overlay, do the following:

    1. Boot the target device.
    2. Write the overlay selection value.
       ```text theme={null}
       echo -n "staging" > /var/data
       ```
    3. Program the DTS overlay variable using `efivar`.
       ```text theme={null}
       efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays \
       -w -f /var/data
       ```
    4. Verify whether the write operation is successful.
       ```text theme={null}
       efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -p
       ```
    5. Flush filesystem buffers.
       ```text theme={null}
       sync
       ```
    6. Reboot the device.
       ```text theme={null}
       reboot
       ```

    After the next boot cycle, the QPS615 Ethernet ports should be functional and available for use.
  </Tab>

  <Tab title="IQ-615">
    <Note>
      Flash the corresponding [CDT](https://dragonwingdocs.qualcomm.com/Key-Documents/Software-Release-Notes/release-specific-information) on the device to ensure that the correct configuration is used for Ethernet bringup.
    </Note>

    To bring up Ethernet functionality on IQ-615 EVK, do the following:

    > 1. The IQ-615 EVK comes with a MAC address. Skip this step if you choose to use the same MAC address.
    >    > Alternatively, you can change the MAC address on the device.
    >    >
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> address <MAC>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev eth0 address XX:XX:XX:YY:YY:YY
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > eth0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 169.254.210.12/16 brd 169.254.255.255 scope global eth0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::44e6:e3ff:fe29:1c58/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::ff5a:f25c:91c:4c1d/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```
    >    >
    >    >     <Note>
    >    >       This MAC address is valid only for the current boot cycle. On rebooting the device, the MAC address is updated with a random address.
    >    >     </Note>
    > 2. When the device is connected to a public network, the DHCP server connected to the network assigns an IP address automatically. If a dynamic IP address is not assigned to the device but Ethernet connectivity is required, configure a static IP address manually within the same subnet of the client.
    >    > ```text theme={null}
    >    > ip addr add <ip>/<prefix> dev <Interface_name>
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip addr add 169.254.210.12/16 dev eth0
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > eth0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 169.254.210.12/16 brd 169.254.255.255 scope global eth0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::44e6:e3ff:fe29:1c58/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::ff5a:f25c:91c:4c1d/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```

    > 3. Configure the MTU size for the data packets over the Ethernet interface.
    >    > ```text theme={null}
    >    > ip link set dev <Interface_name> down
    >    >
    >    > ip link set dev <Interface_name> mtu <mtu_size>
    >    >
    >    > ip link set dev <Interface_name> up
    >    > ```
    >    >
    >    > For example:
    >    >
    >    > ```text theme={null}
    >    > ip link set dev eth0 down
    >    >
    >    > ip link set dev eth0 mtu 1500
    >    >
    >    > ip link set dev eth0 up
    >    > ```
    >    >
    >    > Sample output:
    >    >
    >    > ```text theme={null}
    >    > eth0:   <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    >    >         link/ether XX:XX:XX:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    >    >         inet 169.254.210.12/16 brd 169.254.255.255 scope global eth0
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::44e6:e3ff:fe29:1c58/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    >         inet6 fe80::ff5a:f25c:91c:4c1d/64 scope link
    >    >         valid_lft forever preferred_lft forever
    >    > ```

    ## **Enable QPS615 Ethernet ports using DTS overlay**

    Before you begin, ensure that the Qualcomm Linux build is flashed successfully onto the target device.

    To enable QPS615 Ethernet ports, which internally rely on a Device tree source (DTS) overlay, do the following:

    1. Boot the target device.
    2. Write the overlay selection value.
       ```text theme={null}
       echo -n "staging" > /var/data
       ```
    3. Program the DTS overlay variable using `efivar`.
       ```text theme={null}
       efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays \
       -w -f /var/data
       ```
    4. Verify whether the write operation is successful.
       ```text theme={null}
       efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -p
       ```
    5. Flush filesystem buffers.
       ```text theme={null}
       sync
       ```
    6. Reboot the device.
       ```text theme={null}
       reboot
       ```

    After the next boot cycle, the QPS615 Ethernet ports should be functional and available for use.
  </Tab>
</Tabs>

**Next steps**

> * [Perform Ethernet operations](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/perform-ethernet-operations)
> * [Configure Ethernet features](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/configure-ethernet-features)
> * [Troubleshoot Ethernet issues](https://dragonwingdocs.qualcomm.com/Technologies/Ethernet/troubleshoot-ethernet-issues)
