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=-3.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,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 35508C282C8 for ; Mon, 28 Jan 2019 08:50:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 010FA20880 for ; Mon, 28 Jan 2019 08:50:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726937AbfA1Iui (ORCPT ); Mon, 28 Jan 2019 03:50:38 -0500 Received: from a.mx.secunet.com ([62.96.220.36]:54266 "EHLO a.mx.secunet.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726661AbfA1Iui (ORCPT ); Mon, 28 Jan 2019 03:50:38 -0500 Received: from localhost (localhost [127.0.0.1]) by a.mx.secunet.com (Postfix) with ESMTP id B1DD5200BD; Mon, 28 Jan 2019 09:50:37 +0100 (CET) X-Virus-Scanned: by secunet Received: from a.mx.secunet.com ([127.0.0.1]) by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id f-ZMxmtg8-K8; Mon, 28 Jan 2019 09:50:37 +0100 (CET) Received: from mail-essen-01.secunet.de (mail-essen-01.secunet.de [10.53.40.204]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a.mx.secunet.com (Postfix) with ESMTPS id CE768202CB; Mon, 28 Jan 2019 09:50:36 +0100 (CET) Received: from gauss2.secunet.de (10.182.7.193) by mail-essen-01.secunet.de (10.53.40.204) with Microsoft SMTP Server id 14.3.435.0; Mon, 28 Jan 2019 09:50:36 +0100 Received: by gauss2.secunet.de (Postfix, from userid 1000) id 6653B31805AA; Mon, 28 Jan 2019 09:50:36 +0100 (CET) From: Steffen Klassert To: CC: Steffen Klassert , Willem de Bruijn , Paolo Abeni , "Jason A. Donenfeld" Subject: [PATCH RFC v2 0/3] Support fraglist GRO/GSO Date: Mon, 28 Jan 2019 09:50:22 +0100 Message-ID: <20190128085025.14532-1-steffen.klassert@secunet.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-G-Data-MailSecurity-for-Exchange-State: 0 X-G-Data-MailSecurity-for-Exchange-Error: 0 X-G-Data-MailSecurity-for-Exchange-Sender: 23 X-G-Data-MailSecurity-for-Exchange-Server: d65e63f7-5c15-413f-8f63-c0d707471c93 X-EXCLAIMER-MD-CONFIG: 2c86f778-e09b-4440-8b15-867914633a10 X-G-Data-MailSecurity-for-Exchange-Guid: 3D935B75-59F5-4E74-8808-9622A0F13486 X-G-Data-MailSecurity-for-Exchange-ProcessedOnRouted: True Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patchset adds support to do GRO/GSO by chaining packets of the same flow at the SKB frag_list pointer. This avoids the overhead to merge payloads into one big packet, and on the other end, if GSO is needed it avoids the overhead of splitting the big packet back to the native form. Patch 1 Enables UDP GRO by default. Patch 2 adds the core infrastructure to do fraglist GRO/GSO. Patch 3 enables UDP to use fraglist GRO/GSO if no GRO supported socket is found. I have only forwarding performance measurements so far: I used used my IPsec forwarding test setup for this: ------------ ------------ -->| router 1 |-------->| router 2 |-- | ------------ ------------ | | | | -------------------- | --------|Spirent Testcenter|<---------- -------------------- net-next (December 27th): Single stream UDP frame size 1460 Bytes: 1.385.000 fps (16.2 Gbps). ---------------------------------------------------------------------- net-next (December 27th) + hack to enable forwarding for standard UDP GRO: Single stream UDP frame size 1460 Bytes: 1.759.000 fps (20.5 Gbps). ---------------------------------------------------------------------- net-next (December 27th) + fraglist UDP GRO/GSO: Single stream UDP frame size 1460 Bytes: 3.016.000 fps (35.2 Gbps). ----------------------------------------------------------------------- Known issues: - With this patchset fraglist GRO/GSO is done always on forwarding. This will change as soon as we agreed on how to decide beteen standard and fraglist GRO/GSO. Changes from v1: - Add IPv6 support. - Split patchset to enable UDP GRO by default before adding fraglist GRO support. - Mark fraglist GRO packets as CHECKSUM_NONE. - Take a refcount on the first segment skb when doing fraglist segmentation. With this we can use the same error handling path as with standard segmentation.