From patchwork Mon Dec 18 22:45:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Aring X-Patchwork-Id: 850474 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=mojatatu-com.20150623.gappssmtp.com header.i=@mojatatu-com.20150623.gappssmtp.com header.b="tl8XtlXx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z0x3J5L6Kz9t2M for ; Tue, 19 Dec 2017 09:46:20 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965728AbdLRWqS (ORCPT ); Mon, 18 Dec 2017 17:46:18 -0500 Received: from mail-it0-f66.google.com ([209.85.214.66]:36186 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936346AbdLRWpn (ORCPT ); Mon, 18 Dec 2017 17:45:43 -0500 Received: by mail-it0-f66.google.com with SMTP id d16so595222itj.1 for ; Mon, 18 Dec 2017 14:45:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mojatatu-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=NwJMDwD0b5VKHXPtXsFEyHCC+h0z0sxcurxM+Hek9fE=; b=tl8XtlXxZyLc7PfrzJpKujy69GyDtUzgKGA9lhWDFWkDGb+m6la2oqA4cDVtyXuYbY 1aYF83v/btMqoP0XDXTaa5vOeaKejL02BNPLV2c4mhwGFOtV3nV7obJxn88FCK8eT88Z fbHh29h2Etbs3Zkt6pczfrzFa2Ho9kBLjXSQG/qzq3kayjAwen+VfzuKTk7cernmzpGB RwP8wBi4LocnAMV0fNzFYHklymnuSD1T1wV1us/K3HUDrArjUL7A06cTN+tDVdHrG/PP n+rU322RaDcHRYuMFrj98eihqqe6/Ty6ZqMsMj4xspOqEVB+Q0pnWkkBw18lmZXxhPp2 LnNA== 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=NwJMDwD0b5VKHXPtXsFEyHCC+h0z0sxcurxM+Hek9fE=; b=Ex4gzGYYwWgMLwnyMMdQlTslHukHfM47KlSirTgRFAK+EI9rl7SU7oSvLeeTG2ZWP9 A+ad0pU/6N/ubt6D02/HqHtd68SAxfylroZXx7OOPaulcyQ8gH/gkMn1nj8sJ7QkTXTR m5MydwPq/0hLwUEuRKj4oRo/Fo68lGFeNFw1aND/8r6i/BCBku/w+Xci3PW9uqimnWLk UTlxQnC/1hidtzp/BxJKZyZJFkhOeb3s89iHXRaI96HD60G5zxx9k6vSm/fF6Hr9Kn9Q IbII8lc4geZ6d1UdplyIgRb2Ghro2xxc7+ueL/qNA/HKW3o/gjcqwYlz52NJoMpCcMl+ CA1A== X-Gm-Message-State: AKGB3mIVxcPlkPplfvF/5ELrVFN0aS80GO0nDgESqXfrq3y3kOe46Dhq qDPZijAXletTgbVtaHuCbfNdPw== X-Google-Smtp-Source: ACJfBosJvvzKLv9cD5RfIP5n95Z9sRKOHieBU6D88eU4Zw9p0y7Z+ocEbwXFR5rcsw8Da9ie8DTapg== X-Received: by 10.36.44.19 with SMTP id i19mr813518iti.143.1513637142757; Mon, 18 Dec 2017 14:45:42 -0800 (PST) Received: from x220t.lan ([64.26.149.125]) by smtp.gmail.com with ESMTPSA id o71sm210867itb.28.2017.12.18.14.45.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Dec 2017 14:45:42 -0800 (PST) From: Alexander Aring To: jhs@mojatatu.com Cc: xiyou.wangcong@gmail.com, jiri@resnulli.us, davem@davemloft.net, netdev@vger.kernel.org, kernel@mojatatu.com, Alexander Aring , David Ahern Subject: [PATCHv3 net-next 13/14] net: sch: sch_cbs: add extack support Date: Mon, 18 Dec 2017 17:45:12 -0500 Message-Id: <20171218224513.29836-14-aring@mojatatu.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171218224513.29836-1-aring@mojatatu.com> References: <20171218224513.29836-1-aring@mojatatu.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds extack support for the cbs qdisc implementation by adding NL_SET_ERR_MSG in validation of user input. Also it serves to illustrate a use case of how the infrastructure ops api changes are to be used by individual qdiscs. Cc: David Ahern Signed-off-by: Alexander Aring --- net/sched/sch_cbs.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/net/sched/sch_cbs.c b/net/sched/sch_cbs.c index 8bf6e163d29c..cdd96b9a27bc 100644 --- a/net/sched/sch_cbs.c +++ b/net/sched/sch_cbs.c @@ -219,14 +219,17 @@ static void cbs_disable_offload(struct net_device *dev, } static int cbs_enable_offload(struct net_device *dev, struct cbs_sched_data *q, - const struct tc_cbs_qopt *opt) + const struct tc_cbs_qopt *opt, + struct netlink_ext_ack *extack) { const struct net_device_ops *ops = dev->netdev_ops; struct tc_cbs_qopt_offload cbs = { }; int err; - if (!ops->ndo_setup_tc) + if (!ops->ndo_setup_tc) { + NL_SET_ERR_MSG(extack, "Specified device does not support cbs offload"); return -EOPNOTSUPP; + } cbs.queue = q->queue; @@ -237,8 +240,10 @@ static int cbs_enable_offload(struct net_device *dev, struct cbs_sched_data *q, cbs.sendslope = opt->sendslope; err = ops->ndo_setup_tc(dev, TC_SETUP_QDISC_CBS, &cbs); - if (err < 0) + if (err < 0) { + NL_SET_ERR_MSG(extack, "Specified device failed to setup cbs hardware offload"); return err; + } q->enqueue = cbs_enqueue_offload; q->dequeue = cbs_dequeue_offload; @@ -255,12 +260,14 @@ static int cbs_change(struct Qdisc *sch, struct nlattr *opt, struct tc_cbs_qopt *qopt; int err; - err = nla_parse_nested(tb, TCA_CBS_MAX, opt, cbs_policy, NULL); + err = nla_parse_nested(tb, TCA_CBS_MAX, opt, cbs_policy, extack); if (err < 0) return err; - if (!tb[TCA_CBS_PARMS]) + if (!tb[TCA_CBS_PARMS]) { + NL_SET_ERR_MSG(extack, "Missing CBS parameter which are mandatory"); return -EINVAL; + } qopt = nla_data(tb[TCA_CBS_PARMS]); @@ -277,7 +284,7 @@ static int cbs_change(struct Qdisc *sch, struct nlattr *opt, cbs_disable_offload(dev, q); } else { - err = cbs_enable_offload(dev, q, qopt); + err = cbs_enable_offload(dev, q, qopt, extack); if (err < 0) return err; } @@ -298,8 +305,10 @@ static int cbs_init(struct Qdisc *sch, struct nlattr *opt, struct cbs_sched_data *q = qdisc_priv(sch); struct net_device *dev = qdisc_dev(sch); - if (!opt) + if (!opt) { + NL_SET_ERR_MSG(extack, "Missing CBS qdisc options which are mandatory"); return -EINVAL; + } q->queue = sch->dev_queue - netdev_get_tx_queue(dev, 0);