diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index baf530f..a68e646 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -179,16 +179,14 @@
     }
 }
 
-bool EthernetInterface::dhcpIsEnabled(IP::Protocol family, bool ignoreProtocol)
+bool EthernetInterface::dhcpIsEnabled(IP::Protocol family)
 {
-    return ((EthernetInterfaceIntf::dhcpEnabled() ==
-             EthernetInterface::DHCPConf::both) ||
-            ((EthernetInterfaceIntf::dhcpEnabled() ==
-              EthernetInterface::DHCPConf::v6) &&
-             ((family == IP::Protocol::IPv6) || ignoreProtocol)) ||
-            ((EthernetInterfaceIntf::dhcpEnabled() ==
-              EthernetInterface::DHCPConf::v4) &&
-             ((family == IP::Protocol::IPv4) || ignoreProtocol)));
+    const auto cur = EthernetInterfaceIntf::dhcpEnabled();
+    return cur == EthernetInterface::DHCPConf::both ||
+           (family == IP::Protocol::IPv6 &&
+            cur == EthernetInterface::DHCPConf::v6) ||
+           (family == IP::Protocol::IPv4 &&
+            cur == EthernetInterface::DHCPConf::v4);
 }
 
 bool EthernetInterface::dhcpToBeEnabled(IP::Protocol family,
@@ -1273,12 +1271,6 @@
 
 void EthernetInterface::deleteAll()
 {
-    if (dhcpIsEnabled(IP::Protocol::IPv4, true))
-    {
-        log<level::INFO>("DHCP enabled on the interface"),
-            entry("INTERFACE=%s", interfaceName().c_str());
-    }
-
     // clear all the ip on the interface
     addrs.clear();
 
diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp
index 0fe3778..a4a98d1 100644
--- a/src/ethernet_interface.hpp
+++ b/src/ethernet_interface.hpp
@@ -349,11 +349,9 @@
   private:
     /** @brief Determines if DHCP is active for the IP::Protocol supplied.
      *  @param[in] protocol - Either IPv4 or IPv6
-     *  @param[in] ignoreProtocol - Allows IPv4 and IPv6 to be checked using a
-     *                              single call.
      *  @returns true/false value if DHCP is active for the input protocol
      */
-    bool dhcpIsEnabled(IP::Protocol protocol, bool ignoreProtocol = false);
+    bool dhcpIsEnabled(IP::Protocol protocol);
 
     /** @brief Determines if DHCP will be active following next reconfig
      *  @param[in] protocol - Either IPv4 or IPv6
