aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_api.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2009-09-04 06:41:13 +0000
committerDavid S. Miller <davem@davemloft.net>2009-09-04 23:10:15 -0700
commitc9f1d0389b962521af1e2b699c8ee5e299d77b85 (patch)
treee317e8b012be8b31b303bdb3f6ee5e3929de0a7b /net/sched/sch_api.c
parentb1f57195585e376d1944c32c046359640b06a669 (diff)
downloadkernel_samsung_smdk4412-c9f1d0389b962521af1e2b699c8ee5e299d77b85.zip
kernel_samsung_smdk4412-c9f1d0389b962521af1e2b699c8ee5e299d77b85.tar.gz
kernel_samsung_smdk4412-c9f1d0389b962521af1e2b699c8ee5e299d77b85.tar.bz2
net_sched: fix class grafting errno codes
If the parent qdisc doesn't support classes, use EOPNOTSUPP. If the parent class doesn't exist, use ENOENT. Currently EINVAL is returned in both cases. Additionally check whether grafting is supported and remove a now unnecessary graft function from sch_ingress. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_api.c')
-rw-r--r--net/sched/sch_api.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 24d17ce..bef2d64 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -728,14 +728,14 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent,
} else {
const struct Qdisc_class_ops *cops = parent->ops->cl_ops;
- err = -EINVAL;
-
- if (cops) {
+ err = -EOPNOTSUPP;
+ if (cops && cops->graft) {
unsigned long cl = cops->get(parent, classid);
if (cl) {
err = cops->graft(parent, cl, new, &old);
cops->put(parent, cl);
- }
+ } else
+ err = -ENOENT;
}
if (!err)
notify_and_destroy(skb, n, classid, old, new);