From patchwork Wed Jan 24 20:54:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 865464 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="0VWB3QJW"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zRcrL5Wvvz9s7s for ; Thu, 25 Jan 2018 07:55:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932933AbeAXUz2 (ORCPT ); Wed, 24 Jan 2018 15:55:28 -0500 Received: from mail-pg0-f68.google.com ([74.125.83.68]:40225 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932864AbeAXUz0 (ORCPT ); Wed, 24 Jan 2018 15:55:26 -0500 Received: by mail-pg0-f68.google.com with SMTP id g16so3553938pgn.7 for ; Wed, 24 Jan 2018 12:55:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=E0yEVcwO88J8E5hJX5bGbavvJ1eFhpD/FZsqu8RL/vo=; b=0VWB3QJWmqvwtg+Wolq+9pv2ffUAdZSikWxpEjLS+QNNr4K7dFR6aZG1eIHTmCpan1 kafFHHOdlPI5R0ddblRDxYdHbGQig4GTYaRh6whL0FD6d/BrJn+Zf7pArqNl1ucPQeUw xRo//NWjQyyXZnxDgLTE1XO3cprYiMd8N0DsByWiDhQXmjSZmVCQQRqzTOa1fVX+Vcgu Op9JlNobBRiKGIRGE/PouMbBCx/jWbgJskZg8WPHqUMW4dkOngQshoZZDzdxYTFiwQMr RzHl4vqG1hvfwxENt3nW55Os3WnZTRMt4KTuGcRjRxY1kQiCvdvp3EepCvT8X8imWvRe lXVA== 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=E0yEVcwO88J8E5hJX5bGbavvJ1eFhpD/FZsqu8RL/vo=; b=q0zsm3/6TU34FYIWTlpF/I8V1DeHXoOnxEdMvRuTliWs43aKR1D7zrES/OGq20Zy/F S1gtdZnznZ8XcIc+gtyapsVtH7UHCOediB6dqkNXfIs6qRt70328bRgUhgUxGbu6Xthn TeHJ1oq61HNPU17fm9sWaa8rKGsyW9qjaYVKQn1YiET3f51fR7pynj4/KYno2BL5nHXq kLTEIOZwK8o8NDXwEIQ5SNEqGUseMqGF42OX2vG1S44/kg7sLSDJRN9RW/XFdjr3KUbI llHnrebecV/NlzeFFTCuIvXQZGBvdiLREJa9nUM3+xK8rehzt7w/SbVFzq4aQtD17vTE QtpQ== X-Gm-Message-State: AKwxytchiF9gassiDef1WxwwWsWrcPqDqNAjudtgQejREiRUs8e11nIP RoI9EHI7weRaViAzwEsjSjVhWw== X-Google-Smtp-Source: AH8x226c/3ciPxC8EVUsHshqw3e56b0clmNsbrH9wYF24n1Hh+bV8C2vsqRjayY3suXuRnVkrAddnA== X-Received: by 2002:a17:902:8f8b:: with SMTP id z11-v6mr9354854plo.43.1516827326015; Wed, 24 Jan 2018 12:55:26 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id g13sm15305612pfe.50.2018.01.24.12.55.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 24 Jan 2018 12:55:25 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, jiri@resnulli.us, dsahern@gmail.com, daniel@iogearbox.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, aring@mojatatu.com, Jakub Kicinski Subject: [PATCH net-next v2 10/12] cls_u32: pass offload flags to tc_cls_common_offload_init() Date: Wed, 24 Jan 2018 12:54:22 -0800 Message-Id: <20180124205424.6976-11-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180124205424.6976-1-jakub.kicinski@netronome.com> References: <20180124205424.6976-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Pass offload flags to the new implementation of tc_cls_common_offload_init(). Extack will now only be set if user requested skip_sw. hnodes need to hold onto the flags now to be able to reuse them on filter removal. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- net/sched/cls_u32.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index e2e8d08c4a0d..21e84abe4226 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -87,6 +87,7 @@ struct tc_u_hnode { unsigned int divisor; struct idr handle_idr; struct rcu_head rcu; + u32 flags; /* The 'ht' field MUST be the last field in structure to allow for * more entries allocated at end of structure. */ @@ -491,7 +492,7 @@ static void u32_clear_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h) struct tcf_block *block = tp->chain->block; struct tc_cls_u32_offload cls_u32 = {}; - tc_cls_common_offload_init_deprecated(&cls_u32.common, tp, NULL); + tc_cls_common_offload_init(&cls_u32.common, tp, h->flags, NULL); cls_u32.command = TC_CLSU32_DELETE_HNODE; cls_u32.hnode.divisor = h->divisor; cls_u32.hnode.handle = h->handle; @@ -509,7 +510,7 @@ static int u32_replace_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h, bool offloaded = false; int err; - tc_cls_common_offload_init_deprecated(&cls_u32.common, tp, extack); + tc_cls_common_offload_init(&cls_u32.common, tp, flags, extack); cls_u32.command = TC_CLSU32_NEW_HNODE; cls_u32.hnode.divisor = h->divisor; cls_u32.hnode.handle = h->handle; @@ -534,7 +535,7 @@ static void u32_remove_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n) struct tcf_block *block = tp->chain->block; struct tc_cls_u32_offload cls_u32 = {}; - tc_cls_common_offload_init_deprecated(&cls_u32.common, tp, NULL); + tc_cls_common_offload_init(&cls_u32.common, tp, n->flags, NULL); cls_u32.command = TC_CLSU32_DELETE_KNODE; cls_u32.knode.handle = n->handle; @@ -550,7 +551,7 @@ static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n, bool skip_sw = tc_skip_sw(flags); int err; - tc_cls_common_offload_init_deprecated(&cls_u32.common, tp, extack); + tc_cls_common_offload_init(&cls_u32.common, tp, flags, extack); cls_u32.command = TC_CLSU32_REPLACE_KNODE; cls_u32.knode.handle = n->handle; cls_u32.knode.fshift = n->fshift; @@ -1015,6 +1016,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, ht->handle = handle; ht->prio = tp->prio; idr_init(&ht->handle_idr); + ht->flags = flags; err = u32_replace_hw_hnode(tp, ht, flags, extack); if (err) {