From patchwork Mon May 14 23:07:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Willem de Bruijn X-Patchwork-Id: 913355 Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="PBMY63uu"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40lGZY03Nzz9s1B for ; Tue, 15 May 2018 09:08:05 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752250AbeENXH5 (ORCPT ); Mon, 14 May 2018 19:07:57 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:43453 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752196AbeENXHy (ORCPT ); Mon, 14 May 2018 19:07:54 -0400 Received: by mail-qk0-f195.google.com with SMTP id h19-v6so11453219qkj.10 for ; Mon, 14 May 2018 16:07:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TLz0rPHe8A9fVbKNTEZvbV95Xap/jWVLrXh6d+0UHvw=; b=PBMY63uuy9cF/tgedfJF4YE2zIZTs/9H0hsRLhNYboiHuIYeyFajs1LXPltL241t8l CE63H8lYsr0MxWX/2dz78ttFT6d2T7EATg2tc5Aygf/Azk31NzGHLm0WLVMhSns2LV1i TJmtTW8xtNNqBhBqjZhz+sLN7iCWIbOqlJYeDjiAg1sDD4n/RBKxJEuRru1NgqQOcOP2 6GoDnDQflt0qC1dwXYYUUGM6p+YajUow44MWjFPLk1jJo76eay4Mog9SzUwwjDE0az16 T7U6Lrey6AvnALnxnqeXItWty2jr/g47Ikbdl+TySzFQPgrCh8lZP7hQBL+OxLuSGnLE +wyA== 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:in-reply-to :references; bh=TLz0rPHe8A9fVbKNTEZvbV95Xap/jWVLrXh6d+0UHvw=; b=jhu+11oxhxLvG8+sRAGXNcRlb0diAbnLzzxdHRegTvsLgYrkUmljAqEP9Xgu2J1sQZ Xqri+ZgHl9d63colg0jkJtLMJNQ8p7ThAqjWAN95LaL90eyb7ZW5lc1CgkRjM2hndwcu FxEw1rCArwXx6DwU8loTc+tOUG6DC9zr2+4lDRwX24Y8T/dJlAcaVDEUAaB5QQwrE5Ui fO+vYyO2wZJ1oNAynVDsldZed59Rzez7cSvxrZ8vrLw2Gr7vWkG2i/5RM5IFOKH9Cwxo Ksbbiby9JCd06mXJ468jxR8WhLXh7NGTR+2rwDBe6O42u7wlafsNfbbntgT8A8FN5yPm MMwQ== X-Gm-Message-State: ALKqPwc/yN2QUYNv5gFwexsYfjL6N4ER9b/wF7Sp2fzLVgJJ1tn//ZAs 2TfHNaF2Bk6/x0wT/tpapa1VlPlo X-Google-Smtp-Source: AB8JxZo+qrO0jChUCfX5Qrf+oB3Pcys7NC6Cdw6vEx2yAsQAhZcyhntrYm4ZhQgzyn2ZCmWTIDgtqg== X-Received: by 2002:a37:a2c9:: with SMTP id l192-v6mr6711603qke.255.1526339273070; Mon, 14 May 2018 16:07:53 -0700 (PDT) Received: from willemb1.nyc.corp.google.com ([2620:0:1003:315:3fa1:a34c:1128:1d39]) by smtp.gmail.com with ESMTPSA id x10-v6sm7301335qkl.8.2018.05.14.16.07.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 May 2018 16:07:51 -0700 (PDT) From: Willem de Bruijn To: netdev@vger.kernel.org Cc: davem@davemloft.net, Willem de Bruijn Subject: [PATCH net-next 3/3] udp: only use paged allocation with scatter-gather Date: Mon, 14 May 2018 19:07:47 -0400 Message-Id: <20180514230747.118875-4-willemdebruijn.kernel@gmail.com> X-Mailer: git-send-email 2.17.0.441.gb46fe60e1d-goog In-Reply-To: <20180514230747.118875-1-willemdebruijn.kernel@gmail.com> References: <20180514230747.118875-1-willemdebruijn.kernel@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Willem de Bruijn Paged allocation stores most payload in skb frags. This helps udp gso by avoiding copying from the gso skb to segment skb in skb_segment. But without scatter-gather, data must be linear, so do not use paged mode unless NETIF_F_SG. Fixes: 15e36f5b8e98 ("udp: paged allocation with gso") Reported-by: Sean Tranchetti Signed-off-by: Willem de Bruijn --- net/ipv4/ip_output.c | 2 +- net/ipv6/ip6_output.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index b5e21eb198d8..b38731d8a44f 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@ -884,7 +884,7 @@ static int __ip_append_data(struct sock *sk, exthdrlen = !skb ? rt->dst.header_len : 0; mtu = cork->gso_size ? IP_MAX_MTU : cork->fragsize; - paged = !!cork->gso_size; + paged = cork->gso_size && (rt->dst.dev->features & NETIF_F_SG); if (cork->tx_flags & SKBTX_ANY_SW_TSTAMP && sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID) diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 7f4493080df6..35a940b9f208 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -1262,7 +1262,7 @@ static int __ip6_append_data(struct sock *sk, dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; } - paged = !!cork->gso_size; + paged = cork->gso_size && (rt->dst.dev->features & NETIF_F_SG); mtu = cork->gso_size ? IP6_MAX_MTU : cork->fragsize; orig_mtu = mtu;