From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 6105F7803CE for ; Fri, 21 Jul 2023 05:18:13 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=vFM0Us31kd7yvGpiIna9pzJ/0gVTsMuLudo1tV3e16k=; c=relaxed/simple; d=groups.io; h=X-Received:X-Received:X-IronPort-AV:X-IronPort-AV:X-Received:X-ExtLoop1:X-IronPort-AV:X-Received:From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:X-Gm-Message-State:Content-Transfer-Encoding; s=20140610; t=1689916691; v=1; b=A6Dj2L/vPJ6gdnhwSRckGNJcAe9fCdrWLKYrzLcnELp3DRB/Q36E68CH+IcOLcurtY9V6u93 1Im7K5aLFSvYVzuDys78nx42f/mFlCAtoUQYvV5CGdfVzz2lPuGY9AkDwwwlZPh2TR41NZI6S3n ufQeR1qtbco/Auf0nEcmah+o= X-Received: by 127.0.0.2 with SMTP id d2fRYY7687511x9i6Kc4eZme; Thu, 20 Jul 2023 22:18:11 -0700 X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.1003.1689916691095634580 for ; Thu, 20 Jul 2023 22:18:11 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10777"; a="366975759" X-IronPort-AV: E=Sophos;i="6.01,220,1684825200"; d="scan'208";a="366975759" X-Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2023 22:18:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.01,202,1684825200"; d="scan'208";a="868101832" X-Received: from liyi4-desktop.ccr.corp.intel.com ([10.239.153.10]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2023 22:18:09 -0700 From: "Li, Yi" To: devel@edk2.groups.io Cc: Yi Li , Andrei Otcheretianski , Saloni Kasbekar , Zachary Clark-williams Subject: [edk2-devel] [PATCH] NetworkPkg: Increase HTTP buffer size and enable TCP window scaling Date: Fri, 21 Jul 2023 13:17:59 +0800 Message-Id: <20230721051759.7021-1-yi1.li@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yi1.li@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: jL7l53p1RnK7w0r8waqZwFtMx7686176AA= Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="A6Dj2L/v"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4505 This gives something like ~3 fold throughput boost. Signed-off-by: Andrei Otcheretianski Cc: Saloni Kasbekar Cc: Zachary Clark-williams --- NetworkPkg/HttpBootDxe/HttpBootClient.h | 2 +- NetworkPkg/HttpDxe/HttpProto.c | 48 +++++++++++++------------ NetworkPkg/HttpDxe/HttpProto.h | 2 +- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/NetworkPkg/HttpBootDxe/HttpBootClient.h b/NetworkPkg/HttpBootDxe/HttpBootClient.h index 2fba713679..86a28bc91a 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootClient.h +++ b/NetworkPkg/HttpBootDxe/HttpBootClient.h @@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_HTTP_BOOT_HTTP_H__ #define __EFI_HTTP_BOOT_HTTP_H__ -#define HTTP_BOOT_BLOCK_SIZE 1500 +#define HTTP_BOOT_BLOCK_SIZE 32000 #define HTTP_USER_AGENT_EFI_HTTP_BOOT "UefiHttpBoot/1.0" #define HTTP_BOOT_AUTHENTICATION_INFO_MAX_LEN 255 diff --git a/NetworkPkg/HttpDxe/HttpProto.c b/NetworkPkg/HttpDxe/HttpProto.c index 33ae622c3f..7dfb82dd2e 100644 --- a/NetworkPkg/HttpDxe/HttpProto.c +++ b/NetworkPkg/HttpDxe/HttpProto.c @@ -1073,18 +1073,19 @@ HttpConfigureTcp4 ( Tcp4AP->ActiveFlag = TRUE; IP4_COPY_ADDRESS (&Tcp4AP->RemoteAddress, &HttpInstance->RemoteAddr); - Tcp4Option = Tcp4CfgData->ControlOption; - Tcp4Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp4Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp4Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; - Tcp4Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; - Tcp4Option->DataRetries = HTTP_DATA_RETRIES; - Tcp4Option->FinTimeout = HTTP_FIN_TIMEOUT; - Tcp4Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; - Tcp4Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; - Tcp4Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; - Tcp4Option->EnableNagle = TRUE; - Tcp4CfgData->ControlOption = Tcp4Option; + Tcp4Option = Tcp4CfgData->ControlOption; + Tcp4Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp4Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp4Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; + Tcp4Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; + Tcp4Option->DataRetries = HTTP_DATA_RETRIES; + Tcp4Option->FinTimeout = HTTP_FIN_TIMEOUT; + Tcp4Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; + Tcp4Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; + Tcp4Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; + Tcp4Option->EnableNagle = TRUE; + Tcp4Option->EnableWindowScaling = TRUE; + Tcp4CfgData->ControlOption = Tcp4Option; if ((HttpInstance->State == HTTP_STATE_TCP_CONNECTED) || (HttpInstance->State == HTTP_STATE_TCP_CLOSED)) @@ -1156,17 +1157,18 @@ HttpConfigureTcp6 ( IP6_COPY_ADDRESS (&Tcp6Ap->StationAddress, &HttpInstance->Ipv6Node.LocalAddress); IP6_COPY_ADDRESS (&Tcp6Ap->RemoteAddress, &HttpInstance->RemoteIpv6Addr); - Tcp6Option = Tcp6CfgData->ControlOption; - Tcp6Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp6Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp6Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; - Tcp6Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; - Tcp6Option->DataRetries = HTTP_DATA_RETRIES; - Tcp6Option->FinTimeout = HTTP_FIN_TIMEOUT; - Tcp6Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; - Tcp6Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; - Tcp6Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; - Tcp6Option->EnableNagle = TRUE; + Tcp6Option = Tcp6CfgData->ControlOption; + Tcp6Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp6Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp6Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; + Tcp6Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; + Tcp6Option->DataRetries = HTTP_DATA_RETRIES; + Tcp6Option->FinTimeout = HTTP_FIN_TIMEOUT; + Tcp6Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; + Tcp6Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; + Tcp6Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; + Tcp6Option->EnableNagle = TRUE; + Tcp6Option->EnableWindowScaling = TRUE; if ((HttpInstance->State == HTTP_STATE_TCP_CONNECTED) || (HttpInstance->State == HTTP_STATE_TCP_CLOSED)) diff --git a/NetworkPkg/HttpDxe/HttpProto.h b/NetworkPkg/HttpDxe/HttpProto.h index 620eb39158..012f1f4b46 100644 --- a/NetworkPkg/HttpDxe/HttpProto.h +++ b/NetworkPkg/HttpDxe/HttpProto.h @@ -37,7 +37,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // #define HTTP_TOS_DEAULT 8 #define HTTP_TTL_DEAULT 255 -#define HTTP_BUFFER_SIZE_DEAULT 65535 +#define HTTP_BUFFER_SIZE_DEAULT 0x200000 #define HTTP_MAX_SYN_BACK_LOG 5 #define HTTP_CONNECTION_TIMEOUT 60 #define HTTP_DATA_RETRIES 12 -- 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#107122): https://edk2.groups.io/g/devel/message/107122 Mute This Topic: https://groups.io/mt/100271527/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-