aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_atm.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_atm.c')
-rw-r--r--net/sched/sch_atm.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index ccee10dae66d..37ae6d1deb14 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -396,8 +396,9 @@ static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch)
396 !(flow = (struct atm_flow_data *)atm_tc_get(sch, skb->priority))) 396 !(flow = (struct atm_flow_data *)atm_tc_get(sch, skb->priority)))
397 for (flow = p->flows; flow; flow = flow->next) 397 for (flow = p->flows; flow; flow = flow->next)
398 if (flow->filter_list) { 398 if (flow->filter_list) {
399 result = tc_classify(skb, flow->filter_list, 399 result = tc_classify_compat(skb,
400 &res); 400 flow->filter_list,
401 &res);
401 if (result < 0) 402 if (result < 0)
402 continue; 403 continue;
403 flow = (struct atm_flow_data *)res.class; 404 flow = (struct atm_flow_data *)res.class;
@@ -420,6 +421,12 @@ static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch)
420 case TC_ACT_SHOT: 421 case TC_ACT_SHOT:
421 kfree_skb(skb); 422 kfree_skb(skb);
422 goto drop; 423 goto drop;
424 case TC_POLICE_RECLASSIFY:
425 if (flow->excess)
426 flow = flow->excess;
427 else
428 ATM_SKB(skb)->atm_options |= ATM_ATMOPT_CLP;
429 break;
423 } 430 }
424#elif defined(CONFIG_NET_CLS_POLICE) 431#elif defined(CONFIG_NET_CLS_POLICE)
425 switch (result) { 432 switch (result) {