From patchwork Tue Jan 16 02:08:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 861174 X-Patchwork-Delegate: bpf@iogearbox.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="dIJwZyv6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zLDDn4Yl2z9sQm for ; Tue, 16 Jan 2018 13:09:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751278AbeAPCJV (ORCPT ); Mon, 15 Jan 2018 21:09:21 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:44469 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750776AbeAPCJT (ORCPT ); Mon, 15 Jan 2018 21:09:19 -0500 Received: by mail-pf0-f195.google.com with SMTP id m26so8906895pfj.11 for ; Mon, 15 Jan 2018 18:09:18 -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=6UjiP6rgkEoZ6g/YtN3ENE4VC3l5o0VRD42qHbzHXjI=; b=dIJwZyv6eXwwXVJXiN22+IoFWuICirmJxj1EjEWvHuki6HfK6r98/a93hgyHr+XoZa TR6GuTfKXgCjP5bdSIJ+YARn1QC/YfA3aXzrqbGK4O3h+Shzq5nbUVwcLzSOrIuFOEU+ TuiufmFgvrHgbdgeUv6X7UeHFvtYaSQB2tpHSdHvTiwLChou1x+v0wt1dL4DDT+gC2be oKmvsov5fiuRpCaFFOQ5r3uckAyhp0PirKXxU3jr79IV5h00GK28YHM/VYFdcQFgmMsZ q6Cvcg/KKMzpL7V+Zj3DjCaLpWYqYH6yrGSZKfyma1uHABaHs7jCda5JGFvLf2nYjiu0 U1Pg== 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=6UjiP6rgkEoZ6g/YtN3ENE4VC3l5o0VRD42qHbzHXjI=; b=Q+qF7aZW2rTpNAELZ4ilGFfEWg1c1zl7zb79tePdfe6GecyZCkLTyLEJ1//WTyFKRf SgMqvTKZBXWwzrOVyhpMuXNE5T0/ZSvejiFUkSZ7+LOYqryoMVtfMRhObc9nRuf7Dr/h DdtXw6rE3COhF/1Z7qjTTEp1GnbuF6D4Ibzn2iMPXnyr/HiQkxjvS0y5PiT7aem7r3wi LPm49xbecYJUQbfLFoL3b2wH8bLOBE+lNnHQKXhEnzNwI72vxYcBQpOv5xxmOYJ71bsH AZgR2savArRswrvUbLLOLB2RJwqyP5x94u3PqBsEc3+9DHdnnpY3gptiilL5nh0y3PvE b1Ng== X-Gm-Message-State: AKwxytcbn2D1CZywuynv6BnTJl26W5F2mTNE75f9qSfZavXObtjiX16z grll1om5RPtM1l2od2ll17/Owg== X-Google-Smtp-Source: ACJfBouyEEQLa2YBs/nyrzx3azAI7tlHF6xc1Q5OkETKUBSK7OafAnRA5/J/d6c5G35RrodkBhbW1A== X-Received: by 10.101.78.207 with SMTP id w15mr5909875pgq.349.1516068558628; Mon, 15 Jan 2018 18:09:18 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id r84sm1034104pfk.92.2018.01.15.18.09.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 15 Jan 2018 18:09:18 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org Cc: dsahern@gmail.com, oss-drivers@netronome.com, jiri@resnulli.us, john.fastabend@gmail.com, jhs@mojatatu.com, gerlitz.or@gmail.com, aring@mojatatu.com, xiyou.wangcong@gmail.com, Quentin Monnet Subject: [PATCH bpf-next v2 06/11] net: sched: cls_bpf: plumb extack support in filter for hardware offload Date: Mon, 15 Jan 2018 18:08:40 -0800 Message-Id: <20180116020845.3496-7-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180116020845.3496-1-jakub.kicinski@netronome.com> References: <20180116020845.3496-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(), where it can be used to initialize the new field of tc_cls_common_offload passed to the callback for offload. 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 | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index b8729124d209..d15ef9ab7243 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 = {}; @@ -158,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, NULL); + 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; @@ -170,7 +171,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) { prog->gen_flags |= TCA_CLS_FLAGS_IN_HW; @@ -184,7 +185,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; @@ -196,7 +198,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, @@ -204,7 +206,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); } @@ -501,7 +503,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;