diff --git a/Core/Config.cpp b/Core/Config.cpp index 3bc22a4a20..0a4ada08f4 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -958,6 +958,7 @@ static ConfigSetting networkSettings[] = { ConfigSetting("proAdhocServer", &g_Config.proAdhocServer, "myneighborsushicat.com", true, true), ConfigSetting("PortOffset", &g_Config.iPortOffset, 0, true, true), ConfigSetting("MinTimeout", &g_Config.iMinTimeout, 1, true, true), + ConfigSetting("TCPNoDelay", &g_Config.bTCPNoDelay, false, true, true), ConfigSetting("EnableUPnP", &g_Config.bEnableUPnP, false, true, true), ConfigSetting("UPnPUseOriginalPort", &g_Config.bUPnPUseOriginalPort, true, true, true), diff --git a/Core/Config.h b/Core/Config.h index 5bd145c601..03e3b34584 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -411,6 +411,7 @@ public: std::string proAdhocServer; bool bEnableWlan; bool bEnableAdhocServer; + bool bTCPNoDelay; bool bEnableUPnP; bool bUPnPUseOriginalPort; int iPortOffset; diff --git a/Core/HLE/sceNetAdhoc.cpp b/Core/HLE/sceNetAdhoc.cpp index 28dca3b32b..dee0dd28eb 100644 --- a/Core/HLE/sceNetAdhoc.cpp +++ b/Core/HLE/sceNetAdhoc.cpp @@ -1917,7 +1917,7 @@ static int sceNetAdhocPtpOpen(const char *srcmac, int sport, const char *dstmac, setSockTimeout(tcpsocket, SO_SNDTIMEO, rexmt_int); // Disable Nagle Algo to send immediately. Or may be we shouldn't disable Nagle since there is PtpFlush function? - //setSockNoDelay(tcpsocket, 1); + if (g_Config.bTCPNoDelay) setSockNoDelay(tcpsocket, 1); // Binding Information for local Port sockaddr_in addr; @@ -2107,7 +2107,7 @@ static int sceNetAdhocPtpAccept(int id, u32 peerMacAddrPtr, u32 peerPortPtr, int setsockopt(newsocket, SOL_SOCKET, SO_REUSEADDR, (const char*)&one, sizeof(one)); // Disable Nagle Algo to send immediately. Or may be we shouldn't disable Nagle since there is PtpFlush function? - //setSockNoDelay(newsocket, 1); + if (g_Config.bTCPNoDelay) setSockNoDelay(newsocket, 1); // Grab Local Address if (getsockname(newsocket, (sockaddr *)&local, &locallen) == 0) { @@ -2444,7 +2444,7 @@ static int sceNetAdhocPtpListen(const char *srcmac, int sport, int bufsize, int setSockTimeout(tcpsocket, SO_RCVTIMEO, rexmt_int); // Disable Nagle Algo to send immediately. Or may be we shouldn't disable Nagle since there is PtpFlush function? - //setSockNoDelay(tcpsocket, 1); + if (g_Config.bTCPNoDelay) setSockNoDelay(tcpsocket, 1); // Binding Information for local Port sockaddr_in addr; diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index b26cb38035..9d1012f97b 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -699,6 +699,7 @@ void GameSettingsScreen::CreateViews() { } networkingSettings->Add(new PopupSliderChoice(&g_Config.iPortOffset, 0, 60000, n->T("Port offset", "Port offset (0 = PSP compatibility)"), 100, screenManager())); networkingSettings->Add(new PopupSliderChoice(&g_Config.iMinTimeout, 1, 15000, n->T("Minimum Timeout", "Minimum Timeout (override low latency in ms)"), 100, screenManager())); + networkingSettings->Add(new CheckBox(&g_Config.bTCPNoDelay, n->T("TCP No Delay", "TCP No Delay (faster TCP)"))); networkingSettings->Add(new ItemHeader(n->T("UPnP"))); networkingSettings->Add(new CheckBox(&g_Config.bEnableUPnP, n->T("Enable UPnP", "Enable UPnP (need a few seconds to detect)")));