From patchwork Sat Jan 20 01:44:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863896 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="osON5Cjs"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWP36rNz9t3l for ; Sat, 20 Jan 2018 12:45:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756249AbeATBp0 (ORCPT ); Fri, 19 Jan 2018 20:45:26 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:45454 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755728AbeATBpW (ORCPT ); Fri, 19 Jan 2018 20:45:22 -0500 Received: by mail-pf0-f195.google.com with SMTP id a88so2661293pfe.12 for ; Fri, 19 Jan 2018 17:45:22 -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=s9FnN7yZnd74czrpEVH/QaG0ySp9WH6UaKp/FaifhPQ=; b=osON5Cjs6g3A0kN67VWvh2R62uYj51/b/uyRNdBEKUt5RCwq6GBuehGFSr7zKFnXoe H5mRiq0AVuapfSIt6EmU0e4SPOvAOZgLciNq+PgppoFyPo6VjONSPYFXOjK7id0yflfb BhCEY3Uz5bX47mLRFT34kJwXnTsixycwEQMVRoxttLEEhpxjzBDBB7BvfO3/IOPMDnIG HRTDT8ng+WNA7glYBWXC12aOeCWAgfdPF82ku/H2Q/y+sPr0zFdvf0Q2iMkQqmNBzVB3 i4zUkmnY1txYkYHMumHHEHAy8sOeWdqUkdbm244Z2eh0qxIUQCgUxNGRCcI2QwonRU4h Sneg== 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=s9FnN7yZnd74czrpEVH/QaG0ySp9WH6UaKp/FaifhPQ=; b=HQMHatT00iRa2qX1Yvi17fFKLLk8CYz6tuLRiFzYdJS7sNLpuQ04dA9/qs/6/Vplsm swroLjszPXdUBuCzU+NiKTm/hOdmRDPqFklQkDl71iFpF9sQovLGMGrKNHUYQwdgWFr5 DMQoc6uTkOQgin10jc+5lewtASX/9/YKyNa+rT8AcjZ0ZKFqDmqDBWr8ntrvzLXsncXz N9P3pVkQ3efPaAKTgrmcQaNc5oDwZJNL9i9YyKOYPLw6c1tj6GOZKpbX6Mc8VH4kRU4H ytKw8FdB0TQn0JnhRSRRAyZqhSlc0k0nb5bbS0NtDz3ASPq8d8yERqu6BOiPIo9nGZDE DAcA== X-Gm-Message-State: AKwxytfL7XCAo75mqc0BGZFWSAlumkXvo1mBc+TiiSIPJXGBsROfcqoC MtyOTzusnau3pNVKHFz6d5kRfA== X-Google-Smtp-Source: AH8x224JmJHpcOxqEDUOCw6Cq7EXP9cnCRWVUu8dHOuCKw2JoasFglz4clxEuadbrJapbqUGgvmaxw== X-Received: by 10.99.97.202 with SMTP id v193mr437443pgb.84.1516412722175; Fri, 19 Jan 2018 17:45:22 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:21 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 1/8] net: sched: cls_flower: propagate extack support for filter offload Date: Fri, 19 Jan 2018 17:44:43 -0800 Message-Id: <20180120014450.29666-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Propagate the extack pointer from the `->change()` classifier operation to the function used for filter replacement in cls_flower. This makes it possible to use netlink extack messages in the future at replacement time for this filter, although it is not used at this point. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- net/sched/cls_flower.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index c6ac4a612c4a..f675a92e1b66 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -235,7 +235,8 @@ static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f) static int fl_hw_replace_filter(struct tcf_proto *tp, struct flow_dissector *dissector, struct fl_flow_key *mask, - struct cls_fl_filter *f) + struct cls_fl_filter *f, + struct netlink_ext_ack *extack) { struct tc_cls_flower_offload cls_flower = {}; struct tcf_block *block = tp->chain->block; @@ -943,7 +944,8 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, err = fl_hw_replace_filter(tp, &head->dissector, &mask.key, - fnew); + fnew, + extack); if (err) goto errout_idr; } From patchwork Sat Jan 20 01:44:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863897 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="ZCg9HvUK"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWQ17GJz9t3k for ; Sat, 20 Jan 2018 12:45:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756286AbeATBpa (ORCPT ); Fri, 19 Jan 2018 20:45:30 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:38132 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756103AbeATBpY (ORCPT ); Fri, 19 Jan 2018 20:45:24 -0500 Received: by mail-pg0-f66.google.com with SMTP id y27so2719570pgc.5 for ; Fri, 19 Jan 2018 17:45:24 -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=kxx5EobHMAFq+uanW1Perfof1+ttqb4lgZaFzp2pzjk=; b=ZCg9HvUK+9+JA3GvEtr9jQ2lpkz8236bmfVO1cXWTaeGBFGvxLlG18lniSF3Pyte6o 9OYZh4aXR7cHy6jt+nqk3owx1MHjXf6axwgxKZUoS+X0/qe9elJSS6ijDfeT7x/UblBv x3ojp61DpyEx7JuI3+h56TySkKvszjSUO7XvBrUq/b8JfxKttiJdAZz3c/JLxJbGkTym dB9PO/SyVXPHSn55J+RAW/7lDYxwKukzTty0fZHJJJEvxmU3F3ZgBC71feT+4DF1IUH2 vLLvO+JEBvQ55qjyVQlq74ngp8ElDLn245Fnd/lXyJKLXNR0sAnwJGMaEsueul9q7xTb zsbg== 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=kxx5EobHMAFq+uanW1Perfof1+ttqb4lgZaFzp2pzjk=; b=Zn/Hvd+MzPqKv5POiJHqAtpJM/4lso1Z4q6BBbEckXJs4VAn/1Hq5/OxxEzmyoWhcn 4HA6Dc8/bD6pKD1k80uZsGwNIKnleUYuvpZM66oZ6bvi4moB7+deHWziGCYZDyRzJiGi izjdVUbhVtG4V3ZwPmXITZtlerloU8RsokT3yLm6YTfZAMGN/bKOMXVaPhbwrQzkpK3A frIt6mDPYjd+f3DAmfn5Ehw5jC5XQ67iFXQ0Z0+7/eJXRz3D2NczttYtrLyc16Dn26P7 DlA5DJJJsnAwQvlX+TfjkzMWKgF3oUFtKD8WLFyqTb2Asc3h0vr3SnQLpOjEpKtg5Lyv gVUw== X-Gm-Message-State: AKwxytcIcykA0RsH8oQIhq54/O9nCleN8ilY5iSEjC/Hancb8qgcP8bx m+dXzHoJzwcJw3lSvlsG2xoUDA== X-Google-Smtp-Source: AH8x225mUq6nrX/v7nOhif98Vv9VwR38NsVa6WLH31cQUneVPAf33d0V1Y8WV/h511VACX5o8UN+Uw== X-Received: by 10.101.66.193 with SMTP id l1mr424241pgp.17.1516412723753; Fri, 19 Jan 2018 17:45:23 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:23 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 2/8] net: sched: cls_matchall: propagate extack support for filter offload Date: Fri, 19 Jan 2018 17:44:44 -0800 Message-Id: <20180120014450.29666-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Propagate the extack pointer from the `->change()` classifier operation to the function used for filter replacement in cls_matchall. This makes it possible to use netlink extack messages in the future at replacement time for this filter, although it is not used at this point. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- net/sched/cls_matchall.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index f67d3d7fcf40..b47929c15792 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c @@ -86,7 +86,8 @@ static void mall_destroy_hw_filter(struct tcf_proto *tp, static int mall_replace_hw_filter(struct tcf_proto *tp, struct cls_mall_head *head, - unsigned long cookie) + unsigned long cookie, + struct netlink_ext_ack *extack) { struct tc_cls_matchall_offload cls_mall = {}; struct tcf_block *block = tp->chain->block; @@ -205,7 +206,8 @@ static int mall_change(struct net *net, struct sk_buff *in_skb, goto err_set_parms; if (!tc_skip_hw(new->flags)) { - err = mall_replace_hw_filter(tp, new, (unsigned long)new); + err = mall_replace_hw_filter(tp, new, (unsigned long)new, + extack); if (err) goto err_replace_hw_filter; } From patchwork Sat Jan 20 01:44:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863898 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="2KixPD74"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWQ6KGHz9t3l for ; Sat, 20 Jan 2018 12:45:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756323AbeATBpd (ORCPT ); Fri, 19 Jan 2018 20:45:33 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:40300 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756212AbeATBpZ (ORCPT ); Fri, 19 Jan 2018 20:45:25 -0500 Received: by mail-pg0-f67.google.com with SMTP id g16so2708586pgn.7 for ; Fri, 19 Jan 2018 17:45:25 -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=ymVESf0UknvL5M7Z0YvdyB5OuLo7UoElB4T2TovrXv4=; b=2KixPD74AAyMeHowveKlaVfEztRcZFj6EPbuh3tWmKbdpVoV/48mv/KEDPFe9L5p0q DfZHLmLNtPbG4bnAcOCge1//6DQHqsIbFlfKn2uylySo3cVQiD4cw4Q/BTYaHwqc0z0L sy0Axe4Prnnt3ervOXYGsl5O3NdjMaovAhEdu15QDZk/LIT3jPRlZwTAKAO5EPIq4fj1 i/XEc9H089/tBHWlSHCbApmUYg0+UIIU//UoyuGLqP+BBkY+cicbhqSYWDmR299z+fzL 43Z5dYlFibXMGzu7+fhfzMOkqKru9kPpyp0r2L9/T4LvPpPcEvI1TfRBNSXMooErIZPy cHAg== 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=ymVESf0UknvL5M7Z0YvdyB5OuLo7UoElB4T2TovrXv4=; b=jYJHAvj8VBX19acqsze2bVNrcZz9GbYAY9hOtJgUsr2aUKFxQzfOLpNZM9XfG4R1ji MOdf6XOedTA4t1CadMYVVOPQ3g/UKtkpQJwmu1X1RjIn4SmxVUS65gP33FxMn8I3WDHQ Wj/XM8fc/4SEkbMisAwFCjnM3FJ+8vHzvbtF50VDAQttaufV3whVtmGKgdcWdorLTiMf 7f2uAhaO9t+1lo26agL/S5XT6Uxtn1o2bDYlM+wxTulgnWWoLloT+5v+VAgondwaRvx7 ehWVEFSGo6JdLkNODQHNtRf7u2l5nAIvSX6ip3UYZdEUCQpR1Xo94WxudUcHy9QPwsIV VjuA== X-Gm-Message-State: AKwxytd6dzZSBX6szp6zGfAiZnCjhsBL/x/uFoiMIadYAYd841DXGfsz EccGRzG0ahGtXsqPNrls5yNv+w== X-Google-Smtp-Source: AH8x224kbfiF7NjdvnLNN4vKKlwOeeYLWnS3pNearrZQPRvfOBPEDDyHKYGjVZWboz9By/yA8HTbvg== X-Received: by 10.99.117.74 with SMTP id f10mr400980pgn.385.1516412725346; Fri, 19 Jan 2018 17:45:25 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:24 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 3/8] net: sched: cls_u32: propagate extack support for filter offload Date: Fri, 19 Jan 2018 17:44:45 -0800 Message-Id: <20180120014450.29666-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Propagate the extack pointer from the `->change()` classifier operation to the function used for filter replacement in cls_u32. This makes it possible to use netlink extack messages in the future at replacement time for this filter, although it is not used at this point. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- net/sched/cls_u32.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 57113e936155..0206c210e25b 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -501,7 +501,7 @@ static void u32_clear_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h) } static int u32_replace_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h, - u32 flags) + u32 flags, struct netlink_ext_ack *extack) { struct tcf_block *block = tp->chain->block; struct tc_cls_u32_offload cls_u32 = {}; @@ -543,7 +543,7 @@ static void u32_remove_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n) } static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n, - u32 flags) + u32 flags, struct netlink_ext_ack *extack) { struct tcf_block *block = tp->chain->block; struct tc_cls_u32_offload cls_u32 = {}; @@ -965,7 +965,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, return err; } - err = u32_replace_hw_knode(tp, new, flags); + err = u32_replace_hw_knode(tp, new, flags, extack); if (err) { u32_destroy_key(tp, new, false); return err; @@ -1016,7 +1016,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, ht->prio = tp->prio; idr_init(&ht->handle_idr); - err = u32_replace_hw_hnode(tp, ht, flags); + err = u32_replace_hw_hnode(tp, ht, flags, extack); if (err) { idr_remove_ext(&tp_c->handle_idr, handle); kfree(ht); @@ -1122,7 +1122,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, struct tc_u_knode __rcu **ins; struct tc_u_knode *pins; - err = u32_replace_hw_knode(tp, n, flags); + err = u32_replace_hw_knode(tp, n, flags, extack); if (err) goto errhw; From patchwork Sat Jan 20 01:44:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863899 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="ILj0WBqM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWY3BfSz9t3Z for ; Sat, 20 Jan 2018 12:45:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756368AbeATBpk (ORCPT ); Fri, 19 Jan 2018 20:45:40 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:40913 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756257AbeATBp1 (ORCPT ); Fri, 19 Jan 2018 20:45:27 -0500 Received: by mail-pf0-f193.google.com with SMTP id i66so2673070pfd.7 for ; Fri, 19 Jan 2018 17:45:27 -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=PQ07MOZq+STIVgVgO+qYXlpynAc3fVsxvUDNpMWieQ8=; b=ILj0WBqMK68se4ryCGhHIGt8dM8yVwpxUK1MUxKeqc0HihaT8bWKTObqyK3BmMxVY0 PQ4IgSWOzLSk0Ir1x+jDNjdi8be6d3UJE27kOGbJTVxYL/imWGLuv0NrRDDTa5TwwRZ7 GUNTLC75LlIOrGL6+69QgXR3fSTt+8U1cYv5yMMVohxfAXxUBrB+RzHmlit2/O9R9JsJ WwV01gucfw2Rv5EHLsYZjjdDf7JxneQ4VJMh0vKYyMj9V09hZ5ZxddjX4QOJ5Tc2n2Zs kM5dXToNPuLIxJ/I58Af8oPCzxKX9d8lUuqL9Tw4ZrSTX1mx4+V3OTopwGjPcv8kOuP7 9xPA== 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=PQ07MOZq+STIVgVgO+qYXlpynAc3fVsxvUDNpMWieQ8=; b=Gij7zXfEruj1qEify4BWafRZ2q4C5GIqIhoTu2Bl0mcRF3D/9Xo1iaTWmcnvQmRw0q E/SuQkvyR2KotyXbD6vBj1gT+Hf4LjRswk1rAJKKc15pnThzdnS1ZBywaQgD6V+e1W6o 45LGdQK/v8eKuMZFPsog9wfIKIUj8JXrfsS1XFMehOk3VyVg3rMufdzDS/h0JkinTjcK 8a2C8tdpYrClB8T7PUQZNlxPOSxXPXuY1UZm2qx87j8wmHy//ne5+6MtAemFx/geJUHt kW7Az4ZFR26+dDgIvnO8YGXgCmrc06i430LsUK4wL0scuijx+Z+xrDtdu+okdrPW0hVK LNvw== X-Gm-Message-State: AKwxytcbLeqROOgACtUa9/SDZoTYkRb3B+p5SfIe8/COsatLOrrpsE7U qoHZaHtb/sltMeDr+D6/7kAt2g== X-Google-Smtp-Source: AH8x226VpVt02KQ1FazKhWyW2sxUTzS6Sh9reOacZ/c1vm4kwYve3O7yAq9QGWhdZdq2Eyrd0538zQ== X-Received: by 10.101.88.130 with SMTP id d2mr431861pgu.278.1516412726904; Fri, 19 Jan 2018 17:45:26 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:26 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 4/8] net: sched: cls_bpf: plumb extack support in filter for hardware offload Date: Fri, 19 Jan 2018 17:44:46 -0800 Message-Id: <20180120014450.29666-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Pass the extack pointer obtained in the `->change()` filter operation to cls_bpf_offload() and then to cls_bpf_offload_cmd(). This makes it possible to use this extack pointer in drivers offloading BPF programs in a future patch. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- net/sched/cls_bpf.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index fc024fc3ec2f..44c2f9034e07 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c @@ -147,7 +147,8 @@ static bool cls_bpf_is_ebpf(const struct cls_bpf_prog *prog) } static int cls_bpf_offload_cmd(struct tcf_proto *tp, struct cls_bpf_prog *prog, - struct cls_bpf_prog *oldprog) + struct cls_bpf_prog *oldprog, + struct netlink_ext_ack *extack) { struct tcf_block *block = tp->chain->block; struct tc_cls_bpf_offload cls_bpf = {}; @@ -173,7 +174,7 @@ static int cls_bpf_offload_cmd(struct tcf_proto *tp, struct cls_bpf_prog *prog, err = tc_setup_cb_call(block, NULL, TC_SETUP_CLSBPF, &cls_bpf, skip_sw); if (prog) { if (err < 0) { - cls_bpf_offload_cmd(tp, oldprog, prog); + cls_bpf_offload_cmd(tp, oldprog, prog, extack); return err; } else if (err > 0) { tcf_block_offload_inc(block, &prog->gen_flags); @@ -187,7 +188,8 @@ static int cls_bpf_offload_cmd(struct tcf_proto *tp, struct cls_bpf_prog *prog, } static int cls_bpf_offload(struct tcf_proto *tp, struct cls_bpf_prog *prog, - struct cls_bpf_prog *oldprog) + struct cls_bpf_prog *oldprog, + struct netlink_ext_ack *extack) { if (prog && oldprog && prog->gen_flags != oldprog->gen_flags) return -EINVAL; @@ -199,7 +201,7 @@ static int cls_bpf_offload(struct tcf_proto *tp, struct cls_bpf_prog *prog, if (!prog && !oldprog) return 0; - return cls_bpf_offload_cmd(tp, prog, oldprog); + return cls_bpf_offload_cmd(tp, prog, oldprog, extack); } static void cls_bpf_stop_offload(struct tcf_proto *tp, @@ -207,7 +209,7 @@ static void cls_bpf_stop_offload(struct tcf_proto *tp, { int err; - err = cls_bpf_offload_cmd(tp, NULL, prog); + err = cls_bpf_offload_cmd(tp, NULL, prog, NULL); if (err) pr_err("Stopping hardware offload failed: %d\n", err); } @@ -507,7 +509,7 @@ static int cls_bpf_change(struct net *net, struct sk_buff *in_skb, if (ret < 0) goto errout_idr; - ret = cls_bpf_offload(tp, prog, oldprog); + ret = cls_bpf_offload(tp, prog, oldprog, extack); if (ret) goto errout_parms; From patchwork Sat Jan 20 01:44:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863900 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="oZ7slq74"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWb4wCLz9t3Z for ; Sat, 20 Jan 2018 12:45:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756393AbeATBpo (ORCPT ); Fri, 19 Jan 2018 20:45:44 -0500 Received: from mail-pf0-f194.google.com ([209.85.192.194]:45465 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755728AbeATBp3 (ORCPT ); Fri, 19 Jan 2018 20:45:29 -0500 Received: by mail-pf0-f194.google.com with SMTP id a88so2661416pfe.12 for ; Fri, 19 Jan 2018 17:45:28 -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=9BtmqTbJ/X4Bcz+X8yTu+j9je0hMToDorKJ656RFnCs=; b=oZ7slq74pkZY4KNIkJwd82dBjgrhBJSBY0nEkrtuljpkOgGrYCSLrlxQBRwc8TZacN CBlKiB109BJtgFGVQSg4Dfh9WFM84pfEU8XyXBcibV0/VRxQ8UGGGvtfMaFDRekDEBdZ i/IHEITCiEiRm8GAKk81EThN+mWzJuJtU7QuAUJUyMJM65iYoXslMC7LE/IwNNZyUmkm G8uMWYcLU30TONnVorjDdopkapwQwv9Mz2+nhTNDJtFpwOWsTwohLrOKZ6CQbE0OSPSQ 10tDhjKLIR3vJgxk9rBde6iiza3XwZON8QPhh4zkBVNt5HH6DallJ6aNc1fh8eRCCdr4 DU5A== 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=9BtmqTbJ/X4Bcz+X8yTu+j9je0hMToDorKJ656RFnCs=; b=ikGovMEL/eeT2dPVnBXym5xRYqG699Vmchqa8MLw2vpskJEqCWRmdLkkwvBzMVCeJp E3OEQM8M0lvf2iMwkag7sN8DfYUckp7glDY0SM0GHP/lo8d2Yop7XfTmvjEnADKmFHcA Gseb+6zArbzubJHs7cXx7R27aEAp09EYST6DbCHqaDjzZUchRj54QB4lbcsWuS6E9lcU 2LYzXZXiSjfjC+M81YJbc9INNkSfignlvJ+Cj12xPuGbGlToMdoCSybHEvPfsVGOh7Sf OV4BMsWvVHgAancOPEIqZr1oshgbrua7fNVp/Ktmu62u8XIOErkZiV9Pue1h9Ju/0F2i A19w== X-Gm-Message-State: AKwxytfcUFpahucF1nyykx0f+mhZWjeGmyqqaHvZIPq8gakGZz4FWm+j 9QNR7wn4xuo1pv6BjM9spTFVJ+IJ X-Google-Smtp-Source: AH8x224M9N7iNszh0u5QW0UWJTj/NSrJC0ao6zpizUndThQQfu2E5kRodzOX1eutvAaIYm3APCumuA== X-Received: by 10.101.91.140 with SMTP id i12mr401415pgr.297.1516412728485; Fri, 19 Jan 2018 17:45:28 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:28 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 5/8] net: sched: add extack support for offload via tc_cls_common_offload Date: Fri, 19 Jan 2018 17:44:47 -0800 Message-Id: <20180120014450.29666-6-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Add extack support for hardware offload of classifiers. In order to achieve this, a pointer to a struct netlink_ext_ack is added to the struct tc_cls_common_offload that is passed to the callback for setting up the classifier. Function tc_cls_common_offload_init() is updated to support initialization of this new attribute. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- include/net/pkt_cls.h | 5 ++++- net/sched/cls_bpf.c | 4 ++-- net/sched/cls_flower.c | 6 +++--- net/sched/cls_matchall.c | 4 ++-- net/sched/cls_u32.c | 8 ++++---- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 2e4b8e436d25..f497f622580b 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -602,15 +602,18 @@ struct tc_cls_common_offload { u32 chain_index; __be16 protocol; u32 prio; + struct netlink_ext_ack *extack; }; static inline void tc_cls_common_offload_init(struct tc_cls_common_offload *cls_common, - const struct tcf_proto *tp) + const struct tcf_proto *tp, + struct netlink_ext_ack *extack) { cls_common->chain_index = tp->chain->index; cls_common->protocol = tp->protocol; cls_common->prio = tp->prio; + cls_common->extack = extack; } struct tc_cls_u32_knode { diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index 44c2f9034e07..6de0bea983ea 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c @@ -159,7 +159,7 @@ static int cls_bpf_offload_cmd(struct tcf_proto *tp, struct cls_bpf_prog *prog, skip_sw = prog && tc_skip_sw(prog->gen_flags); obj = prog ?: oldprog; - tc_cls_common_offload_init(&cls_bpf.common, tp); + tc_cls_common_offload_init(&cls_bpf.common, tp, extack); cls_bpf.command = TC_CLSBPF_OFFLOAD; cls_bpf.exts = &obj->exts; cls_bpf.prog = prog ? prog->filter : NULL; @@ -220,7 +220,7 @@ static void cls_bpf_offload_update_stats(struct tcf_proto *tp, struct tcf_block *block = tp->chain->block; struct tc_cls_bpf_offload cls_bpf = {}; - tc_cls_common_offload_init(&cls_bpf.common, tp); + tc_cls_common_offload_init(&cls_bpf.common, tp, NULL); cls_bpf.command = TC_CLSBPF_STATS; cls_bpf.exts = &prog->exts; cls_bpf.prog = prog->filter; diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index f675a92e1b66..727c10378f37 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -223,7 +223,7 @@ static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f) struct tc_cls_flower_offload cls_flower = {}; struct tcf_block *block = tp->chain->block; - tc_cls_common_offload_init(&cls_flower.common, tp); + tc_cls_common_offload_init(&cls_flower.common, tp, NULL); cls_flower.command = TC_CLSFLOWER_DESTROY; cls_flower.cookie = (unsigned long) f; @@ -243,7 +243,7 @@ static int fl_hw_replace_filter(struct tcf_proto *tp, bool skip_sw = tc_skip_sw(f->flags); int err; - tc_cls_common_offload_init(&cls_flower.common, tp); + tc_cls_common_offload_init(&cls_flower.common, tp, extack); cls_flower.command = TC_CLSFLOWER_REPLACE; cls_flower.cookie = (unsigned long) f; cls_flower.dissector = dissector; @@ -272,7 +272,7 @@ static void fl_hw_update_stats(struct tcf_proto *tp, struct cls_fl_filter *f) struct tc_cls_flower_offload cls_flower = {}; struct tcf_block *block = tp->chain->block; - tc_cls_common_offload_init(&cls_flower.common, tp); + tc_cls_common_offload_init(&cls_flower.common, tp, NULL); cls_flower.command = TC_CLSFLOWER_STATS; cls_flower.cookie = (unsigned long) f; cls_flower.exts = &f->exts; diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index b47929c15792..d990d2a52c6d 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c @@ -76,7 +76,7 @@ static void mall_destroy_hw_filter(struct tcf_proto *tp, struct tc_cls_matchall_offload cls_mall = {}; struct tcf_block *block = tp->chain->block; - tc_cls_common_offload_init(&cls_mall.common, tp); + tc_cls_common_offload_init(&cls_mall.common, tp, NULL); cls_mall.command = TC_CLSMATCHALL_DESTROY; cls_mall.cookie = cookie; @@ -94,7 +94,7 @@ static int mall_replace_hw_filter(struct tcf_proto *tp, bool skip_sw = tc_skip_sw(head->flags); int err; - tc_cls_common_offload_init(&cls_mall.common, tp); + tc_cls_common_offload_init(&cls_mall.common, tp, extack); cls_mall.command = TC_CLSMATCHALL_REPLACE; cls_mall.exts = &head->exts; cls_mall.cookie = cookie; diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 0206c210e25b..7030240f8826 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -491,7 +491,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(&cls_u32.common, tp); + tc_cls_common_offload_init(&cls_u32.common, tp, NULL); cls_u32.command = TC_CLSU32_DELETE_HNODE; cls_u32.hnode.divisor = h->divisor; cls_u32.hnode.handle = h->handle; @@ -509,7 +509,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(&cls_u32.common, tp); + tc_cls_common_offload_init(&cls_u32.common, tp, extack); cls_u32.command = TC_CLSU32_NEW_HNODE; cls_u32.hnode.divisor = h->divisor; cls_u32.hnode.handle = h->handle; @@ -534,7 +534,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(&cls_u32.common, tp); + tc_cls_common_offload_init(&cls_u32.common, tp, NULL); cls_u32.command = TC_CLSU32_DELETE_KNODE; cls_u32.knode.handle = n->handle; @@ -550,7 +550,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(&cls_u32.common, tp); + tc_cls_common_offload_init(&cls_u32.common, tp, extack); cls_u32.command = TC_CLSU32_REPLACE_KNODE; cls_u32.knode.handle = n->handle; cls_u32.knode.fshift = n->fshift; From patchwork Sat Jan 20 01:44:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863901 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="KIaVgl0l"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWh4wzSz9t3Z for ; Sat, 20 Jan 2018 12:45:52 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756431AbeATBpv (ORCPT ); Fri, 19 Jan 2018 20:45:51 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:40305 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756278AbeATBpa (ORCPT ); Fri, 19 Jan 2018 20:45:30 -0500 Received: by mail-pg0-f67.google.com with SMTP id g16so2708669pgn.7 for ; Fri, 19 Jan 2018 17:45:30 -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=0MhkdBomwuFBAMblOFCVvmBasmOILKsArCPvYCoQ5qg=; b=KIaVgl0lXLmbmi8WBb9XELYokzpTheGk6VQu63Ri7wFQM1hB6WDvLGto7jVMtHKmpg Yq0HfNg0ONzN1DRhR+OVZwO6GnKC+Oj542Hc+TEhcgCnZCN/i6mOfvWlt0htFN/tmTsX gzNA/C0CMU62AIQp7lnfZeifCl79/zQK8XjyHYun7rFdx1afJOkhM8kh9URh9/NxqE04 LrbHdwYzAs6QW6ytY5wG5Xn2VpSRpc2w2uT6fAEE0oCraak2WEU/HR52anK43U5z9Fup MlJzYIYH6WvZKCnmmcwnRBnyr91b4DHBs6miyMMjatyeGbvz5u6SjH1OeZ5nfgM0w/sV 9H/g== 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=0MhkdBomwuFBAMblOFCVvmBasmOILKsArCPvYCoQ5qg=; b=PffY/IvjxVfd8+muAdbQf4DcNqDqOYrmlu43Su8XzCzIbIS1MymsmF7XyIq/aJR15W joz0T3LEhg+XWrfmd6u+S5a936LU99UAH723OeGCMwo+yYqJSp++WtxE6ajrwOEz6yaJ JJeUnJPXSMikpAh02vva6PjxFwokFUVzw8xm51zxly6QRG/2wpgB5TMoz4EKBypJNRuv W1dXBbhtszT4RnjC+sbcRF2ve/pC4gt23Y9j5NQhfuXl3ZemWoJpX9BwkWEruSD/v4BV 4uB+tFGkWJqV8tPK48cxAs93jmSwV89bjzy2CDn9T+MOBzFcexukBeOD6GcXV4cCEwb2 GwGg== X-Gm-Message-State: AKwxytchr5mtndi4KoHOVPpsRM6W7aNymWKjLiqBbL0vpOSF8ERO6C3K a9yRbA4D54MBtepi1pd1mgZQ2g== X-Google-Smtp-Source: AH8x226q3bYd4STdrr5fuLAWvqABcYnSKvIuRwGrcegny0ogLkZ0WTIPalhNZR/FDTKCArt9G1PkPA== X-Received: by 10.99.131.74 with SMTP id h71mr404414pge.373.1516412730039; Fri, 19 Jan 2018 17:45:30 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:29 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 6/8] net: sched: create tc_can_offload_extack() wrapper Date: Fri, 19 Jan 2018 17:44:48 -0800 Message-Id: <20180120014450.29666-7-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Create a wrapper around tc_can_offload() that takes an additional extack pointer argument in order to output an error message if TC offload is disabled on the device. In this way, the error message is handled by the core and can be the same for all drivers. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- include/net/pkt_cls.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index f497f622580b..2f8f16a4d88e 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -656,6 +656,17 @@ static inline bool tc_can_offload(const struct net_device *dev) return dev->features & NETIF_F_HW_TC; } +static inline bool tc_can_offload_extack(const struct net_device *dev, + struct netlink_ext_ack *extack) +{ + bool can = tc_can_offload(dev); + + if (!can) + NL_SET_ERR_MSG(extack, "TC offload is disabled on net device"); + + return can; +} + static inline bool tc_skip_hw(u32 flags) { return (flags & TCA_CLS_FLAGS_SKIP_HW) ? true : false; From patchwork Sat Jan 20 01:44:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863902 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="wSec91w4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWp2jJvz9t3Z for ; Sat, 20 Jan 2018 12:45:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756456AbeATBpz (ORCPT ); Fri, 19 Jan 2018 20:45:55 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:42242 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756313AbeATBpc (ORCPT ); Fri, 19 Jan 2018 20:45:32 -0500 Received: by mail-pg0-f65.google.com with SMTP id q67so2709678pga.9 for ; Fri, 19 Jan 2018 17:45:31 -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=U3nh+DMsrN5rVJqkVQCut7tCXUct0iY+N+B25G0bQdY=; b=wSec91w4ikLlFb4cZhu4jy1Qe7b9cZTCvpBi4HbVg/KD9P7V5TZ9TUrtewSX/hsc/3 7A6f/KWiEQQMo4Mjq3oALbo4Y+CEwTuvb36qN51MoguYBBKV3GcrmK/LFxrhPle0tjet oxJbqGDDh/SZOsfHDomzDaE3WIwJzUvis9gZLMIbBiXrzrhruToN9yS0Oyoja/GNOY1c xDC7CWRaksukxUTytp+XuenHlIX8ufU8liAwt98owb+8klYSxI4OCt+wsjRBHw5CX0B5 sjM+NNv2k12bOo8A29MrxlVN5U8eF7h867KZ3dIwNe+aG91bHfzWTMVWfh1P6hTo1Lt2 tLHQ== 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=U3nh+DMsrN5rVJqkVQCut7tCXUct0iY+N+B25G0bQdY=; b=OGQgMLYMDtnGzYaHlvvlpHgK11+y7ysxcG4/BHqhwVQHeyamGGjAzi3aBazJMU9zCc SWenfNcT4nQlJflsPyYaXX56hXCy5aTJfZ7jbZQOezvudqwmG265xUkIvkxkSAaJDia4 uxGDNe2IBRnd7eTDTKjWcKk8Ug6RrRrfTBPX/52lzpONinhkib5pVFQelirFY6sQhIzE zUQuF0qpQ1fYMymnuTcdrOAZUU4sxJmPEm8GsvRc/42AHgik0Weyn2KFdv9lBNr7OmCM 9R/fx16/va5uxB4iwHViFW/fs/ER4/0AKna0sglhf09f/p2DWARyVXA0lQXMxc8/aOVt Nk2Q== X-Gm-Message-State: AKwxytcBX8SGqI07lfKFD/oa0MvBb47Z0pHouCC72ILoyQN8gfzTZIpg w83wD/M9Szs+N6ML+6aN2xZ6AA== X-Google-Smtp-Source: AH8x2260yxNKxhFbj8bo5LPn821kJXZRr1tcjoIHFKSl5Ifv3tzjWzcBgS7DH0YJtI/320VuZC27sQ== X-Received: by 10.99.113.20 with SMTP id m20mr409468pgc.400.1516412731625; Fri, 19 Jan 2018 17:45:31 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:31 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 7/8] nfp: bpf: plumb extack into functions related to XDP offload Date: Fri, 19 Jan 2018 17:44:49 -0800 Message-Id: <20180120014450.29666-8-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Pass a pointer to an extack object to nfp_app_xdp_offload() in order to prepare for extack usage in the nfp driver. Next step will be to forward this extack pointer to nfp_net_bpf_offload(), once this function is able to use it for printing error messages. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/bpf/main.c | 4 ++-- drivers/net/ethernet/netronome/nfp/nfp_app.h | 9 ++++++--- drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.c b/drivers/net/ethernet/netronome/nfp/bpf/main.c index 4ee11bf2aed7..b755c9164ab9 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.c @@ -54,7 +54,7 @@ static bool nfp_net_ebpf_capable(struct nfp_net *nn) static int nfp_bpf_xdp_offload(struct nfp_app *app, struct nfp_net *nn, - struct bpf_prog *prog) + struct bpf_prog *prog, struct netlink_ext_ack *extack) { bool running, xdp_running; int ret; @@ -73,7 +73,7 @@ nfp_bpf_xdp_offload(struct nfp_app *app, struct nfp_net *nn, ret = nfp_net_bpf_offload(nn, prog, running); /* Stop offload if replace not possible */ if (ret && prog) - nfp_bpf_xdp_offload(app, nn, NULL); + nfp_bpf_xdp_offload(app, nn, NULL, extack); nn->dp.bpf_offload_xdp = prog && !ret; return ret; diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h index 7e474df90598..437964afa8ee 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_app.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h @@ -43,6 +43,7 @@ struct bpf_prog; struct net_device; struct netdev_bpf; +struct netlink_ext_ack; struct pci_dev; struct sk_buff; struct sk_buff; @@ -138,7 +139,8 @@ struct nfp_app_type { int (*bpf)(struct nfp_app *app, struct nfp_net *nn, struct netdev_bpf *xdp); int (*xdp_offload)(struct nfp_app *app, struct nfp_net *nn, - struct bpf_prog *prog); + struct bpf_prog *prog, + struct netlink_ext_ack *extack); int (*sriov_enable)(struct nfp_app *app, int num_vfs); void (*sriov_disable)(struct nfp_app *app); @@ -324,11 +326,12 @@ static inline int nfp_app_bpf(struct nfp_app *app, struct nfp_net *nn, } static inline int nfp_app_xdp_offload(struct nfp_app *app, struct nfp_net *nn, - struct bpf_prog *prog) + struct bpf_prog *prog, + struct netlink_ext_ack *extack) { if (!app || !app->type->xdp_offload) return -EOPNOTSUPP; - return app->type->xdp_offload(app, nn, prog); + return app->type->xdp_offload(app, nn, prog, extack); } static inline bool __nfp_app_ctrl_tx(struct nfp_app *app, struct sk_buff *skb) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index cdf52421eaca..c0fd351c86b1 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -3403,7 +3403,7 @@ nfp_net_xdp_setup(struct nfp_net *nn, struct bpf_prog *prog, u32 flags, if (err) return err; - err = nfp_app_xdp_offload(nn->app, nn, offload_prog); + err = nfp_app_xdp_offload(nn->app, nn, offload_prog, extack); if (err && flags & XDP_FLAGS_HW_MODE) return err; From patchwork Sat Jan 20 01:44:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 863903 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="eErK9WUa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zNgWs4b0Sz9t3Z for ; Sat, 20 Jan 2018 12:46:01 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756509AbeATBp7 (ORCPT ); Fri, 19 Jan 2018 20:45:59 -0500 Received: from mail-pf0-f170.google.com ([209.85.192.170]:41086 "EHLO mail-pf0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756331AbeATBpd (ORCPT ); Fri, 19 Jan 2018 20:45:33 -0500 Received: by mail-pf0-f170.google.com with SMTP id j3so2671995pfh.8 for ; Fri, 19 Jan 2018 17:45:33 -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=1hCI+WcQJuDJoml5JtagrgdxLjKbvtiSDaBMxqT21zA=; b=eErK9WUaL5kGC849WIeVt5Xm5th/aAdiS4qZCyDEI9q4I6qXqWXBfhyxD+3f41mUxk 95+mIkFSDbUBMJNImgAcn26lzkl0ScJEziR/1V4Sk81d2GGV8YehO3+O2vMnYpJRU8XG 4rpD/t1FJq6dhF3oTk1LUTV/PC1mbaYAS2+nR0Tqc0g7VKrtDyEDxOAC0Pmks2Gn7uQa cH2CEgthh7kDtqfRJyqRs4B7UaRLrB5tzT395CRfWgpRhq0srXiUNkrJMtZfq/NjnSb4 y3/btWZXA+LZ4YI3jMq2XBCW8EIlKst/z2jZhaYZnuUyX4uQclQPeXG9oW29Jk84tL9e 2BAA== 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=1hCI+WcQJuDJoml5JtagrgdxLjKbvtiSDaBMxqT21zA=; b=MHVh9LwuTak2Eg7TQqkfdNDUUm4SpC/2E/2JB5hEx4PpVvPgDKDukcy4eV82buJcca /o9ZoYDZntLW4oxSvxRlHnysf5g8ULxxABcuXRnGBdbhj7oxKKsD8UKMRfEC+j4FuPiS m+v22fdg1TtMdZ5QxONZzUEAyI0TpYrFYbnovszfSIhw5LpCzR3UWa8KRO4yAHawkTjU w4AOd/vKA12qlhavXegtiTrVNZunvnG3UfSwcMZsAzJeVaRzdc5uM5hCcXvYza6Ah8yt GT6su9Ztgp51FUfDReDPWRnKXPkFo2J93OQgfDKWsbi9maGY0jQUXYRhFopuhbX6Q+kX Qv/Q== X-Gm-Message-State: AKwxytcYkiCXsNQj/dt2W7+57IySHjT2aleKqzU7tqUdbXr0KtqukReV 1iUV6fXq0Z/f5XdZE6oOXuxi9Q== X-Google-Smtp-Source: AH8x226qZXRmNIO8bhis3VPBcRw7qjMDYlfNrL7iyeckeBuQbnwGR3VOheA3dT8J/0++Zfq6t0EFqg== X-Received: by 10.99.107.201 with SMTP id g192mr412886pgc.295.1516412733310; Fri, 19 Jan 2018 17:45:33 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id 206sm18886461pfy.71.2018.01.19.17.45.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jan 2018 17:45:32 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, dsahern@gmail.com Cc: jiri@resnulli.us, aring@mojatatu.com, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next v4 8/8] nfp: bpf: use extack support to improve debugging Date: Fri, 19 Jan 2018 17:44:50 -0800 Message-Id: <20180120014450.29666-9-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180120014450.29666-1-jakub.kicinski@netronome.com> References: <20180120014450.29666-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Use the recently added extack support for eBPF offload in the driver. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/bpf/main.c | 31 ++++++++++++++++++------ drivers/net/ethernet/netronome/nfp/bpf/main.h | 2 +- drivers/net/ethernet/netronome/nfp/bpf/offload.c | 24 +++++++++++------- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.c b/drivers/net/ethernet/netronome/nfp/bpf/main.c index b755c9164ab9..b3206855535a 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.c @@ -70,7 +70,7 @@ nfp_bpf_xdp_offload(struct nfp_app *app, struct nfp_net *nn, if (prog && running && !xdp_running) return -EBUSY; - ret = nfp_net_bpf_offload(nn, prog, running); + ret = nfp_net_bpf_offload(nn, prog, running, extack); /* Stop offload if replace not possible */ if (ret && prog) nfp_bpf_xdp_offload(app, nn, NULL, extack); @@ -125,17 +125,31 @@ static int nfp_bpf_setup_tc_block_cb(enum tc_setup_type type, struct nfp_bpf_vnic *bv; int err; - if (type != TC_SETUP_CLSBPF || - !tc_can_offload(nn->dp.netdev) || - !nfp_net_ebpf_capable(nn) || - cls_bpf->common.protocol != htons(ETH_P_ALL) || - cls_bpf->common.chain_index) + if (type != TC_SETUP_CLSBPF) { + NL_SET_ERR_MSG_MOD(cls_bpf->common.extack, + "only offload of BPF classifiers supported"); + return -EOPNOTSUPP; + } + if (!tc_can_offload_extack(nn->dp.netdev, cls_bpf->common.extack)) + return -EOPNOTSUPP; + if (!nfp_net_ebpf_capable(nn)) { + NL_SET_ERR_MSG_MOD(cls_bpf->common.extack, + "NFP firmware does not support eBPF offload"); + return -EOPNOTSUPP; + } + if (cls_bpf->common.protocol != htons(ETH_P_ALL)) { + NL_SET_ERR_MSG_MOD(cls_bpf->common.extack, + "only ETH_P_ALL supported as filter protocol"); + return -EOPNOTSUPP; + } + if (cls_bpf->common.chain_index) return -EOPNOTSUPP; /* Only support TC direct action */ if (!cls_bpf->exts_integrated || tcf_exts_has_actions(cls_bpf->exts)) { - nn_err(nn, "only direct action with no legacy actions supported\n"); + NL_SET_ERR_MSG_MOD(cls_bpf->common.extack, + "only direct action with no legacy actions supported"); return -EOPNOTSUPP; } @@ -152,7 +166,8 @@ static int nfp_bpf_setup_tc_block_cb(enum tc_setup_type type, return 0; } - err = nfp_net_bpf_offload(nn, cls_bpf->prog, oldprog); + err = nfp_net_bpf_offload(nn, cls_bpf->prog, oldprog, + cls_bpf->common.extack); if (err) return err; diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.h b/drivers/net/ethernet/netronome/nfp/bpf/main.h index c476bca15ba4..424fe8338105 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.h +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.h @@ -335,7 +335,7 @@ struct nfp_net; int nfp_ndo_bpf(struct nfp_app *app, struct nfp_net *nn, struct netdev_bpf *bpf); int nfp_net_bpf_offload(struct nfp_net *nn, struct bpf_prog *prog, - bool old_prog); + bool old_prog, struct netlink_ext_ack *extack); struct nfp_insn_meta * nfp_bpf_goto_meta(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, diff --git a/drivers/net/ethernet/netronome/nfp/bpf/offload.c b/drivers/net/ethernet/netronome/nfp/bpf/offload.c index e2859b2e9c6a..9c78a09cda24 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/offload.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/offload.c @@ -271,7 +271,9 @@ int nfp_ndo_bpf(struct nfp_app *app, struct nfp_net *nn, struct netdev_bpf *bpf) } } -static int nfp_net_bpf_load(struct nfp_net *nn, struct bpf_prog *prog) +static int +nfp_net_bpf_load(struct nfp_net *nn, struct bpf_prog *prog, + struct netlink_ext_ack *extack) { struct nfp_prog *nfp_prog = prog->aux->offload->dev_priv; unsigned int max_mtu; @@ -281,7 +283,7 @@ static int nfp_net_bpf_load(struct nfp_net *nn, struct bpf_prog *prog) max_mtu = nn_readb(nn, NFP_NET_CFG_BPF_INL_MTU) * 64 - 32; if (max_mtu < nn->dp.netdev->mtu) { - nn_info(nn, "BPF offload not supported with MTU larger than HW packet split boundary\n"); + NL_SET_ERR_MSG_MOD(extack, "BPF offload not supported with MTU larger than HW packet split boundary"); return -EOPNOTSUPP; } @@ -303,7 +305,8 @@ static int nfp_net_bpf_load(struct nfp_net *nn, struct bpf_prog *prog) /* Load up the JITed code */ err = nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_BPF); if (err) - nn_err(nn, "FW command error while loading BPF: %d\n", err); + NL_SET_ERR_MSG_MOD(extack, + "FW command error while loading BPF"); dma_unmap_single(nn->dp.dev, dma_addr, nfp_prog->prog_len * sizeof(u64), DMA_TO_DEVICE); @@ -312,7 +315,8 @@ static int nfp_net_bpf_load(struct nfp_net *nn, struct bpf_prog *prog) return err; } -static void nfp_net_bpf_start(struct nfp_net *nn) +static void +nfp_net_bpf_start(struct nfp_net *nn, struct netlink_ext_ack *extack) { int err; @@ -321,7 +325,8 @@ static void nfp_net_bpf_start(struct nfp_net *nn) nn_writel(nn, NFP_NET_CFG_CTRL, nn->dp.ctrl); err = nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_GEN); if (err) - nn_err(nn, "FW command error while enabling BPF: %d\n", err); + NL_SET_ERR_MSG_MOD(extack, + "FW command error while enabling BPF"); } static int nfp_net_bpf_stop(struct nfp_net *nn) @@ -336,7 +341,7 @@ static int nfp_net_bpf_stop(struct nfp_net *nn) } int nfp_net_bpf_offload(struct nfp_net *nn, struct bpf_prog *prog, - bool old_prog) + bool old_prog, struct netlink_ext_ack *extack) { int err; @@ -354,7 +359,8 @@ int nfp_net_bpf_offload(struct nfp_net *nn, struct bpf_prog *prog, cap = nn_readb(nn, NFP_NET_CFG_BPF_CAP); if (!(cap & NFP_NET_BPF_CAP_RELO)) { - nn_err(nn, "FW does not support live reload\n"); + NL_SET_ERR_MSG_MOD(extack, + "FW does not support live reload"); return -EBUSY; } } @@ -366,12 +372,12 @@ int nfp_net_bpf_offload(struct nfp_net *nn, struct bpf_prog *prog, if (old_prog && !prog) return nfp_net_bpf_stop(nn); - err = nfp_net_bpf_load(nn, prog); + err = nfp_net_bpf_load(nn, prog, extack); if (err) return err; if (!old_prog) - nfp_net_bpf_start(nn); + nfp_net_bpf_start(nn, extack); return 0; }