.. | .. |
---|
80 | 80 | struct net_device *dev = qdisc_dev(sch); |
---|
81 | 81 | int err; |
---|
82 | 82 | |
---|
| 83 | + if (sch->parent != TC_H_INGRESS) |
---|
| 84 | + return -EOPNOTSUPP; |
---|
| 85 | + |
---|
83 | 86 | net_inc_ingress_queue(); |
---|
84 | 87 | |
---|
85 | 88 | mini_qdisc_pair_init(&q->miniqp, sch, &dev->miniq_ingress); |
---|
.. | .. |
---|
100 | 103 | static void ingress_destroy(struct Qdisc *sch) |
---|
101 | 104 | { |
---|
102 | 105 | struct ingress_sched_data *q = qdisc_priv(sch); |
---|
| 106 | + |
---|
| 107 | + if (sch->parent != TC_H_INGRESS) |
---|
| 108 | + return; |
---|
103 | 109 | |
---|
104 | 110 | tcf_block_put_ext(q->block, sch, &q->block_info); |
---|
105 | 111 | net_dec_ingress_queue(); |
---|
.. | .. |
---|
134 | 140 | .cl_ops = &ingress_class_ops, |
---|
135 | 141 | .id = "ingress", |
---|
136 | 142 | .priv_size = sizeof(struct ingress_sched_data), |
---|
137 | | - .static_flags = TCQ_F_CPUSTATS, |
---|
| 143 | + .static_flags = TCQ_F_INGRESS | TCQ_F_CPUSTATS, |
---|
138 | 144 | .init = ingress_init, |
---|
139 | 145 | .destroy = ingress_destroy, |
---|
140 | 146 | .dump = ingress_dump, |
---|
.. | .. |
---|
219 | 225 | struct net_device *dev = qdisc_dev(sch); |
---|
220 | 226 | int err; |
---|
221 | 227 | |
---|
| 228 | + if (sch->parent != TC_H_CLSACT) |
---|
| 229 | + return -EOPNOTSUPP; |
---|
| 230 | + |
---|
222 | 231 | net_inc_ingress_queue(); |
---|
223 | 232 | net_inc_egress_queue(); |
---|
224 | 233 | |
---|
.. | .. |
---|
248 | 257 | { |
---|
249 | 258 | struct clsact_sched_data *q = qdisc_priv(sch); |
---|
250 | 259 | |
---|
| 260 | + if (sch->parent != TC_H_CLSACT) |
---|
| 261 | + return; |
---|
| 262 | + |
---|
251 | 263 | tcf_block_put_ext(q->egress_block, sch, &q->egress_block_info); |
---|
252 | 264 | tcf_block_put_ext(q->ingress_block, sch, &q->ingress_block_info); |
---|
253 | 265 | |
---|
.. | .. |
---|
269 | 281 | .cl_ops = &clsact_class_ops, |
---|
270 | 282 | .id = "clsact", |
---|
271 | 283 | .priv_size = sizeof(struct clsact_sched_data), |
---|
272 | | - .static_flags = TCQ_F_CPUSTATS, |
---|
| 284 | + .static_flags = TCQ_F_INGRESS | TCQ_F_CPUSTATS, |
---|
273 | 285 | .init = clsact_init, |
---|
274 | 286 | .destroy = clsact_destroy, |
---|
275 | 287 | .dump = ingress_dump, |
---|