From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2BAA8C433FE for ; Fri, 11 Dec 2020 09:36:42 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 52D4223ECD for ; Fri, 11 Dec 2020 09:36:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 52D4223ECD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kneqt-00041V-Rx for qemu-devel@archiver.kernel.org; Fri, 11 Dec 2020 04:36:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56814) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kneph-000359-3Z for qemu-devel@nongnu.org; Fri, 11 Dec 2020 04:35:25 -0500 Received: from mail-il1-x143.google.com ([2607:f8b0:4864:20::143]:36096) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1knepf-00073w-CZ for qemu-devel@nongnu.org; Fri, 11 Dec 2020 04:35:24 -0500 Received: by mail-il1-x143.google.com with SMTP id u12so8143011ilv.3 for ; Fri, 11 Dec 2020 01:35:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=tnIxINGCJnzOTcqgyovptQF3WZR1zXr6uWcE6iX+KJQ=; b=GSHA/K9AXDZRcwkqhPJyAAsEu56isrO+rFNhT2ZEd4qD7iXPteAMNDqiCok8HvfIO0 WcvOgHKWSKLcv3Xp67l9iaywSWt3Y5y2jsbbkX39hYuGcbkxxvHiGC6YuvsbLiopAIlV Tm6uRSTma3rA4yGkK/C1i5xQeS5nuYKb/NRoTmgY8Uzl0rpdkOU2ieFTmlG4UREyNflw YNQF9UhOdYqzUO6ilK6k0raoZ3jraFPuve7CCfx2gF94nREuG3R+EMh8O+fmHxtpl/fp rbNTPLgV07bobdomSAgNdLXx+W4VSee3Ygr2N352WaDfKxyGelfu4UI18py4aai69gy6 hPvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=tnIxINGCJnzOTcqgyovptQF3WZR1zXr6uWcE6iX+KJQ=; b=RSKyu+Fz3SfoKQO9OLzWy6u+Ucfy6ArLgB1LT2YIRNt2+yZBtM4LYQA1UwWVYf1png Ki8KojL4LLBJklAUEUVlK4ANhAmuQ5Yijv1mFEoO7xcjkktsD3n+FeA15RkLW/dYQJaA hEzAvfHUmG6v6RrW5bR+4Q1yxqqs/J/MtV0uRG/Gs48nQmM+VTPROO4RelmqlDuPocH2 y1brp0Kku0v+1qFHnj5zgN4sm1YgQ3NDbK3zXkEoToMPOnfz0fCM9UJ2BYpyHu/R/4TG QAGSwoTYnuqGpsmers8zHOKiJiT7NySaTYtiB2DJhYwojZ/QIedRXoaLW1PueukektqN G7KQ== X-Gm-Message-State: AOAM530/YDpfnF2jYhus3x7Vpl0LHq02bJRb/kcuan9iX5m9rVphdKw/ LaepUB7EnkUraEytK/jHpPfY2W8luUs= X-Google-Smtp-Source: ABdhPJyUjVIeQfdR9lRX7QN2D284b6oBtFJ/sNqlKAqd8qVr9eZgG+d9nmZKb+cMZQNeHP2lShrFxA== X-Received: by 2002:a92:9a42:: with SMTP id t63mr14885835ili.176.1607679322053; Fri, 11 Dec 2020 01:35:22 -0800 (PST) Received: from pek-vx-bsp2.wrs.com (unknown-124-94.windriver.com. [147.11.124.94]) by smtp.gmail.com with ESMTPSA id g1sm4065362ioh.39.2020.12.11.01.35.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Dec 2020 01:35:21 -0800 (PST) From: Bin Meng To: qemu-devel@nongnu.org Subject: [PATCH v2 1/3] net: checksum: Skip fragmented IP packets Date: Fri, 11 Dec 2020 17:35:10 +0800 Message-Id: <1607679312-51325-1-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.7.4 Received-SPF: pass client-ip=2607:f8b0:4864:20::143; envelope-from=bmeng.cn@gmail.com; helo=mail-il1-x143.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang , Bin Meng , Markus Carlstedt Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Markus Carlstedt To calculate the TCP/UDP checksum we need the whole datagram. Unless the hardware has some logic to collect all fragments before sending the whole datagram first, it can only be done by the network stack, which is normally the case for the NICs we have seen so far. Skip these fragmented IP packets to avoid checksum corruption. Signed-off-by: Markus Carlstedt Signed-off-by: Bin Meng --- (no changes since v1) net/checksum.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/checksum.c b/net/checksum.c index aaa4000..5cb8b2c 100644 --- a/net/checksum.c +++ b/net/checksum.c @@ -106,6 +106,10 @@ void net_checksum_calculate(uint8_t *data, int length) return; /* not IPv4 */ } + if (IP4_IS_FRAGMENT(ip)) { + return; /* a fragmented IP packet */ + } + ip_len = lduw_be_p(&ip->ip_len); /* Last, check that we have enough data for the all IP frame */ -- 2.7.4