mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-25 06:44:59 +00:00
IP/Top: Fix performance regression in GetInterfaceOpt
This commit is contained in:
parent
de997d616f
commit
03451f2bc9
1 changed files with 4 additions and 1 deletions
|
@ -1005,7 +1005,6 @@ IPCReply NetIPTopDevice::HandleGetInterfaceOptRequest(const IOCtlVRequest& reque
|
||||||
auto& system = GetSystem();
|
auto& system = GetSystem();
|
||||||
auto& memory = system.GetMemory();
|
auto& memory = system.GetMemory();
|
||||||
|
|
||||||
const DefaultInterface interface = GetSystemDefaultInterfaceOrFallback();
|
|
||||||
const u32 param = memory.Read_U32(request.in_vectors[0].address);
|
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 param2 = memory.Read_U32(request.in_vectors[0].address + 4);
|
||||||
const u32 param3 = memory.Read_U32(request.io_vectors[0].address);
|
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,
|
// 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
|
// in which case, depending on some interface settings, SO can write 12 more bytes
|
||||||
memory.Write_U32(0xC, request.io_vectors[1].address);
|
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.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.netmask.s_addr), request.io_vectors[0].address + 4);
|
||||||
memory.Write_U32(ntohl(interface.broadcast.s_addr), request.io_vectors[0].address + 8);
|
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;
|
break;
|
||||||
|
|
||||||
case 0x4006: // get routing table
|
case 0x4006: // get routing table
|
||||||
|
{
|
||||||
|
const DefaultInterface interface = GetSystemDefaultInterfaceOrFallback();
|
||||||
for (InterfaceRouting route : interface.routing_table)
|
for (InterfaceRouting route : interface.routing_table)
|
||||||
{
|
{
|
||||||
memory.Write_U32(ntohl(route.destination.s_addr), request.io_vectors[0].address + param5);
|
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);
|
memory.Write_U32(param5, request.io_vectors[1].address);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 0x6003: // hardcoded value
|
case 0x6003: // hardcoded value
|
||||||
memory.Write_U32(0x80, request.io_vectors[0].address);
|
memory.Write_U32(0x80, request.io_vectors[0].address);
|
||||||
|
|
Loading…
Add table
Reference in a new issue