diff --git a/ethernet_interface.cpp b/ethernet_interface.cpp
index 677cdd8..d7e0baa 100644
--- a/ethernet_interface.cpp
+++ b/ethernet_interface.cpp
@@ -564,7 +564,7 @@
     return value;
 }
 
-ServerList EthernetInterface::nameservers(ServerList value)
+ServerList EthernetInterface::nameservers(ServerList /*value*/)
 {
     elog<NotAllowed>(NotAllowedArgument::REASON("ReadOnly Property"));
     return EthernetInterfaceIntf::nameservers();
diff --git a/ipaddress.cpp b/ipaddress.cpp
index 10a22b2..f30cf34 100644
--- a/ipaddress.cpp
+++ b/ipaddress.cpp
@@ -35,23 +35,23 @@
     // Emit deferred signal.
     emit_object_added();
 }
-std::string IPAddress::address(std::string ipAddress)
+std::string IPAddress::address(std::string /*ipAddress*/)
 {
     elog<NotAllowed>(Reason("Property update is not allowed"));
 }
-uint8_t IPAddress::prefixLength(uint8_t value)
+uint8_t IPAddress::prefixLength(uint8_t /*value*/)
 {
     elog<NotAllowed>(Reason("Property update is not allowed"));
 }
-std::string IPAddress::gateway(std::string gateway)
+std::string IPAddress::gateway(std::string /*gateway*/)
 {
     elog<NotAllowed>(Reason("Property update is not allowed"));
 }
-IP::Protocol IPAddress::type(IP::Protocol type)
+IP::Protocol IPAddress::type(IP::Protocol /*type*/)
 {
     elog<NotAllowed>(Reason("Property update is not allowed"));
 }
-IP::AddressOrigin IPAddress::origin(IP::AddressOrigin origin)
+IP::AddressOrigin IPAddress::origin(IP::AddressOrigin /*origin*/)
 {
     elog<NotAllowed>(Reason("Property update is not allowed"));
 }
diff --git a/ncsi_util.cpp b/ncsi_util.cpp
index 2b3fb54..40d6379 100644
--- a/ncsi_util.cpp
+++ b/ncsi_util.cpp
@@ -27,7 +27,7 @@
 using nlMsgPtr = std::unique_ptr<nl_msg, decltype(&::nlmsg_free)>;
 using nlSocketPtr = std::unique_ptr<nl_sock, decltype(&::nl_socket_free)>;
 
-CallBack infoCallBack = [](struct nl_msg* msg, void* arg) {
+CallBack infoCallBack = [](struct nl_msg* msg, void* /*arg*/) {
     using namespace phosphor::network::ncsi;
     auto nlh = nlmsg_hdr(msg);
 
diff --git a/network_manager_main.cpp b/network_manager_main.cpp
index eaa970a..734a48a 100644
--- a/network_manager_main.cpp
+++ b/network_manager_main.cpp
@@ -275,7 +275,7 @@
     smartSock.set(fd);
 }
 
-int main(int argc, char* argv[])
+int main(int /*argc*/, char** /*argv*/)
 {
     phosphor::network::initializeTimers();
 
diff --git a/rtnetlink_server.cpp b/rtnetlink_server.cpp
index 1c4fd53..07ca08c 100644
--- a/rtnetlink_server.cpp
+++ b/rtnetlink_server.cpp
@@ -56,8 +56,8 @@
 }
 
 /* Call Back for the sd event loop */
-static int eventHandler(sd_event_source* es, int fd, uint32_t revents,
-                        void* userdata)
+static int eventHandler(sd_event_source* /*es*/, int fd, uint32_t /*revents*/,
+                        void* /*userdata*/)
 {
     char buffer[phosphor::network::rtnetlink::BUFSIZE]{};
     int len{};
diff --git a/test/mock_syscall.cpp b/test/mock_syscall.cpp
index 665094d..e4101a3 100644
--- a/test/mock_syscall.cpp
+++ b/test/mock_syscall.cpp
@@ -42,7 +42,7 @@
 int ifaddr_count = 0;
 
 /* Stub library functions */
-void freeifaddrs(ifaddrs* ifp)
+void freeifaddrs(ifaddrs* /*ifp*/)
 {
     return;
 }
diff --git a/watch.cpp b/watch.cpp
index 89fef81..0efe300 100644
--- a/watch.cpp
+++ b/watch.cpp
@@ -65,7 +65,7 @@
     return fd;
 }
 
-int Watch::processEvents(sd_event_source* eventSource, int fd,
+int Watch::processEvents(sd_event_source* /*eventSource*/, int fd,
                          uint32_t retEvents, void* userData)
 {
     auto watch = static_cast<Watch*>(userData);
