• Home
  • Raw
  • Download

Lines Matching refs:q

42 			 struct nlmsghdr *n, struct Qdisc *q,
142 struct Qdisc_ops *q, **qp; in register_qdisc() local
146 for (qp = &qdisc_base; (q = *qp) != NULL; qp = &q->next) in register_qdisc()
147 if (!strcmp(qops->id, q->id)) in register_qdisc()
186 struct Qdisc_ops *q, **qp; in unregister_qdisc() local
190 for (qp = &qdisc_base; (q = *qp) != NULL; qp = &q->next) in unregister_qdisc()
191 if (q == qops) in unregister_qdisc()
193 if (q) { in unregister_qdisc()
194 *qp = q->next; in unregister_qdisc()
195 q->next = NULL; in unregister_qdisc()
209 struct Qdisc *q; in qdisc_match_from_root() local
215 list_for_each_entry(q, &root->list, list) { in qdisc_match_from_root()
216 if (q->handle == handle) in qdisc_match_from_root()
217 return q; in qdisc_match_from_root()
222 static void qdisc_list_add(struct Qdisc *q) in qdisc_list_add() argument
224 if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) in qdisc_list_add()
225 list_add_tail(&q->list, &qdisc_dev(q)->qdisc->list); in qdisc_list_add()
228 void qdisc_list_del(struct Qdisc *q) in qdisc_list_del() argument
230 if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) in qdisc_list_del()
231 list_del(&q->list); in qdisc_list_del()
237 struct Qdisc *q; in qdisc_lookup() local
239 q = qdisc_match_from_root(dev->qdisc, handle); in qdisc_lookup()
240 if (q) in qdisc_lookup()
244 q = qdisc_match_from_root( in qdisc_lookup()
248 return q; in qdisc_lookup()
272 struct Qdisc_ops *q = NULL; in qdisc_lookup_ops() local
276 for (q = qdisc_base; q; q = q->next) { in qdisc_lookup_ops()
277 if (nla_strcmp(kind, q->id) == 0) { in qdisc_lookup_ops()
278 if (!try_module_get(q->owner)) in qdisc_lookup_ops()
279 q = NULL; in qdisc_lookup_ops()
285 return q; in qdisc_lookup_ops()
665 sch->q.qlen -= n; in qdisc_tree_decrease_qlen()
694 struct Qdisc *q = old; in qdisc_graft() local
703 if ((q && q->flags & TCQ_F_INGRESS) || in qdisc_graft()
938 static int check_loop_fn(struct Qdisc *q, unsigned long cl, struct qdisc_walker *w);
940 static int check_loop(struct Qdisc *q, struct Qdisc *p, int depth) in check_loop() argument
944 if (q->ops->cl_ops == NULL) in check_loop()
951 q->ops->cl_ops->walk(q, &arg.w); in check_loop()
956 check_loop_fn(struct Qdisc *q, unsigned long cl, struct qdisc_walker *w) in check_loop_fn() argument
959 const struct Qdisc_class_ops *cops = q->ops->cl_ops; in check_loop_fn()
962 leaf = cops->leaf(q, cl); in check_loop_fn()
982 struct Qdisc *q = NULL; in tc_get_qdisc() local
1004 q = qdisc_leaf(p, clid); in tc_get_qdisc()
1006 q = dev_ingress_queue(dev)->qdisc_sleeping; in tc_get_qdisc()
1009 q = dev->qdisc; in tc_get_qdisc()
1011 if (!q) in tc_get_qdisc()
1014 if (tcm->tcm_handle && q->handle != tcm->tcm_handle) in tc_get_qdisc()
1017 q = qdisc_lookup(dev, tcm->tcm_handle); in tc_get_qdisc()
1018 if (!q) in tc_get_qdisc()
1022 if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) in tc_get_qdisc()
1028 if (q->handle == 0) in tc_get_qdisc()
1030 err = qdisc_graft(dev, p, skb, n, clid, NULL, q); in tc_get_qdisc()
1034 qdisc_notify(net, skb, n, clid, NULL, q); in tc_get_qdisc()
1050 struct Qdisc *q, *p; in tc_modify_qdisc() local
1064 q = p = NULL; in tc_modify_qdisc()
1077 q = qdisc_leaf(p, clid); in tc_modify_qdisc()
1079 q = dev_ingress_queue(dev)->qdisc_sleeping; in tc_modify_qdisc()
1082 q = dev->qdisc; in tc_modify_qdisc()
1086 if (q && q->handle == 0) in tc_modify_qdisc()
1087 q = NULL; in tc_modify_qdisc()
1089 if (!q || !tcm->tcm_handle || q->handle != tcm->tcm_handle) { in tc_modify_qdisc()
1091 if (q && !(n->nlmsg_flags & NLM_F_REPLACE)) in tc_modify_qdisc()
1095 q = qdisc_lookup(dev, tcm->tcm_handle); in tc_modify_qdisc()
1096 if (!q) in tc_modify_qdisc()
1100 if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) in tc_modify_qdisc()
1102 if (q == p || in tc_modify_qdisc()
1103 (p && check_loop(q, p, 0))) in tc_modify_qdisc()
1105 atomic_inc(&q->refcnt); in tc_modify_qdisc()
1108 if (!q) in tc_modify_qdisc()
1134 nla_strcmp(tca[TCA_KIND], q->ops->id)))) in tc_modify_qdisc()
1141 q = qdisc_lookup(dev, tcm->tcm_handle); in tc_modify_qdisc()
1145 if (q == NULL) in tc_modify_qdisc()
1149 if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id)) in tc_modify_qdisc()
1151 err = qdisc_change(q, tca); in tc_modify_qdisc()
1153 qdisc_notify(net, skb, n, clid, NULL, q); in tc_modify_qdisc()
1161 q = qdisc_create(dev, dev_ingress_queue(dev), p, in tc_modify_qdisc()
1176 q = qdisc_create(dev, dev_queue, p, in tc_modify_qdisc()
1180 if (q == NULL) { in tc_modify_qdisc()
1187 err = qdisc_graft(dev, p, skb, n, clid, q, NULL); in tc_modify_qdisc()
1189 if (q) in tc_modify_qdisc()
1190 qdisc_destroy(q); in tc_modify_qdisc()
1197 static int tc_fill_qdisc(struct sk_buff *skb, struct Qdisc *q, u32 clid, in tc_fill_qdisc() argument
1213 tcm->tcm_ifindex = qdisc_dev(q)->ifindex; in tc_fill_qdisc()
1215 tcm->tcm_handle = q->handle; in tc_fill_qdisc()
1216 tcm->tcm_info = atomic_read(&q->refcnt); in tc_fill_qdisc()
1217 if (nla_put_string(skb, TCA_KIND, q->ops->id)) in tc_fill_qdisc()
1219 if (q->ops->dump && q->ops->dump(q, skb) < 0) in tc_fill_qdisc()
1221 q->qstats.qlen = q->q.qlen; in tc_fill_qdisc()
1223 stab = rtnl_dereference(q->stab); in tc_fill_qdisc()
1228 qdisc_root_sleeping_lock(q), &d) < 0) in tc_fill_qdisc()
1231 if (q->ops->dump_stats && q->ops->dump_stats(q, &d) < 0) in tc_fill_qdisc()
1234 if (gnet_stats_copy_basic(&d, &q->bstats) < 0 || in tc_fill_qdisc()
1235 gnet_stats_copy_rate_est(&d, &q->bstats, &q->rate_est) < 0 || in tc_fill_qdisc()
1236 gnet_stats_copy_queue(&d, &q->qstats) < 0) in tc_fill_qdisc()
1251 static bool tc_qdisc_dump_ignore(struct Qdisc *q) in tc_qdisc_dump_ignore() argument
1253 return (q->flags & TCQ_F_BUILTIN) ? true : false; in tc_qdisc_dump_ignore()
1292 struct Qdisc *q; in tc_dump_qdisc_root() local
1297 q = root; in tc_dump_qdisc_root()
1301 if (!tc_qdisc_dump_ignore(q) && in tc_dump_qdisc_root()
1302 tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).portid, in tc_dump_qdisc_root()
1307 list_for_each_entry(q, &root->list, list) { in tc_dump_qdisc_root()
1312 if (!tc_qdisc_dump_ignore(q) && in tc_dump_qdisc_root()
1313 tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).portid, in tc_dump_qdisc_root()
1384 struct Qdisc *q = NULL; in tc_ctl_tclass() local
1448 q = qdisc_lookup(dev, qid); in tc_ctl_tclass()
1449 if (!q) in tc_ctl_tclass()
1453 cops = q->ops->cl_ops; in tc_ctl_tclass()
1465 cl = cops->get(q, clid); in tc_ctl_tclass()
1482 err = cops->delete(q, cl); in tc_ctl_tclass()
1484 tclass_notify(net, skb, n, q, cl, RTM_DELTCLASS); in tc_ctl_tclass()
1487 err = tclass_notify(net, skb, n, q, cl, RTM_NEWTCLASS); in tc_ctl_tclass()
1498 err = cops->change(q, clid, portid, tca, &new_cl); in tc_ctl_tclass()
1500 tclass_notify(net, skb, n, q, new_cl, RTM_NEWTCLASS); in tc_ctl_tclass()
1504 cops->put(q, cl); in tc_ctl_tclass()
1510 static int tc_fill_tclass(struct sk_buff *skb, struct Qdisc *q, in tc_fill_tclass() argument
1518 const struct Qdisc_class_ops *cl_ops = q->ops->cl_ops; in tc_fill_tclass()
1527 tcm->tcm_ifindex = qdisc_dev(q)->ifindex; in tc_fill_tclass()
1528 tcm->tcm_parent = q->handle; in tc_fill_tclass()
1529 tcm->tcm_handle = q->handle; in tc_fill_tclass()
1531 if (nla_put_string(skb, TCA_KIND, q->ops->id)) in tc_fill_tclass()
1533 if (cl_ops->dump && cl_ops->dump(q, cl, skb, tcm) < 0) in tc_fill_tclass()
1537 qdisc_root_sleeping_lock(q), &d) < 0) in tc_fill_tclass()
1540 if (cl_ops->dump_stats && cl_ops->dump_stats(q, cl, &d) < 0) in tc_fill_tclass()
1556 struct nlmsghdr *n, struct Qdisc *q, in tclass_notify() argument
1566 if (tc_fill_tclass(skb, q, cl, portid, n->nlmsg_seq, 0, event) < 0) { in tclass_notify()
1581 static int qdisc_class_dump(struct Qdisc *q, unsigned long cl, struct qdisc_walker *arg) in qdisc_class_dump() argument
1585 return tc_fill_tclass(a->skb, q, cl, NETLINK_CB(a->cb->skb).portid, in qdisc_class_dump()
1589 static int tc_dump_tclass_qdisc(struct Qdisc *q, struct sk_buff *skb, in tc_dump_tclass_qdisc() argument
1595 if (tc_qdisc_dump_ignore(q) || in tc_dump_tclass_qdisc()
1596 *t_p < s_t || !q->ops->cl_ops || in tc_dump_tclass_qdisc()
1598 TC_H_MAJ(tcm->tcm_parent) != q->handle)) { in tc_dump_tclass_qdisc()
1610 q->ops->cl_ops->walk(q, &arg.w); in tc_dump_tclass_qdisc()
1622 struct Qdisc *q; in tc_dump_tclass_root() local
1630 list_for_each_entry(q, &root->list, list) { in tc_dump_tclass_root()
1631 if (tc_dump_tclass_qdisc(q, skb, tcm, cb, t_p, s_t) < 0) in tc_dump_tclass_root()
1716 tp->q->ops->id, in tc_classify()