Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1678452pxu; Sun, 6 Dec 2020 03:47:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJzyCrs0WxlNRkJHB+mkEUvm19CuBXdLrXFVvNOlu64eJvyORIO1omMrBABus0yRXAm0s/Pd X-Received: by 2002:a17:906:40d3:: with SMTP id a19mr14544085ejk.98.1607255239661; Sun, 06 Dec 2020 03:47:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607255239; cv=none; d=google.com; s=arc-20160816; b=i6Okaa7Vcri+tzPelnPGhHgmPBE8IhHz14Q4D4H6kOfa3CPqxZiEMELLxuCczX+kB2 hW2Cd/UPY/mOtou4gpvQANBUvsTw+H3J1ncTQT0USMpem34/ZZgBUphejKww2PKUGOSI f35jRHwxM9VGJptF1KaQ9IVitN+PmlyNg4J/Uilq3rCXFTVyFjTS9Kn/iz5iS4OoxcXe ZkBeudnUZIe3sNxFaTS2tO/MLfRE+PPAHuLArJzePtfMRcXF3A24mFsyCHTYeO2WDPC/ b/U/hrkcHn35HYyYRmAmVldvGOSRUUYLa2rr2RHSwgEknrGRYPI53ec0+0Ce7sGjpteV 7SBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from; bh=YCM0VA8T2Qi79hUdwQVQpZsE0vWBJkIpYSi7LmS42rc=; b=ZgPodNoUPgEkzZk/4efuMVP/X7a5lcEYhvRTReGlX53iceQ9hbf9EYqsWywJWtMfBr 1IWLpOAEfNLzW9fzhWHspBZUt74UFLUMcBbA7Q/2ph6f55vauH+YxELn/2V7ejE1DVH2 pRRGA1Xf3ATuQpp4kHZia+7E61POZ/QwFGk3ScPON+yzm5WDuGckszafiV2R8PB86bSQ 8Zfnder4yztczHKiciXawbv75+7MpuVrF6iXDRbDTQuYCERGGyxY5hVQjFqAJJpBAMr1 QL+q1JN8uw54QTfaO1G8/U15un6rQ9nzd8qgUSk3Hn3Qf1h2687MscfphL+6KO45A7ZD ApTA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id by23si4454414ejb.165.2020.12.06.03.46.57; Sun, 06 Dec 2020 03:47:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729512AbgLFLp1 (ORCPT + 99 others); Sun, 6 Dec 2020 06:45:27 -0500 Received: from mail.kernel.org ([198.145.29.99]:45662 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729492AbgLFLpY (ORCPT ); Sun, 6 Dec 2020 06:45:24 -0500 From: Greg Kroah-Hartman Authentication-Results: mail.kernel.org; dkim=permerror (bad message/signature format) To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexander Duyck , Jakub Kicinski Subject: [PATCH 5.9 10/46] tcp: Set INET_ECN_xmit configuration in tcp_reinit_congestion_control Date: Sun, 6 Dec 2020 12:17:18 +0100 Message-Id: <20201206111556.955547753@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201206111556.455533723@linuxfoundation.org> References: <20201206111556.455533723@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexander Duyck [ Upstream commit 55472017a4219ca965a957584affdb17549ae4a4 ] When setting congestion control via a BPF program it is seen that the SYN/ACK for packets within a given flow will not include the ECT0 flag. A bit of simple printk debugging shows that when this is configured without BPF we will see the value INET_ECN_xmit value initialized in tcp_assign_congestion_control however when we configure this via BPF the socket is in the closed state and as such it isn't configured, and I do not see it being initialized when we transition the socket into the listen state. The result of this is that the ECT0 bit is configured based on whatever the default state is for the socket. Any easy way to reproduce this is to monitor the following with tcpdump: tools/testing/selftests/bpf/test_progs -t bpf_tcp_ca Without this patch the SYN/ACK will follow whatever the default is. If dctcp all SYN/ACK packets will have the ECT0 bit set, and if it is not then ECT0 will be cleared on all SYN/ACK packets. With this patch applied the SYN/ACK bit matches the value seen on the other packets in the given stream. Fixes: 91b5b21c7c16 ("bpf: Add support for changing congestion control") Signed-off-by: Alexander Duyck Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- net/ipv4/tcp_cong.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/net/ipv4/tcp_cong.c +++ b/net/ipv4/tcp_cong.c @@ -197,6 +197,11 @@ static void tcp_reinit_congestion_contro icsk->icsk_ca_setsockopt = 1; memset(icsk->icsk_ca_priv, 0, sizeof(icsk->icsk_ca_priv)); + if (ca->flags & TCP_CONG_NEEDS_ECN) + INET_ECN_xmit(sk); + else + INET_ECN_dontxmit(sk); + if (!((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN))) tcp_init_congestion_control(sk); }