From patchwork Wed Feb 15 08:52:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Or Gerlitz X-Patchwork-Id: 728104 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 3vNY3221ZWz9rxm for ; Wed, 15 Feb 2017 19:53:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751522AbdBOIws (ORCPT ); Wed, 15 Feb 2017 03:52:48 -0500 Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:36646 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751362AbdBOIwp (ORCPT ); Wed, 15 Feb 2017 03:52:45 -0500 Received: from Internal Mail-Server by MTLPINE1 (envelope-from ogerlitz@mellanox.com) with ESMTPS (AES256-SHA encrypted); 15 Feb 2017 10:52:42 +0200 Received: from r-vnc04.mtr.labs.mlnx (r-vnc04.mtr.labs.mlnx [10.208.0.116]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id v1F9r6Qr003490; Wed, 15 Feb 2017 11:53:07 +0200 From: Or Gerlitz To: "David S. Miller" Cc: Jakub Kicinski , John Fastabend , Jamal Hadi Salim , Roi Dayan , Jiri Pirko , netdev@vger.kernel.org, Or Gerlitz Subject: [PATCH net-next V3 6/7] net/sched: cls_u32: Reflect HW offload status Date: Wed, 15 Feb 2017 10:52:36 +0200 Message-Id: <1487148757-24809-7-git-send-email-ogerlitz@mellanox.com> X-Mailer: git-send-email 1.8.2.3 In-Reply-To: <1487148757-24809-1-git-send-email-ogerlitz@mellanox.com> References: <1487148757-24809-1-git-send-email-ogerlitz@mellanox.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org U32 support for the "in hw" offloading flags. Signed-off-by: Or Gerlitz Reviewed-by: Amir Vadai --- net/sched/cls_u32.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index a6ec3e4b..8c6cc39 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -523,6 +523,10 @@ static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n, err = dev->netdev_ops->ndo_setup_tc(dev, tp->q->handle, tp->protocol, &offload); + + if (!err) + n->flags |= TCA_CLS_FLAGS_IN_HW; + if (tc_skip_sw(flags)) return err; @@ -895,6 +899,9 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, return err; } + if (!(tc_in_hw(new->flags))) + new->flags |= TCA_CLS_FLAGS_NOT_IN_HW; + u32_replace_knode(tp, tp_c, new); tcf_unbind_filter(tp, &n->res); call_rcu(&n->rcu, u32_delete_key_rcu); @@ -1014,6 +1021,9 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, if (err) goto errhw; + if (!(tc_in_hw(n->flags))) + n->flags |= TCA_CLS_FLAGS_NOT_IN_HW; + ins = &ht->ht[TC_U32_HASH(handle)]; for (pins = rtnl_dereference(*ins); pins; ins = &pins->next, pins = rtnl_dereference(*ins))