diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 3afe48c..c222af1 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -64,8 +64,7 @@
 EthernetInterface::EthernetInterface(sdbusplus::bus_t& bus,
                                      const std::string& objPath,
                                      const config::Parser& config,
-                                     DHCPConf dhcpEnabled, Manager& parent,
-                                     bool emitSignal,
+                                     Manager& parent, bool emitSignal,
                                      std::optional<bool> enabled) :
     Ifaces(bus, objPath.c_str(),
            emitSignal ? Ifaces::action::defer_emit
@@ -75,7 +74,7 @@
     auto intfName = objPath.substr(objPath.rfind("/") + 1);
     std::replace(intfName.begin(), intfName.end(), '_', '.');
     interfaceName(intfName);
-    EthernetInterfaceIntf::dhcpEnabled(dhcpEnabled);
+    EthernetInterfaceIntf::dhcpEnabled(getDHCPValue(config));
     EthernetInterfaceIntf::ipv6AcceptRA(getIPv6AcceptRA(config));
     EthernetInterfaceIntf::nicEnabled(enabled ? *enabled : queryNicEnabled());
     const auto& gatewayList = manager.getRouteTable().getDefaultGateway();
@@ -887,8 +886,8 @@
         config::pathForIntfConf(manager.getConfDir(), vlanInterfaceName));
 
     auto vlanIntf = std::make_unique<phosphor::network::VlanInterface>(
-        bus, path.c_str(), config, getDHCPValue(config),
-        EthernetInterfaceIntf::nicEnabled(), id, *this, manager);
+        bus, path.c_str(), config, EthernetInterfaceIntf::nicEnabled(), id,
+        *this, manager);
 
     // Fetch the ip address from the system
     // and create the dbus object.
@@ -917,7 +916,7 @@
     // Pass the parents nicEnabled property, so that the child
     // VLAN interface can inherit.
     auto vlanIntf = std::make_unique<phosphor::network::VlanInterface>(
-        bus, path.c_str(), config::Parser(), EthernetInterface::DHCPConf::none,
+        bus, path.c_str(), config::Parser(),
         EthernetInterfaceIntf::nicEnabled(), id, *this, manager);
 
     // write the device file for the vlan interface.
diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp
index e4be9ab..e0f2987 100644
--- a/src/ethernet_interface.hpp
+++ b/src/ethernet_interface.hpp
@@ -82,15 +82,14 @@
      *  @param[in] bus - Bus to attach to.
      *  @param[in] objPath - Path to attach at.
      *  @param[in] config - The parsed configuation file.
