From patchwork Mon Jul 17 09:25:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lin Zhang X-Patchwork-Id: 789334 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3x9yZ71dbZz9t1t for ; Mon, 17 Jul 2017 19:25:19 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="itGcIw63"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751312AbdGQJZR (ORCPT ); Mon, 17 Jul 2017 05:25:17 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:36609 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751178AbdGQJZP (ORCPT ); Mon, 17 Jul 2017 05:25:15 -0400 Received: by mail-pg0-f65.google.com with SMTP id y129so18853831pgy.3 for ; Mon, 17 Jul 2017 02:25:15 -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; bh=fb5dTOOX1R/vA8i/NqFnF1q3JRJN+IDVdUg/w4feYQ8=; b=itGcIw63WbJPIdv+ZA5XPfMgz3b8QXuwxpq7mwUa8pOhO8zyc84NwlAoXxt+HO6ppQ 3zQnOtKazA3Ih/ukko+/pRJ2Jdc5afTSms0VDN5bf1cC5lwAXbc5/WPDaKDOXCFn9PLg 1+u4mDeIcw4C+EyYMTNM9qXi4pNdCFB9F9av6SDpXQ50UnssPL0VPe10v2K2vQYe2j+g WlnGvsPv0kC7pjclN8miIlPluw7m9y3dDG3jJ7CE3k1U9rddk8pwmn4DYLaVtQrg20ee iKggbo+XKgzABBOgdsZWVfpu3hKn2mJHK8gKRHPpCu1KB/3m1sBbl9TSfNaNy0TGS/ee BP6Q== 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=fb5dTOOX1R/vA8i/NqFnF1q3JRJN+IDVdUg/w4feYQ8=; b=f6K01Gqt85TXukTTx0xAF6oY0LuRS2vWfSi8TszxwdDGwZ/w8s39T8FGdbTJk+1Gsh DmcFTem6j0BNXxB0F1h1yHrSheTPmjkcx90o2mIpvuJbxdcRg2AOtvYX5jI2LQBLqqBx XHnYGRlUDw3WJ8A6M3AXyoPZEMCBP8cmNzS2ckhR1p57ULQCprb0RcrMkx26B6CRA7Iw ohRy/b8atm18c24lq41Q32s4y8S2d83TjAmaZJwWrfuoU+qneJf0fLB1sBcgQwXep6gv nNa7ss2obCV0yiBeuLpMwVb1nFlscjvykGdKVJJmKIi9kOtqXBgZz/yk6PTsBR+y1Ztt n44g== X-Gm-Message-State: AIVw111xqHCJ/JcFY3eO59NRuJQDj4SrvJosRWEY7ufT6/B+HIuXXJUV E3poSS+qyzuFaw== X-Received: by 10.84.210.196 with SMTP id a62mr3787278pli.165.1500283515583; Mon, 17 Jul 2017 02:25:15 -0700 (PDT) Received: from localhost.localdomain.localdomain ([110.185.39.186]) by smtp.gmail.com with ESMTPSA id d135sm8227849pga.6.2017.07.17.02.25.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jul 2017 02:25:15 -0700 (PDT) From: Lin Zhang To: davem@davemloft.net Cc: netdev@vger.kernel.org, eric.dumazet@gmail.com, Lin Zhang Subject: [PATCH net-next v2 resubmit] skbuff: optimize the pull_pages code in __pskb_pull_tail() Date: Mon, 17 Jul 2017 17:25:02 +0800 Message-Id: <1500283502-36546-1-git-send-email-xiaolou4617@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In the pull_pages code block, if the first frag size > eat, we can end the loop in advance to avoid extra copy. Signed-off-by: Lin Zhang Acked-by: Eric Dumazet --- v1 -> v2: * no need to rewrite skb_shinfo(skb)->nr_frags, per Eric Dumazet. --- net/core/skbuff.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index f990eb8..af61065 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1719,6 +1719,8 @@ void *__pskb_pull_tail(struct sk_buff *skb, int delta) if (eat) { skb_shinfo(skb)->frags[k].page_offset += eat; skb_frag_size_sub(&skb_shinfo(skb)->frags[k], eat); + if (!i) + goto end; eat = 0; } k++; @@ -1726,6 +1728,7 @@ void *__pskb_pull_tail(struct sk_buff *skb, int delta) } skb_shinfo(skb)->nr_frags = k; +end: skb->tail += delta; skb->data_len -= delta;