From patchwork Fri May 1 03:11:36 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexei Starovoitov X-Patchwork-Id: 466790 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 B2AEC140761 for ; Fri, 1 May 2015 13:11:51 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753235AbbEADLo (ORCPT ); Thu, 30 Apr 2015 23:11:44 -0400 Received: from mail-pd0-f169.google.com ([209.85.192.169]:35287 "EHLO mail-pd0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753132AbbEADLn (ORCPT ); Thu, 30 Apr 2015 23:11:43 -0400 Received: by pdbqd1 with SMTP id qd1so80055073pdb.2 for ; Thu, 30 Apr 2015 20:11:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=vRKEQilidlbOCeWGdsmMHaXE1iTR20uD42f+71FaGEE=; b=dSDZQTeSxJwhI4ymbPcyDX7Kkvq6OSuIVqppsIMW1+mLTeJEqnpM5ZsEf7aOhyy4fk TuaWK6nHR5evv1EePa407nzYeqRwi+O+WnI7Y/hTLHHRtD29tyJb8k8ZGXxR14lOTbQO DZQecQ60+du+roZdrFOVxHlX9w42wrLY1D0V7ngzkcoxIdyl56Y/ENLp5Ng9VJEuzyOZ djZVrD5s30jKY2YGaLFAa1vBeiX1fogAKc4+pnDQEc4ZR9tCzJ1vy3daN1JRNPF9FjwY l7slE2cvrZqnVGwOsiLHZZr3hz3Rcc8zTktwW7HkPdeMyBWttBLHLRhtTfJAzabyBFGR iDwQ== X-Gm-Message-State: ALoCoQkNRmT3HyIMonaDuKLo9NQ5QGmPIcS0gUrdTDts6GHK+j9djlOSEFoODRGAyaHrJau3xc+z X-Received: by 10.66.191.226 with SMTP id hb2mr14030319pac.72.1430449902894; Thu, 30 Apr 2015 20:11:42 -0700 (PDT) Received: from localhost.localdomain ([12.229.56.227]) by mx.google.com with ESMTPSA id xz3sm3477318pbc.13.2015.04.30.20.11.41 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 30 Apr 2015 20:11:42 -0700 (PDT) From: Alexei Starovoitov To: "David S. Miller" Cc: Jamal Hadi Salim , Daniel Borkmann , Florian Westphal , netdev@vger.kernel.org Subject: [PATCH v2 net-next] tc: remove unused redirect ttl Date: Thu, 30 Apr 2015 20:11:36 -0700 Message-Id: <1430449896-5406-1-git-send-email-ast@plumgrid.com> X-Mailer: git-send-email 1.7.9.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org improves ingress+u32 performance from 22.4 Mpps to 22.9 Mpps Signed-off-by: Jamal Hadi Salim Signed-off-by: Alexei Starovoitov Acked-by: Florian Westphal Acked-by: Daniel Borkmann --- The code is from Jamal. I only did testing and benchmarking. V1->V2: missed removal of unused 'dev' variable. include/uapi/linux/pkt_cls.h | 2 ++ net/core/dev.c | 9 --------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h index bf08e76bf505..f6344a522cd6 100644 --- a/include/uapi/linux/pkt_cls.h +++ b/include/uapi/linux/pkt_cls.h @@ -62,11 +62,13 @@ bits 9,10,11: redirect counter - redirect TTL. Loop avoidance #define SET_TC_NCLS(v) ( TC_NCLS | (v & ~TC_NCLS)) #define CLR_TC_NCLS(v) ( v & ~TC_NCLS) +#ifndef __KERNEL__ #define S_TC_RTTL _TC_MAKE32(9) #define M_TC_RTTL _TC_MAKEMASK(3,S_TC_RTTL) #define G_TC_RTTL(x) _TC_GETVALUE(x,S_TC_RTTL,M_TC_RTTL) #define V_TC_RTTL(x) _TC_MAKEVALUE(x,S_TC_RTTL) #define SET_TC_RTTL(v,n) ((V_TC_RTTL(n)) | (v & ~M_TC_RTTL)) +#endif #define S_TC_AT _TC_MAKE32(12) #define M_TC_AT _TC_MAKEMASK(2,S_TC_AT) diff --git a/net/core/dev.c b/net/core/dev.c index c7ba0388f1be..97a15ae8d07a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3531,18 +3531,9 @@ EXPORT_SYMBOL_GPL(br_fdb_test_addr_hook); */ static int ing_filter(struct sk_buff *skb, struct netdev_queue *rxq) { - struct net_device *dev = skb->dev; - u32 ttl = G_TC_RTTL(skb->tc_verd); int result = TC_ACT_OK; struct Qdisc *q; - if (unlikely(MAX_RED_LOOP < ttl++)) { - net_warn_ratelimited("Redir loop detected Dropping packet (%d->%d)\n", - skb->skb_iif, dev->ifindex); - return TC_ACT_SHOT; - } - - skb->tc_verd = SET_TC_RTTL(skb->tc_verd, ttl); skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_INGRESS); q = rcu_dereference(rxq->qdisc);