-     *  @param[in] dhcpEnabled - is dhcp enabled(true/false).
      *  @param[in] parent - parent object.
      *  @param[in] emitSignal - true if the object added signal needs to be
      *                          send.
      *  @param[in] enabled - Override the lookup of nicEnabled
      */
     EthernetInterface(sdbusplus::bus_t& bus, const std::string& objPath,
-                      const config::Parser& config, DHCPConf dhcpEnabled,
-                      Manager& parent, bool emitSignal = true,
+                      const config::Parser& config, Manager& parent,
+                      bool emitSignal = true,
                       std::optional<bool> enabled = std::nullopt);
 
     /** @brief Function used to load the nameservers.
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 7d288be..86d892f 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -133,7 +133,7 @@
         config::Parser config(config::pathForIntfConf(confDir, interface));
 
         auto intf = std::make_shared<phosphor::network::EthernetInterface>(
-            bus, objPath.string(), config, getDHCPValue(config), *this);
+            bus, objPath.string(), config, *this);
 
         intf->createIPAddressObjects();
         intf->createStaticNeighborObjects();
diff --git a/src/vlan_interface.cpp b/src/vlan_interface.cpp
index 1ea6a17..129cbf7 100644
--- a/src/vlan_interface.cpp
+++ b/src/vlan_interface.cpp
@@ -20,13 +20,12 @@
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 
 VlanInterface::VlanInterface(sdbusplus::bus_t& bus, const std::string& objPath,
-                             const config::Parser& config, DHCPConf dhcpEnabled,
-                             bool nicEnabled, uint32_t vlanID,
-                             EthernetInterface& intf, Manager& parent) :
+                             const config::Parser& config, bool nicEnabled,
+                             uint32_t vlanID, EthernetInterface& intf,
+                             Manager& parent) :
     VlanIface(bus, objPath.c_str()),
     DeleteIface(bus, objPath.c_str()),
-    EthernetInterface(bus, objPath, config, dhcpEnabled, parent, true,
-                      nicEnabled),
+    EthernetInterface(bus, objPath, config, parent, true, nicEnabled),
     parentInterface(intf)
 {
     id(vlanID);
diff --git a/src/vlan_interface.hpp b/src/vlan_interface.hpp
index 2d8baaa..09b9bb0 100644
--- a/src/vlan_interface.hpp
+++ b/src/vlan_interface.hpp
@@ -41,7 +41,6 @@
      *  @param[in] bus - Bus to attach to.
      *  @param[in] objPath - Path to attach at.
      *  @param[in] config - The parsed configuation file.
-     *  @param[in] dhcpEnabled - DHCP enable value.
      *  @param[in] vlanID - vlan identifier.
      *  @param[in] intf - ethernet interface object.
      *  @param[in] manager - network manager object.
@@ -49,9 +48,8 @@
      *  This constructor is called during loading the VLAN Interface
      */
     VlanInterface(sdbusplus::bus_t& bus, const std::string& objPath,
-                  const config::Parser& config, DHCPConf dhcpEnabled,
-                  bool nicEnabled, uint32_t vlanID, EthernetInterface& intf,
-                  Manager& parent);
+                  const config::Parser& config, bool nicEnabled,
+                  uint32_t vlanID, EthernetInterface& intf, Manager& parent);
 
     /** @brief Delete this d-bus object.
      */
diff --git a/test/mock_ethernet_interface.hpp b/test/mock_ethernet_interface.hpp
index a0358ed..5e21170 100644
--- a/test/mock_ethernet_interface.hpp
+++ b/test/mock_ethernet_interface.hpp
@@ -13,9 +13,9 @@
 {
   public:
     MockEthernetInterface(sdbusplus::bus_t& bus, const std::string& objPath,
-                          const config::Parser& config, DHCPConf dhcpEnabled,
-                          Manager& parent, bool emitSignal) :
-        EthernetInterface(bus, objPath, config, dhcpEnabled, parent, emitSignal,
+                          const config::Parser& config, Manager& parent,
+                          bool emitSignal) :
+        EthernetInterface(bus, objPath, config, parent, emitSignal,
                           /*nicEnabled=*/true)
     {
     }
diff --git a/test/mock_network_manager.hpp b/test/mock_network_manager.hpp
index 46c7c4b..fde3bbd 100644
--- a/test/mock_network_manager.hpp
+++ b/test/mock_network_manager.hpp
@@ -34,8 +34,7 @@
             config::Parser config(config::pathForIntfConf(confDir, interface));
             auto intf =
                 std::make_shared<phosphor::network::MockEthernetInterface>(
-                    bus, objPath.string(), config, getDHCPValue(config), *this,
-                    true);
+                    bus, objPath.string(), config, *this, true);
             intf->createIPAddressObjects();
             intf->createStaticNeighborObjects();
             intf->loadNameServers(config);
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index ac96190..0893147 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -43,12 +43,8 @@
     {
         mock_clear();
         mock_addIF("test0", 1, mac);
-        return {bus,
-                "/xyz/openbmc_test/network/test0",
-                config::Parser(),
-                EthernetInterface::DHCPConf::none,
-                manager,
-                true};
+        return {bus, "/xyz/openbmc_test/network/test0", config::Parser(),
+                manager, true};
     }
 
     int countIPObjects()
diff --git a/test/test_vlan_interface.cpp b/test/test_vlan_interface.cpp
index 8d31c7b..c4734b1 100644
--- a/test/test_vlan_interface.cpp
+++ b/test/test_vlan_interface.cpp
@@ -44,7 +44,6 @@
         return {bus,
                 "/xyz/openbmc_test/network/test0",
                 config::Parser(),
-                EthernetInterface::DHCPConf::none,
                 manager,
                 false,
                 true};
