From patchwork Thu Feb 1 00:07:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Paasch X-Patchwork-Id: 868100 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=apple.com header.i=@apple.com header.b="GSnW+YEa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zX0mg1xVHz9s7M for ; Thu, 1 Feb 2018 11:07:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754234AbeBAAH2 (ORCPT ); Wed, 31 Jan 2018 19:07:28 -0500 Received: from mail-out4.apple.com ([17.151.62.26]:62940 "EHLO mail-in4.apple.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753577AbeBAAH0 (ORCPT ); Wed, 31 Jan 2018 19:07:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; d=apple.com; s=mailout2048s; c=relaxed/simple; q=dns/txt; i=@apple.com; t=1517443646; x=2381357246; h=From:Sender:Reply-To:Subject:Date:Message-id:To:Cc:MIME-Version:Content-Type: Content-transfer-encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-reply-to:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=xFAK2Pb8ZymdPn0yJj78SGq/WoULxvL7gwF+rbNMijg=; b=GSnW+YEa158SYugZfR/KBfTlPFcF+kVGHJh2HMybjieH734IaNgmKKA6wZYOjXDn aOjW0m0GBikZ5QrByLw+3B85p+OJySXihY3IS54hiqy4pP8uS8UBp6CB0R3LlBQJ 6UVIcQl+8K2beTPB0hmhvpScyWbx1g5Df/EASlnnmYjeapdm2fFV+cM8HPWarEc3 u23nJmU0QArcYdBrGYm98CrOF8Xh7us/C4pp0VyFJ1mns8GTufQRNv1lKF+ADI+i WR5hiDBwBCbjbsB3TQNQw+jYCbdJzblUXNn0DlTVcmfXIVTXZPiaIqrdzVUQH8Y3 BzJGwb2V/oW0BK6IUEFJmQ==; Received: from relay3.apple.com (relay3.apple.com [17.128.113.83]) (using TLS with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mail-in4.apple.com (Apple Secure Mail Relay) with SMTP id D6.8A.10621.E3A527A5; Wed, 31 Jan 2018 16:07:26 -0800 (PST) X-AuditID: 11973e12-c67d59e00000297d-61-5a725a3e4f27 Received: from nwk-mmpp-sz13.apple.com (nwk-mmpp-sz13.apple.com [17.128.115.216]) by relay3.apple.com (Apple SCV relay) with SMTP id 8C.4C.12852.E3A527A5; Wed, 31 Jan 2018 16:07:26 -0800 (PST) Content-transfer-encoding: 7BIT Received: from localhost ([17.226.23.225]) by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.1.20180104 64bit (built Jan 4 2018)) with ESMTPSA id <0P3G006DK30D15B0@nwk-mmpp-sz13.apple.com>; Wed, 31 Jan 2018 16:07:26 -0800 (PST) From: Christoph Paasch To: netdev@vger.kernel.org Cc: Eric Dumazet , Mat Martineau Subject: [RFC v2 01/14] tcp: Write options after the header has been fully done Date: Wed, 31 Jan 2018 16:07:03 -0800 Message-id: <20180201000716.69301-2-cpaasch@apple.com> X-Mailer: git-send-email 2.16.1 In-reply-to: <20180201000716.69301-1-cpaasch@apple.com> References: <20180201000716.69301-1-cpaasch@apple.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnluLIzCtJLcpLzFFi42IRbCgM1rWLKooy+DBL0OLpsUfsFn9b+lks ji0Qc2D2WLCp1GPeyUCPz5vkApijuGxSUnMyy1KL9O0SuDIOT+5kLDjIW7HtcD9LA+ME7i5G Tg4JAROJFTN/sncxcnEICaxmkvhx+hE7TGLWhmVQiUOMEg8+XWDtYuTgYBaQlzh4XhYi3sgk 0f/5CFiDsICkRPedO8wgNpuAlsTb2+2sILaIgJTExx3bwWqYBWIkXs7+xgQyR1jAX2LhtnqQ MIuAqsTjW4fBxvMKmEm8nJECcYK8xOE3TWBTOAXMJRp2zQGbIgRU8vn6YmaQEyQEdrBJXO+5 zjaBUXAWwnULGBlXMQrlJmbm6GbmmeglFhTkpOol5+duYgSF4HQ7oR2Mp1ZZHWIU4GBU4uGd cKEwSog1say4MvcQozQHi5I4r5doUZSQQHpiSWp2ampBalF8UWlOavEhRiYOTqkGRrsZavO4 PkikSm+YytCXWVSxtvGbiqhas4N/dJLZaeVsywzBFROren99K/gv+vrF+ovdS8+L5OhLbGH3 KLXKv/musprnf93m1mwPjR4FW9bXD67y7bgWfJDD+dqkfrdVcbdip+xUkZdYwWm4MNfk9G4u yQdf9L+umGqe1nuZf+X96renWIoalViKMxINtZiLihMBmk/c3SICAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRmVeSWpSXmKPExsUi2FB8Q9cuqijK4MczPounxx6xW/xt6Wex OLZAzIHZY8GmUo95JwM9Pm+SC2COMrRJyy8qTyxKUShKLiixVSrOSEzJL4+3NDYydUgsKMhJ 1UvOz1XSt7NJSc3JLEst0rdLMMw4PLmTseAgb8W2w/0sDYwTuLsYOTkkBEwkZm1Yxt7FyMUh JHCIUeLBpwusXYwcHMwC8hIHz8tCxBuZJPo/H2EHaRAWkJTovnOHGcRmE9CSeHu7nRXEFhGQ kvi4YztYDbNAjMTL2d+YQOYIC/hLLNxWDxJmEVCVeHzrMNh4XgEziZczUiBOkJc4/KYJbAqn gLlEw645YFOEgEo+X1/MPIGRbxbCQQsYGVcxChSl5iRWGuvBvbqJERyAhcE7GP8sszrEKMDB qMTDO+FCYZQQa2JZcWUu0GcczEoivBtFiqKEeFMSK6tSi/Lji0pzUosPMfoAnTaRWUo0OR8Y HXkl8YbGFsaWJhYGBiaWZiY4hJXEeY8oAc0SSE8sSc1OTS1ILYIZx8TBKdXA6L3COfJL5obP Xw8q/GBiuyD1K1n0rdu0P7dqcpr6fPm2rryssK5vS6T/lLM7ooqUJr6tS5WJWnmGrfaDttOq i/fqT+hZ/j3xo9buvYPxy7yNRp2TnS+t5it1kVrhxciWdC35r87dz8lTlu4pKUqZmNG2+v2Z 6F87YupkSs6d1hReZlNfXSxapMQCTBSGWsxFxYkAHB+MZ20CAAA= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The generic TCP-option framework will need to have access to the full TCP-header (e.g., if we want to compute a checksum for TCP-MD5). Thus, we move the call to tcp_options_write() to after all the fields in the header have been filled out. Signed-off-by: Christoph Paasch Reviewed-by: Mat Martineau --- net/ipv4/tcp_output.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index e9f985e42405..df50c7dc1a43 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1126,7 +1126,6 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, } } - tcp_options_write((__be32 *)(th + 1), tp, &opts); skb_shinfo(skb)->gso_type = sk->sk_gso_type; if (likely(!(tcb->tcp_flags & TCPHDR_SYN))) { th->window = htons(tcp_select_window(sk)); @@ -1137,6 +1136,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, */ th->window = htons(min(tp->rcv_wnd, 65535U)); } + tcp_options_write((__be32 *)(th + 1), tp, &opts); #ifdef CONFIG_TCP_MD5SIG /* Calculate the MD5 hash, as we have all we need now */ if (md5) { @@ -3247,8 +3247,8 @@ struct sk_buff *tcp_make_synack(const struct sock *sk, struct dst_entry *dst, /* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */ th->window = htons(min(req->rsk_rcv_wnd, 65535U)); - tcp_options_write((__be32 *)(th + 1), NULL, &opts); th->doff = (tcp_header_size >> 2); + tcp_options_write((__be32 *)(th + 1), NULL, &opts); __TCP_INC_STATS(sock_net(sk), TCP_MIB_OUTSEGS); #ifdef CONFIG_TCP_MD5SIG