mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
net_sched: cleanups
Cleanup net/sched code to current CodingStyle and practices. Reduce inline abuse Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7180a03118
commit
cc7ec456f8
41 changed files with 835 additions and 794 deletions
|
@ -187,7 +187,7 @@ int unregister_qdisc(struct Qdisc_ops *qops)
|
|||
int err = -ENOENT;
|
||||
|
||||
write_lock(&qdisc_mod_lock);
|
||||
for (qp = &qdisc_base; (q=*qp)!=NULL; qp = &q->next)
|
||||
for (qp = &qdisc_base; (q = *qp) != NULL; qp = &q->next)
|
||||
if (q == qops)
|
||||
break;
|
||||
if (q) {
|
||||
|
@ -321,7 +321,9 @@ void qdisc_put_rtab(struct qdisc_rate_table *tab)
|
|||
if (!tab || --tab->refcnt)
|
||||
return;
|
||||
|
||||
for (rtabp = &qdisc_rtab_list; (rtab=*rtabp) != NULL; rtabp = &rtab->next) {
|
||||
for (rtabp = &qdisc_rtab_list;
|
||||
(rtab = *rtabp) != NULL;
|
||||
rtabp = &rtab->next) {
|
||||
if (rtab == tab) {
|
||||
*rtabp = rtab->next;
|
||||
kfree(rtab);
|
||||
|
@ -459,9 +461,8 @@ EXPORT_SYMBOL(qdisc_calculate_pkt_len);
|
|||
void qdisc_warn_nonwc(char *txt, struct Qdisc *qdisc)
|
||||
{
|
||||
if (!(qdisc->flags & TCQ_F_WARN_NONWC)) {
|
||||
printk(KERN_WARNING
|
||||
"%s: %s qdisc %X: is non-work-conserving?\n",
|
||||
txt, qdisc->ops->id, qdisc->handle >> 16);
|
||||
pr_warn("%s: %s qdisc %X: is non-work-conserving?\n",
|
||||
txt, qdisc->ops->id, qdisc->handle >> 16);
|
||||
qdisc->flags |= TCQ_F_WARN_NONWC;
|
||||
}
|
||||
}
|
||||
|
@ -625,7 +626,7 @@ static u32 qdisc_alloc_handle(struct net_device *dev)
|
|||
autohandle = TC_H_MAKE(0x80000000U, 0);
|
||||
} while (qdisc_lookup(dev, autohandle) && --i > 0);
|
||||
|
||||
return i>0 ? autohandle : 0;
|
||||
return i > 0 ? autohandle : 0;
|
||||
}
|
||||
|
||||
void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
|
||||
|
@ -915,9 +916,8 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct check_loop_arg
|
||||
{
|
||||
struct qdisc_walker w;
|
||||
struct check_loop_arg {
|
||||
struct qdisc_walker w;
|
||||
struct Qdisc *p;
|
||||
int depth;
|
||||
};
|
||||
|
@ -970,7 +970,8 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
struct Qdisc *p = NULL;
|
||||
int err;
|
||||
|
||||
if ((dev = __dev_get_by_index(net, tcm->tcm_ifindex)) == NULL)
|
||||
dev = __dev_get_by_index(net, tcm->tcm_ifindex);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
err = nlmsg_parse(n, sizeof(*tcm), tca, TCA_MAX, NULL);
|
||||
|
@ -980,12 +981,12 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
if (clid) {
|
||||
if (clid != TC_H_ROOT) {
|
||||
if (TC_H_MAJ(clid) != TC_H_MAJ(TC_H_INGRESS)) {
|
||||
if ((p = qdisc_lookup(dev, TC_H_MAJ(clid))) == NULL)
|
||||
p = qdisc_lookup(dev, TC_H_MAJ(clid));
|
||||
if (!p)
|
||||
return -ENOENT;
|
||||
q = qdisc_leaf(p, clid);
|
||||
} else { /* ingress */
|
||||
if (dev_ingress_queue(dev))
|
||||
q = dev_ingress_queue(dev)->qdisc_sleeping;
|
||||
} else if (dev_ingress_queue(dev)) {
|
||||
q = dev_ingress_queue(dev)->qdisc_sleeping;
|
||||
}
|
||||
} else {
|
||||
q = dev->qdisc;
|
||||
|
@ -996,7 +997,8 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
if (tcm->tcm_handle && q->handle != tcm->tcm_handle)
|
||||
return -EINVAL;
|
||||
} else {
|
||||
if ((q = qdisc_lookup(dev, tcm->tcm_handle)) == NULL)
|
||||
q = qdisc_lookup(dev, tcm->tcm_handle);
|
||||
if (!q)
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
|
@ -1008,7 +1010,8 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
return -EINVAL;
|
||||
if (q->handle == 0)
|
||||
return -ENOENT;
|
||||
if ((err = qdisc_graft(dev, p, skb, n, clid, NULL, q)) != 0)
|
||||
err = qdisc_graft(dev, p, skb, n, clid, NULL, q);
|
||||
if (err != 0)
|
||||
return err;
|
||||
} else {
|
||||
qdisc_notify(net, skb, n, clid, NULL, q);
|
||||
|
@ -1017,7 +1020,7 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
}
|
||||
|
||||
/*
|
||||
Create/change qdisc.
|
||||
* Create/change qdisc.
|
||||
*/
|
||||
|
||||
static int tc_modify_qdisc(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
||||
|
@ -1036,7 +1039,8 @@ replay:
|
|||
clid = tcm->tcm_parent;
|
||||
q = p = NULL;
|
||||
|
||||
if ((dev = __dev_get_by_index(net, tcm->tcm_ifindex)) == NULL)
|
||||
dev = __dev_get_by_index(net, tcm->tcm_ifindex);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
err = nlmsg_parse(n, sizeof(*tcm), tca, TCA_MAX, NULL);
|
||||
|
@ -1046,12 +1050,12 @@ replay:
|
|||
if (clid) {
|
||||
if (clid != TC_H_ROOT) {
|
||||
if (clid != TC_H_INGRESS) {
|
||||
if ((p = qdisc_lookup(dev, TC_H_MAJ(clid))) == NULL)
|
||||
p = qdisc_lookup(dev, TC_H_MAJ(clid));
|
||||
if (!p)
|
||||
return -ENOENT;
|
||||
q = qdisc_leaf(p, clid);
|
||||
} else { /* ingress */
|
||||
if (dev_ingress_queue_create(dev))
|
||||
q = dev_ingress_queue(dev)->qdisc_sleeping;
|
||||
} else if (dev_ingress_queue_create(dev)) {
|
||||
q = dev_ingress_queue(dev)->qdisc_sleeping;
|
||||
}
|
||||
} else {
|
||||
q = dev->qdisc;
|
||||
|
@ -1063,13 +1067,14 @@ replay:
|
|||
|
||||
if (!q || !tcm->tcm_handle || q->handle != tcm->tcm_handle) {
|
||||
if (tcm->tcm_handle) {
|
||||
if (q && !(n->nlmsg_flags&NLM_F_REPLACE))
|
||||
if (q && !(n->nlmsg_flags & NLM_F_REPLACE))
|
||||
return -EEXIST;
|
||||
if (TC_H_MIN(tcm->tcm_handle))
|
||||
return -EINVAL;
|
||||
if ((q = qdisc_lookup(dev, tcm->tcm_handle)) == NULL)
|
||||
q = qdisc_lookup(dev, tcm->tcm_handle);
|
||||
if (!q)
|
||||
goto create_n_graft;
|
||||
if (n->nlmsg_flags&NLM_F_EXCL)
|
||||
if (n->nlmsg_flags & NLM_F_EXCL)
|
||||
return -EEXIST;
|
||||
if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id))
|
||||
return -EINVAL;
|
||||
|
@ -1079,7 +1084,7 @@ replay:
|
|||
atomic_inc(&q->refcnt);
|
||||
goto graft;
|
||||
} else {
|
||||
if (q == NULL)
|
||||
if (!q)
|
||||
goto create_n_graft;
|
||||
|
||||
/* This magic test requires explanation.
|
||||
|
@ -1101,9 +1106,9 @@ replay:
|
|||
* For now we select create/graft, if
|
||||
* user gave KIND, which does not match existing.
|
||||
*/
|
||||
if ((n->nlmsg_flags&NLM_F_CREATE) &&
|
||||
(n->nlmsg_flags&NLM_F_REPLACE) &&
|
||||
((n->nlmsg_flags&NLM_F_EXCL) ||
|
||||
if ((n->nlmsg_flags & NLM_F_CREATE) &&
|
||||
(n->nlmsg_flags & NLM_F_REPLACE) &&
|
||||
((n->nlmsg_flags & NLM_F_EXCL) ||
|
||||
(tca[TCA_KIND] &&
|
||||
nla_strcmp(tca[TCA_KIND], q->ops->id))))
|
||||
goto create_n_graft;
|
||||
|
@ -1118,7 +1123,7 @@ replay:
|
|||
/* Change qdisc parameters */
|
||||
if (q == NULL)
|
||||
return -ENOENT;
|
||||
if (n->nlmsg_flags&NLM_F_EXCL)
|
||||
if (n->nlmsg_flags & NLM_F_EXCL)
|
||||
return -EEXIST;
|
||||
if (tca[TCA_KIND] && nla_strcmp(tca[TCA_KIND], q->ops->id))
|
||||
return -EINVAL;
|
||||
|
@ -1128,7 +1133,7 @@ replay:
|
|||
return err;
|
||||
|
||||
create_n_graft:
|
||||
if (!(n->nlmsg_flags&NLM_F_CREATE))
|
||||
if (!(n->nlmsg_flags & NLM_F_CREATE))
|
||||
return -ENOENT;
|
||||
if (clid == TC_H_INGRESS) {
|
||||
if (dev_ingress_queue(dev))
|
||||
|
@ -1234,16 +1239,19 @@ static int qdisc_notify(struct net *net, struct sk_buff *oskb,
|
|||
return -ENOBUFS;
|
||||
|
||||
if (old && !tc_qdisc_dump_ignore(old)) {
|
||||
if (tc_fill_qdisc(skb, old, clid, pid, n->nlmsg_seq, 0, RTM_DELQDISC) < 0)
|
||||
if (tc_fill_qdisc(skb, old, clid, pid, n->nlmsg_seq,
|
||||
0, RTM_DELQDISC) < 0)
|
||||
goto err_out;
|
||||
}
|
||||
if (new && !tc_qdisc_dump_ignore(new)) {
|
||||
if (tc_fill_qdisc(skb, new, clid, pid, n->nlmsg_seq, old ? NLM_F_REPLACE : 0, RTM_NEWQDISC) < 0)
|
||||
if (tc_fill_qdisc(skb, new, clid, pid, n->nlmsg_seq,
|
||||
old ? NLM_F_REPLACE : 0, RTM_NEWQDISC) < 0)
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (skb->len)
|
||||
return rtnetlink_send(skb, net, pid, RTNLGRP_TC, n->nlmsg_flags&NLM_F_ECHO);
|
||||
return rtnetlink_send(skb, net, pid, RTNLGRP_TC,
|
||||
n->nlmsg_flags & NLM_F_ECHO);
|
||||
|
||||
err_out:
|
||||
kfree_skb(skb);
|
||||
|
@ -1275,7 +1283,7 @@ static int tc_dump_qdisc_root(struct Qdisc *root, struct sk_buff *skb,
|
|||
q_idx++;
|
||||
continue;
|
||||
}
|
||||
if (!tc_qdisc_dump_ignore(q) &&
|
||||
if (!tc_qdisc_dump_ignore(q) &&
|
||||
tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).pid,
|
||||
cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0)
|
||||
goto done;
|
||||
|
@ -1356,7 +1364,8 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
u32 qid = TC_H_MAJ(clid);
|
||||
int err;
|
||||
|
||||
if ((dev = __dev_get_by_index(net, tcm->tcm_ifindex)) == NULL)
|
||||
dev = __dev_get_by_index(net, tcm->tcm_ifindex);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
err = nlmsg_parse(n, sizeof(*tcm), tca, TCA_MAX, NULL);
|
||||
|
@ -1391,9 +1400,9 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
qid = dev->qdisc->handle;
|
||||
|
||||
/* Now qid is genuine qdisc handle consistent
|
||||
both with parent and child.
|
||||
|
||||
TC_H_MAJ(pid) still may be unspecified, complete it now.
|
||||
* both with parent and child.
|
||||
*
|
||||
* TC_H_MAJ(pid) still may be unspecified, complete it now.
|
||||
*/
|
||||
if (pid)
|
||||
pid = TC_H_MAKE(qid, pid);
|
||||
|
@ -1403,7 +1412,8 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
}
|
||||
|
||||
/* OK. Locate qdisc */
|
||||
if ((q = qdisc_lookup(dev, qid)) == NULL)
|
||||
q = qdisc_lookup(dev, qid);
|
||||
if (!q)
|
||||
return -ENOENT;
|
||||
|
||||
/* An check that it supports classes */
|
||||
|
@ -1423,13 +1433,14 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
|||
|
||||
if (cl == 0) {
|
||||
err = -ENOENT;
|
||||
if (n->nlmsg_type != RTM_NEWTCLASS || !(n->nlmsg_flags&NLM_F_CREATE))
|
||||
if (n->nlmsg_type != RTM_NEWTCLASS ||
|
||||
!(n->nlmsg_flags & NLM_F_CREATE))
|
||||
goto out;
|
||||
} else {
|
||||
switch (n->nlmsg_type) {
|
||||
case RTM_NEWTCLASS:
|
||||
err = -EEXIST;
|
||||
if (n->nlmsg_flags&NLM_F_EXCL)
|
||||
if (n->nlmsg_flags & NLM_F_EXCL)
|
||||
goto out;
|
||||
break;
|
||||
case RTM_DELTCLASS:
|
||||
|
@ -1521,14 +1532,14 @@ static int tclass_notify(struct net *net, struct sk_buff *oskb,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
return rtnetlink_send(skb, net, pid, RTNLGRP_TC, n->nlmsg_flags&NLM_F_ECHO);
|
||||
return rtnetlink_send(skb, net, pid, RTNLGRP_TC,
|
||||
n->nlmsg_flags & NLM_F_ECHO);
|
||||
}
|
||||
|
||||
struct qdisc_dump_args
|
||||
{
|
||||
struct qdisc_walker w;
|
||||
struct sk_buff *skb;
|
||||
struct netlink_callback *cb;
|
||||
struct qdisc_dump_args {
|
||||
struct qdisc_walker w;
|
||||
struct sk_buff *skb;
|
||||
struct netlink_callback *cb;
|
||||
};
|
||||
|
||||
static int qdisc_class_dump(struct Qdisc *q, unsigned long cl, struct qdisc_walker *arg)
|
||||
|
@ -1590,7 +1601,7 @@ static int tc_dump_tclass_root(struct Qdisc *root, struct sk_buff *skb,
|
|||
|
||||
static int tc_dump_tclass(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
{
|
||||
struct tcmsg *tcm = (struct tcmsg*)NLMSG_DATA(cb->nlh);
|
||||
struct tcmsg *tcm = (struct tcmsg *)NLMSG_DATA(cb->nlh);
|
||||
struct net *net = sock_net(skb->sk);
|
||||
struct netdev_queue *dev_queue;
|
||||
struct net_device *dev;
|
||||
|
@ -1598,7 +1609,8 @@ static int tc_dump_tclass(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
|
||||
if (cb->nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*tcm)))
|
||||
return 0;
|
||||
if ((dev = dev_get_by_index(net, tcm->tcm_ifindex)) == NULL)
|
||||
dev = dev_get_by_index(net, tcm->tcm_ifindex);
|
||||
if (!dev)
|
||||
return 0;
|
||||
|
||||
s_t = cb->args[0];
|
||||
|
@ -1621,19 +1633,22 @@ done:
|
|||
}
|
||||
|
||||
/* Main classifier routine: scans classifier chain attached
|
||||
to this qdisc, (optionally) tests for protocol and asks
|
||||
specific classifiers.
|
||||
* to this qdisc, (optionally) tests for protocol and asks
|
||||
* specific classifiers.
|
||||
*/
|
||||
int tc_classify_compat(struct sk_buff *skb, struct tcf_proto *tp,
|
||||
struct tcf_result *res)
|
||||
{
|
||||
__be16 protocol = skb->protocol;
|
||||
int err = 0;
|
||||
int err;
|
||||
|
||||
for (; tp; tp = tp->next) {
|
||||
if ((tp->protocol == protocol ||
|
||||
tp->protocol == htons(ETH_P_ALL)) &&
|
||||
(err = tp->classify(skb, tp, res)) >= 0) {
|
||||
if (tp->protocol != protocol &&
|
||||
tp->protocol != htons(ETH_P_ALL))
|
||||
continue;
|
||||
err = tp->classify(skb, tp, res);
|
||||
|
||||
if (err >= 0) {
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
if (err != TC_ACT_RECLASSIFY && skb->tc_verd)
|
||||
skb->tc_verd = SET_TC_VERD(skb->tc_verd, 0);
|
||||
|
@ -1664,11 +1679,11 @@ reclassify:
|
|||
|
||||
if (verd++ >= MAX_REC_LOOP) {
|
||||
if (net_ratelimit())
|
||||
printk(KERN_NOTICE
|
||||
"%s: packet reclassify loop"
|
||||
pr_notice("%s: packet reclassify loop"
|
||||
" rule prio %u protocol %02x\n",
|
||||
tp->q->ops->id,
|
||||
tp->prio & 0xffff, ntohs(tp->protocol));
|
||||
tp->q->ops->id,
|
||||
tp->prio & 0xffff,
|
||||
ntohs(tp->protocol));
|
||||
return TC_ACT_SHOT;
|
||||
}
|
||||
skb->tc_verd = SET_TC_VERD(skb->tc_verd, verd);
|
||||
|
@ -1761,7 +1776,7 @@ static int __init pktsched_init(void)
|
|||
|
||||
err = register_pernet_subsys(&psched_net_ops);
|
||||
if (err) {
|
||||
printk(KERN_ERR "pktsched_init: "
|
||||
pr_err("pktsched_init: "
|
||||
"cannot initialize per netns operations\n");
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue