diff --git a/pldmtool/pldm_cmd_helper.cpp b/pldmtool/pldm_cmd_helper.cpp
index 9c7f94a..afd49dd 100644
--- a/pldmtool/pldm_cmd_helper.cpp
+++ b/pldmtool/pldm_cmd_helper.cpp
@@ -63,31 +63,45 @@
         printBuffer(Tx, requestMsg);
     }
 
-    void* responseMessage = nullptr;
-    size_t responseMessageSize{};
     auto tid = mctp_eid;
     PldmTransport pldmTransport{};
+    uint8_t retry = 0;
+    int rc = PLDM_ERROR;
 
-    int rc = pldmTransport.sendRecvMsg(tid, requestMsg.data(),
+    while (PLDM_REQUESTER_SUCCESS != rc && retry <= numRetries)
+    {
+        void* responseMessage = nullptr;
+        size_t responseMessageSize{};
+
+        rc = pldmTransport.sendRecvMsg(tid, requestMsg.data(),
                                        requestMsg.size(), responseMessage,
                                        responseMessageSize);
+        if (rc)
+        {
+            std::cerr << "[" << unsigned(retry) << "] pldm_send_recv error rc "
+                      << rc << std::endl;
+            retry++;
+            continue;
+        }
+
+        responseMsg.resize(responseMessageSize);
+        memcpy(responseMsg.data(), responseMessage, responseMsg.size());
+
+        free(responseMessage);
+
+        if (pldmVerbose)
+        {
+            std::cout << "pldmtool: ";
+            printBuffer(Rx, responseMsg);
+        }
+    }
+
     if (rc)
     {
-        std::cerr << "failed to pldm send recv\n";
-        return rc;
+        std::cerr << "failed to pldm send recv error rc " << rc << std::endl;
     }
 
-    responseMsg.resize(responseMessageSize);
-    memcpy(responseMsg.data(), responseMessage, responseMsg.size());
-
-    free(responseMessage);
-
-    if (pldmVerbose)
-    {
-        std::cout << "pldmtool: ";
-        printBuffer(Rx, responseMsg);
-    }
-    return PLDM_SUCCESS;
+    return rc;
 }
 } // namespace helper
 } // namespace pldmtool
