diff options
| author | JMC47 <JMC4789@gmail.com> | 2025-04-11 18:56:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-11 18:56:35 -0400 |
| commit | 5285b1168a629e44c2fcc42664bf003dcf55019e (patch) | |
| tree | ea3ab04226738632ee9f0d77b58e44711b3b022b /Source/Core | |
| parent | fc0179c1ea1a8169f8e44608b0aa6240dde658d4 (diff) | |
| parent | 03451f2bc9529b46bcf6f47559b657e06774791e (diff) | |
Merge pull request #13503 from sepalani/ip-top-perf
IP/Top: Fix performance regression in GetInterfaceOpt
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/IOS/Network/IP/Top.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Source/Core/Core/IOS/Network/IP/Top.cpp b/Source/Core/Core/IOS/Network/IP/Top.cpp index 41a84424f9..87e144ae84 100644 --- a/Source/Core/Core/IOS/Network/IP/Top.cpp +++ b/Source/Core/Core/IOS/Network/IP/Top.cpp @@ -1005,7 +1005,6 @@ IPCReply NetIPTopDevice::HandleGetInterfaceOptRequest(const IOCtlVRequest& reque auto& system = GetSystem(); auto& memory = system.GetMemory(); - const DefaultInterface interface = GetSystemDefaultInterfaceOrFallback(); const u32 param = memory.Read_U32(request.in_vectors[0].address); const u32 param2 = memory.Read_U32(request.in_vectors[0].address + 4); const u32 param3 = memory.Read_U32(request.io_vectors[0].address); @@ -1159,6 +1158,7 @@ IPCReply NetIPTopDevice::HandleGetInterfaceOptRequest(const IOCtlVRequest& reque // XXX: this isn't exactly right; the buffer can be larger than 12 bytes, // in which case, depending on some interface settings, SO can write 12 more bytes memory.Write_U32(0xC, request.io_vectors[1].address); + const DefaultInterface interface = GetSystemDefaultInterfaceOrFallback(); memory.Write_U32(ntohl(interface.inet.s_addr), request.io_vectors[0].address); memory.Write_U32(ntohl(interface.netmask.s_addr), request.io_vectors[0].address + 4); memory.Write_U32(ntohl(interface.broadcast.s_addr), request.io_vectors[0].address + 8); @@ -1172,6 +1172,8 @@ IPCReply NetIPTopDevice::HandleGetInterfaceOptRequest(const IOCtlVRequest& reque break; case 0x4006: // get routing table + { + const DefaultInterface interface = GetSystemDefaultInterfaceOrFallback(); for (InterfaceRouting route : interface.routing_table) { memory.Write_U32(ntohl(route.destination.s_addr), request.io_vectors[0].address + param5); @@ -1191,6 +1193,7 @@ IPCReply NetIPTopDevice::HandleGetInterfaceOptRequest(const IOCtlVRequest& reque memory.Write_U32(param5, request.io_vectors[1].address); break; + } case 0x6003: // hardcoded value memory.Write_U32(0x80, request.io_vectors[0].address); |
