From patchwork Tue Dec 10 08:49:00 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Yingliang X-Patchwork-Id: 299338 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6394D2C0090 for ; Tue, 10 Dec 2013 19:49:23 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753216Ab3LJItT (ORCPT ); Tue, 10 Dec 2013 03:49:19 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:16089 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752123Ab3LJItS (ORCPT ); Tue, 10 Dec 2013 03:49:18 -0500 Received: from 172.24.2.119 (EHLO szxeml212-edg.china.huawei.com) ([172.24.2.119]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id AHL93290; Tue, 10 Dec 2013 16:49:10 +0800 (CST) Received: from SZXEML420-HUB.china.huawei.com (10.82.67.159) by szxeml212-edg.china.huawei.com (172.24.2.181) with Microsoft SMTP Server (TLS) id 14.3.158.1; Tue, 10 Dec 2013 16:49:01 +0800 Received: from localhost (10.135.68.218) by szxeml420-hub.china.huawei.com (10.82.67.159) with Microsoft SMTP Server id 14.3.158.1; Tue, 10 Dec 2013 16:48:58 +0800 From: Yang Yingliang To: , Subject: [PATCH net-next] net_sched: add messages to distinguish errors when modify qdisc Date: Tue, 10 Dec 2013 16:49:00 +0800 Message-ID: <1386665340-16820-1-git-send-email-yangyingliang@huawei.com> X-Mailer: git-send-email 1.8.1.msysgit.1 MIME-Version: 1.0 X-Originating-IP: [10.135.68.218] X-CFilter-Loop: Reflected Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When tc_modify_qdisc return EINVAL, user cannot distinguish errors easliy. Add some messages to make it easier. Signed-off-by: Yang Yingliang --- net/sched/sch_api.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index cd81505..6b0e53c 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -995,8 +995,11 @@ static int qdisc_change(struct Qdisc *sch, struct nlattr **tca) int err = 0; if (tca[TCA_OPTIONS]) { - if (sch->ops->change == NULL) + if (sch->ops->change == NULL) { + pr_err_ratelimited("Can't change %s qdisc parameters.\n", + sch->ops->id); return -EINVAL; + } err = sch->ops->change(sch, tca[TCA_OPTIONS]); if (err) return err; @@ -1186,15 +1189,20 @@ replay: if (tcm->tcm_handle) { if (q && !(n->nlmsg_flags & NLM_F_REPLACE)) return -EEXIST; - if (TC_H_MIN(tcm->tcm_handle)) + if (TC_H_MIN(tcm->tcm_handle)) { + pr_err_ratelimited("Wrong minor handle, it must be 0.\n"); return -EINVAL; + } q = qdisc_lookup(dev, tcm->tcm_handle); if (!q) goto create_n_graft; if (n->nlmsg_flags & NLM_F_EXCL) return -EEXIST; - if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) + if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) { + pr_err_ratelimited("A different qdisc(%s) with handle %d: already exists.\n", + q->ops->id, TC_H_MAJ(tcm->tcm_handle) >> 16); return -EINVAL; + } if (q == p || (p && check_loop(q, p, 0))) return -ELOOP; @@ -1232,8 +1240,10 @@ replay: } } } else { - if (!tcm->tcm_handle) + if (!tcm->tcm_handle) { + pr_err_ratelimited("Wrong handle, it can't be 0.\n"); return -EINVAL; + } q = qdisc_lookup(dev, tcm->tcm_handle); } @@ -1242,8 +1252,13 @@ replay: return -ENOENT; if (n->nlmsg_flags & NLM_F_EXCL) return -EEXIST; - if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) + if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) { + char name[IFNAMSIZ]; + nla_strlcpy(name, tca[TCA_KIND], IFNAMSIZ); + pr_err_ratelimited("A %s qdisc already exists, can't change its parameters to %s's.\n", + q->ops->id, name); return -EINVAL; + } err = qdisc_change(q, tca); if (err == 0) qdisc_notify(net, skb, n, clid, NULL, q);