From patchwork Tue Jan 23 19:22:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 864976 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="nJz6XPIC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zQysN4zhZz9s4s for ; Wed, 24 Jan 2018 06:24:08 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752444AbeAWTYH (ORCPT ); Tue, 23 Jan 2018 14:24:07 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:46974 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751993AbeAWTXF (ORCPT ); Tue, 23 Jan 2018 14:23:05 -0500 Received: by mail-pg0-f66.google.com with SMTP id s9so945234pgq.13 for ; Tue, 23 Jan 2018 11:23:05 -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=RQkFXy3k8I8luGPhiFnSYuS/kOFFdrpQo2SnZ7uD48k=; b=nJz6XPICwnM00O0V857TWg9YIacqTD4jOpNpZO729vsD+5b85lmMU7E+D2deDKA679 abhFIrAWHI3rJ2SfhhyUdsAN2aGKa3qgUZ0FHuWScxDPmZfnWib5HG8c7Kg+h2vXdt5C nWGeF/O0ANO6JaKKwEAVkzIbEm5m9adNeRlR8BbbgO5YNTThxjIT1gvkFwd07T6v8LLp UaaTVk1YjGVv3+U56RBUbTc2ndJCxjC+eygyVPNTexLlqipCkpfb+kjPZCarJKSxbomI Orv4GCBc3saWeBPjRf2BGLC0XEX7SMKCVEnxDG2U2ZAeYVRG337ErmrbMks5MPTDqgmA t2gg== 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=RQkFXy3k8I8luGPhiFnSYuS/kOFFdrpQo2SnZ7uD48k=; b=sYqf8ufZ1QLMOfPDwd7x4fslhzQ8rzj+ETRqQfkYh4BwkvIExjTdduJCbf4/KmWfM3 /wC5pp+fPx5ojnIGCxZ1tfegEQg9g8MW5Tw+o5TE0sMDgp3x79YH2+8z3tZU3xy+hOeV 3PCUDTJCtNXF6DUclHjdjSc8xqUbwXN86jQ0TimFjABjGB94UZ6c99pv6Lq5KNitZRyW 6ALWrMFewDtn8UwQpKWCEb0GpZahlmx/QTcDW1cy9YRitNM/qgBo0WUjkJsv+5WoYaPY jFW+nhGb78rd5QBJ6wFFQDDDZiBr0qBR4jiF8zkudPzorbHomPq3pGgjKy4FRdEItUe3 XKNw== X-Gm-Message-State: AKwxytestVWdOq3hzZibed76J5fq3rN8nb1G1cZBk1U/1iNLSkJOBop7 dTa0owRdLNGPfR86d2VTG3vf5g== X-Google-Smtp-Source: AH8x225dOARXR/Da0b6DtG1u5ffLJOdSMEm67vyImBRInaPkpSFMJqRwYT4pswqeQ2N9WsbdkM5Bcg== X-Received: by 2002:a17:902:7442:: with SMTP id e2-v6mr6269807plt.364.1516735384716; Tue, 23 Jan 2018 11:23:04 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id o135sm6530472pfg.161.2018.01.23.11.23.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 23 Jan 2018 11:23:04 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, alexei.starovoitov@gmail.com, daniel@iogearbox.net Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Quentin Monnet Subject: [PATCH net-next 1/5] netdevsim: add extack support for TC eBPF offload Date: Tue, 23 Jan 2018 11:22:52 -0800 Message-Id: <20180123192256.16106-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180123192256.16106-1-jakub.kicinski@netronome.com> References: <20180123192256.16106-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 TC eBPF filters in netdevsim. Signed-off-by: Quentin Monnet Reviewed-by: Jakub Kicinski --- drivers/net/netdevsim/bpf.c | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/drivers/net/netdevsim/bpf.c b/drivers/net/netdevsim/bpf.c index b3851bbefad3..940c63eeebf9 100644 --- a/drivers/net/netdevsim/bpf.c +++ b/drivers/net/netdevsim/bpf.c @@ -123,17 +123,35 @@ int nsim_bpf_setup_tc_block_cb(enum tc_setup_type type, struct netdevsim *ns = cb_priv; struct bpf_prog *oldprog; - if (type != TC_SETUP_CLSBPF || - !tc_can_offload(ns->netdev) || - cls_bpf->common.protocol != htons(ETH_P_ALL) || - cls_bpf->common.chain_index) + if (type != TC_SETUP_CLSBPF) { + NSIM_EA(cls_bpf->common.extack, + "only offload of BPF classifiers supported"); return -EOPNOTSUPP; + } + + if (!tc_can_offload_extack(ns->netdev, cls_bpf->common.extack)) + return -EOPNOTSUPP; + + if (cls_bpf->common.protocol != htons(ETH_P_ALL)) { + NSIM_EA(cls_bpf->common.extack, + "only ETH_P_ALL supported as filter protocol"); + return -EOPNOTSUPP; + } - if (!ns->bpf_tc_accept) + if (cls_bpf->common.chain_index) return -EOPNOTSUPP; + + if (!ns->bpf_tc_accept) { + NSIM_EA(cls_bpf->common.extack, + "netdevsim configured to reject BPF TC offload"); + return -EOPNOTSUPP; + } /* Note: progs without skip_sw will probably not be dev bound */ - if (prog && !prog->aux->offload && !ns->bpf_tc_non_bound_accept) + if (prog && !prog->aux->offload && !ns->bpf_tc_non_bound_accept) { + NSIM_EA(cls_bpf->common.extack, + "netdevsim configured to reject unbound programs"); return -EOPNOTSUPP; + } if (cls_bpf->command != TC_CLSBPF_OFFLOAD) return -EOPNOTSUPP; @@ -145,8 +163,11 @@ int nsim_bpf_setup_tc_block_cb(enum tc_setup_type type, oldprog = NULL; if (!cls_bpf->prog) return 0; - if (ns->bpf_offloaded) + if (ns->bpf_offloaded) { + NSIM_EA(cls_bpf->common.extack, + "driver and netdev offload states mismatch"); return -EBUSY; + } } return nsim_bpf_offload(ns, cls_bpf->prog, oldprog);