diff --git a/src/core/hle/service/nwm/uds_data.cpp b/src/core/hle/service/nwm/uds_data.cpp
index 1f227de6d..57414f343 100644
--- a/src/core/hle/service/nwm/uds_data.cpp
+++ b/src/core/hle/service/nwm/uds_data.cpp
@@ -26,7 +26,7 @@ using MacAddress = std::array<u8, 6>;
  */
 static std::vector<u8> GenerateLLCHeader(EtherType protocol) {
     LLCHeader header{};
-    header.protocol = static_cast<u16>(protocol);
+    header.protocol = protocol;
 
     std::vector<u8> buffer(sizeof(header));
     memcpy(buffer.data(), &header, sizeof(header));
@@ -313,9 +313,7 @@ std::vector<u8> GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node
 EtherType GetFrameEtherType(const std::vector<u8>& frame) {
     LLCHeader header;
     std::memcpy(&header, frame.data(), sizeof(header));
-
-    u16 ethertype = header.protocol;
-    return static_cast<EtherType>(ethertype);
+    return header.protocol;
 }
 
 u16 GetEAPoLFrameType(const std::vector<u8>& frame) {
diff --git a/src/core/hle/service/nwm/uds_data.h b/src/core/hle/service/nwm/uds_data.h
index 59906f677..2ebd416b4 100644
--- a/src/core/hle/service/nwm/uds_data.h
+++ b/src/core/hle/service/nwm/uds_data.h
@@ -26,11 +26,11 @@ enum class EtherType : u16 { SecureData = 0x876D, EAPoL = 0x888E };
  * and the OUI is always 0.
  */
 struct LLCHeader {
-    u8 dsap = static_cast<u8>(SAP::SNAPExtensionUsed);
-    u8 ssap = static_cast<u8>(SAP::SNAPExtensionUsed);
-    u8 control = static_cast<u8>(PDUControl::UnnumberedInformation);
+    SAP dsap = SAP::SNAPExtensionUsed;
+    SAP ssap = SAP::SNAPExtensionUsed;
+    PDUControl control = PDUControl::UnnumberedInformation;
     std::array<u8, 3> OUI = {};
-    u16_be protocol;
+    enum_be<EtherType> protocol;
 };
 
 static_assert(sizeof(LLCHeader) == 8, "LLCHeader has the wrong size");