diff --git a/lib/bmc_network_utils.robot b/lib/bmc_network_utils.robot
index 0bd6403..4a7d7ea 100644
--- a/lib/bmc_network_utils.robot
+++ b/lib/bmc_network_utils.robot
@@ -153,6 +153,24 @@
 
     [Return]  ${output}
 
+Get FW_Env MAC Address
+    [Documentation]  Get FW_Env MAC address.
+
+    # Sample output of "fw_printenv | grep ethaddr"
+    # ethaddr=xx:xx:xx:xx:xx:xx:xx
+
+    ${cmd_output}  ${stderr}  ${rc}=  BMC Execute Command
+    ...  /sbin/fw_printenv | grep ethaddr
+
+    # Split the line and return MAC address.
+    # Split list data:
+    # ethaddr | xx:xx:xx:xx:xx:xx:xx
+
+    @{words}=  Split String  ${cmd_output}  =
+
+    [Return]  ${words[1]}
+
+
 Get List Of IP Address Via REST
     [Documentation]  Get list of IP address via REST.
     [Arguments]  @{ip_uri_list}
@@ -249,10 +267,63 @@
     # mac_addr  MAC address of the BMC.
 
     ${system_mac}=  Get BMC MAC Address
+    ${mac_new_addr}=  Truncate MAC Address  ${system_mac}  ${mac_addr}
 
-    ${status}=  Compare MAC Address  ${system_mac}  ${mac_addr}
+    ${status}=  Compare MAC Address  ${system_mac}  ${mac_new_addr}
     Should Be True  ${status}
-    ...  msg=MAC address ${system_mac} does not match ${mac_addr}.
+    ...  msg=MAC address ${system_mac} does not match ${mac_new_addr}.
+
+Validate MAC On FW_Env
+    [Documentation]  Validate MAC on FW_Env.
+    [Arguments]  ${mac_addr}
+
+    # Description of argument(s):
+    # mac_addr  MAC address of the BMC.
+
+    ${fw_env_addr}=  Get FW_Env MAC Address
+    ${mac_new_addr}=  Truncate MAC Address  ${fw_env_addr}  ${mac_addr}
+
+    ${status}=  Compare MAC Address  ${fw_env_addr}  ${mac_new_addr}
+    Should Be True  ${status}
+    ...  msg=MAC address ${fw_env_addr} does not match ${mac_new_addr}.
+
+Truncate MAC Address
+    [Arguments]    ${sys_mac_addr}  ${user_mac_addr}
+    # Description of argument(s):
+    # sys_mac_addr  MAC address of the BMC.
+    # user_mac_addr user provided MAC address.
+
+    ${mac_byte}=  Set Variable  ${0}
+    @{user_mac_list}=  Split String  ${user_mac_addr}  :
+    @{sys_mac_list}=  Split String  ${sys_mac_addr}  :
+    ${user_new_mac_list}  Create List
+
+    # Truncate extra bytes and bits from MAC address
+    FOR  ${mac_item}  IN  @{sys_mac_list}
+        ${invalid_mac_byte} =  Get Regexp Matches  ${user_mac_list}[${mac_byte}]  [^A-Za-z0-9]+
+        Return From Keyword If  ${invalid_mac_byte}  ${user_mac_addr}
+        ${mac_int} =    Convert To Integer      ${user_mac_list}[${mac_byte}]   16
+        ${user_mac_len} =  Get Length  ${user_mac_list}
+        ${user_mac_byte}=  Run Keyword IF  ${mac_int} >= ${256}  Truncate MAC Bits  ${user_mac_list}[${mac_byte}]
+                                      ...  ELSE  Set Variable  ${user_mac_list}[${mac_byte}]
+
+        Append To List  ${user_new_mac_list}  ${user_mac_byte}
+        ${mac_byte} =    Set Variable    ${mac_byte + 1}
+        Exit For Loop If  '${mac_byte}' == '${user_mac_len}'
+
+    END
+    ${user_new_mac_string}=   Evaluate  ":".join(${user_new_mac_list})
+    [Return]  ${user_new_mac_string}
+
+Truncate MAC Bits
+    [Arguments]    ${user_mac_addr_byte}
+    # Description of argument(s):
+    # user_mac_addr_byte user provided MAC address byte to truncate bits
+
+    ${user_mac_addr_int}=   Convert To List  ${user_mac_addr_byte}
+    ${user_mac_addr_byte}=  Get Slice From List  ${user_mac_addr_int}  0  2
+    ${user_mac_addr_byte_string}=  Evaluate  "".join(${user_mac_addr_byte})
+    [Return]  ${user_mac_addr_byte_string}
 
 
 Run Build Net
