From patchwork Wed Dec 20 17:35:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Aring X-Patchwork-Id: 851572 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="Wa9yVrBW"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z224g3MHcz9s72 for ; Thu, 21 Dec 2017 04:36:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755934AbdLTRgR (ORCPT ); Wed, 20 Dec 2017 12:36:17 -0500 Received: from mail-io0-f194.google.com ([209.85.223.194]:36832 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755620AbdLTRfy (ORCPT ); Wed, 20 Dec 2017 12:35:54 -0500 Received: by mail-io0-f194.google.com with SMTP id l10so18142098ioc.3 for ; Wed, 20 Dec 2017 09:35:53 -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=zYpSQo5WSB4Mqk74xd6elNOhr+uDyGAGcqUT6yzx6T0=; b=Wa9yVrBW16tb8Ei193wOOl6FnXt/ev8durdABNSoXp4achNrN+qraWnZ8N6CfSI+zx CFuADNtdcQyFtopupIXCDH1++3ErOsezgutjJbnfaZcTh4Ff4PJZEURyYvosUFbylvud QqGjwx+FtURWDTxUp7eeu97zl32z6rUmzkb5L+2XTTXQSI3oV4/mL8QWIt/v9GnxVaRl +mJTRq9Cn7yH1ZNeP0ABw2282ghqsMCEiGylMHki1eW1NPQeZYxfMrbX9Cx6Jufx66nk zKAQJCFvx6ku8hnCR4nKsSy6sgPGhv1LNDColQ7pMnzG8VF3yUhhEOUah7u6kjwigbjh j6sQ== 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=zYpSQo5WSB4Mqk74xd6elNOhr+uDyGAGcqUT6yzx6T0=; b=VNEy30gX+spI1V+SetbTfYg755dGK5eXCOlohmxTum0wvf2ROLlr5RhVbdriSeN0Ow /AAJ+/AfrjcfnJaGhnUccxULsey2BIFbFbSFj7Yy3abUW9Ft5tZCgBQT83I075qhMlI7 pjuxTLZ64QBV4mfVs93H55kdXQg2ufIrNIK4zri5ENR6ECQR7S/4IfBfWH6swGmxhot+ Qp9Zp3/m9xsb8/SngIL0BZn+Ntcl7VyzQkSTz6UtdZL6hzWTiKNeAVZUm9x9SJyrTtqO R7bBUfMBYfHOSDfY8Rx6ZHbcw6E+usXHjvd5r/AqhXsI3z26teL5dSYkkToHHvVdVtSp 4vcw== X-Gm-Message-State: AKGB3mJ0EH94jL5fWIQXf0D8Uvsu4zp0UaQznYN59HBZYPLiuwG/regY 8f3FloWjEON3OxrHlRNBEdR3Sg== X-Google-Smtp-Source: ACJfBotY3kEK94LHY86v35GwFanr0ePJwnAA3tw+BGdJeY6T2Qlk6JcTMT3uOQcUI2q2TzyrYpvxMg== X-Received: by 10.107.3.169 with SMTP id e41mr2059853ioi.112.1513791353081; Wed, 20 Dec 2017 09:35:53 -0800 (PST) Received: from x220t.lan ([64.26.149.125]) by smtp.gmail.com with ESMTPSA id w75sm9687740iod.66.2017.12.20.09.35.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Dec 2017 09:35:52 -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: [PATCHv4 net-next 14/14] net: sch: sch_drr: add extack support Date: Wed, 20 Dec 2017 12:35:24 -0500 Message-Id: <20171220173524.25874-15-aring@mojatatu.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171220173524.25874-1-aring@mojatatu.com> References: <20171220173524.25874-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 drr 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 Acked-by: Jamal Hadi Salim Signed-off-by: Alexander Aring --- net/sched/sch_drr.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index bf638ce57c50..e0b0cf8a9939 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c @@ -74,17 +74,21 @@ static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid, u32 quantum; int err; - if (!opt) + if (!opt) { + NL_SET_ERR_MSG(extack, "DRR options are required for this operation"); return -EINVAL; + } - err = nla_parse_nested(tb, TCA_DRR_MAX, opt, drr_policy, NULL); + err = nla_parse_nested(tb, TCA_DRR_MAX, opt, drr_policy, extack); if (err < 0) return err; if (tb[TCA_DRR_QUANTUM]) { quantum = nla_get_u32(tb[TCA_DRR_QUANTUM]); - if (quantum == 0) + if (quantum == 0) { + NL_SET_ERR_MSG(extack, "Specified DRR quantum cannot be zero"); return -EINVAL; + } } else quantum = psched_mtu(qdisc_dev(sch)); @@ -95,8 +99,10 @@ static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid, NULL, qdisc_root_sleeping_running(sch), tca[TCA_RATE]); - if (err) + if (err) { + NL_SET_ERR_MSG(extack, "Failed to replace estimator"); return err; + } } sch_tree_lock(sch); @@ -127,6 +133,7 @@ static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid, qdisc_root_sleeping_running(sch), tca[TCA_RATE]); if (err) { + NL_SET_ERR_MSG(extack, "Failed to replace estimator"); qdisc_destroy(cl->qdisc); kfree(cl); return err; @@ -179,8 +186,10 @@ static struct tcf_block *drr_tcf_block(struct Qdisc *sch, unsigned long cl, { struct drr_sched *q = qdisc_priv(sch); - if (cl) + if (cl) { + NL_SET_ERR_MSG(extack, "DRR classid must be zero"); return NULL; + } return q->block; }