|
@@ -41,6 +41,7 @@
|
|
|
#define VCC2FLOW(vcc) ((struct atm_flow_data *) ((vcc)->user_back))
|
|
|
|
|
|
struct atm_flow_data {
|
|
|
+ struct Qdisc_class_common common;
|
|
|
struct Qdisc *q; /* FIFO, TBF, etc. */
|
|
|
struct tcf_proto __rcu *filter_list;
|
|
|
struct tcf_block *block;
|
|
@@ -49,7 +50,6 @@ struct atm_flow_data {
|
|
|
struct sk_buff *skb); /* chaining */
|
|
|
struct atm_qdisc_data *parent; /* parent qdisc */
|
|
|
struct socket *sock; /* for closing */
|
|
|
- u32 classid; /* x:y type ID */
|
|
|
int ref; /* reference count */
|
|
|
struct gnet_stats_basic_packed bstats;
|
|
|
struct gnet_stats_queue qstats;
|
|
@@ -75,7 +75,7 @@ static inline struct atm_flow_data *lookup_flow(struct Qdisc *sch, u32 classid)
|
|
|
struct atm_flow_data *flow;
|
|
|
|
|
|
list_for_each_entry(flow, &p->flows, list) {
|
|
|
- if (flow->classid == classid)
|
|
|
+ if (flow->common.classid == classid)
|
|
|
return flow;
|
|
|
}
|
|
|
return NULL;
|
|
@@ -293,7 +293,7 @@ static int atm_tc_change(struct Qdisc *sch, u32 classid, u32 parent,
|
|
|
flow->old_pop = flow->vcc->pop;
|
|
|
flow->parent = p;
|
|
|
flow->vcc->pop = sch_atm_pop;
|
|
|
- flow->classid = classid;
|
|
|
+ flow->common.classid = classid;
|
|
|
flow->ref = 1;
|
|
|
flow->excess = excess;
|
|
|
list_add(&flow->list, &p->link.list);
|
|
@@ -549,7 +549,7 @@ static int atm_tc_init(struct Qdisc *sch, struct nlattr *opt)
|
|
|
|
|
|
p->link.vcc = NULL;
|
|
|
p->link.sock = NULL;
|
|
|
- p->link.classid = sch->handle;
|
|
|
+ p->link.common.classid = sch->handle;
|
|
|
p->link.ref = 1;
|
|
|
tasklet_init(&p->task, sch_atm_dequeue, (unsigned long)sch);
|
|
|
return 0;
|
|
@@ -594,7 +594,7 @@ static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl,
|
|
|
sch, p, flow, skb, tcm);
|
|
|
if (list_empty(&flow->list))
|
|
|
return -EINVAL;
|
|
|
- tcm->tcm_handle = flow->classid;
|
|
|
+ tcm->tcm_handle = flow->common.classid;
|
|
|
tcm->tcm_info = flow->q->handle;
|
|
|
|
|
|
nest = nla_nest_start(skb, TCA_OPTIONS);
|
|
@@ -619,7 +619,7 @@ static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl,
|
|
|
goto nla_put_failure;
|
|
|
}
|
|
|
if (flow->excess) {
|
|
|
- if (nla_put_u32(skb, TCA_ATM_EXCESS, flow->classid))
|
|
|
+ if (nla_put_u32(skb, TCA_ATM_EXCESS, flow->common.classid))
|
|
|
goto nla_put_failure;
|
|
|
} else {
|
|
|
if (nla_put_u32(skb, TCA_ATM_EXCESS, 0))
|