diff --git a/command/channel_auth.cpp b/command/channel_auth.cpp
index 67ad8c7..f719452 100644
--- a/command/channel_auth.cpp
+++ b/command/channel_auth.cpp
@@ -19,7 +19,10 @@
         std::vector<uint8_t> errorPayload{IPMI_CC_REQ_DATA_LEN_INVALID};
         return errorPayload;
     }
-    uint8_t chNum = ipmi::convertCurrentChannelNum(request->channelNumber);
+    constexpr unsigned int channelMask = 0x0f;
+    uint8_t chNum = ipmi::convertCurrentChannelNum(
+        request->channelNumber & channelMask, getInterfaceIndex());
+
     if (!ipmi::isValidChannel(chNum) ||
         (ipmi::EChannelSessSupported::none ==
          ipmi::getChannelSessionSupport(chNum)) ||
diff --git a/main.cpp b/main.cpp
index d26e032..880244b 100644
--- a/main.cpp
+++ b/main.cpp
@@ -20,6 +20,7 @@
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <tuple>
+#include <user_channel/channel_layer.hpp>
 
 using namespace phosphor::logging;
 
@@ -54,9 +55,24 @@
     return sdbusp;
 }
 
+static EInterfaceIndex currentInterfaceIndex = interfaceUnknown;
+static void setInterfaceIndex(const std::string& channel)
+{
+    try
+    {
+        currentInterfaceIndex =
+            static_cast<EInterfaceIndex>(ipmi::getChannelByName(channel));
+    }
+    catch (const std::exception& e)
+    {
+        log<level::ERR>("Requested channel name is not a valid channel name",
+                        entry("ERROR=%s", e.what()),
+                        entry("CHANNEL=%s", channel.c_str()));
+    }
+}
 EInterfaceIndex getInterfaceIndex(void)
 {
-    return interfaceLAN1;
+    return currentInterfaceIndex;
 }
 
 int main(int argc, char* argv[])
@@ -78,9 +94,14 @@
                         entry("ERROR=%s", strerror(-rc)));
         return rc;
     }
-
     sdbusp = std::make_shared<sdbusplus::asio::connection>(*io, bus);
 
+    ipmi::ipmiChannelInit();
+    if (channel.size())
+    {
+        setInterfaceIndex(channel);
+    }
+
     // Register callback to update cache for a GUID change and cache the GUID
     command::registerGUIDChangeCallback();
     cache::guid = command::getSystemGUID();
