Эх сурвалжийг харах

[NET_SCHED]: sch_dsmark: act_api support

Handle act_api classification results.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Patrick McHardy 18 жил өмнө
parent
commit
f6853e2df3
1 өөрчлөгдсөн 25 нэмэгдсэн , 16 устгасан
  1. 25 16
      net/sched/sch_dsmark.c

+ 25 - 16
net/sched/sch_dsmark.c

@@ -237,25 +237,34 @@ static int dsmark_enqueue(struct sk_buff *skb,struct Qdisc *sch)
 		D2PRINTK("result %d class 0x%04x\n", result, res.classid);
 
 		switch (result) {
-#ifdef CONFIG_NET_CLS_POLICE
-			case TC_POLICE_SHOT:
-				kfree_skb(skb);
-				sch->qstats.drops++;
-				return NET_XMIT_POLICED;
+#ifdef CONFIG_NET_CLS_ACT
+		case TC_ACT_QUEUED:
+		case TC_ACT_STOLEN:
+			kfree_skb(skb);
+			return NET_XMIT_SUCCESS;
+		case TC_ACT_SHOT:
+			kfree_skb(skb);
+			sch->qstats.drops++;
+			return NET_XMIT_BYPASS;
+#elif defined(CONFIG_NET_CLS_POLICE)
+		case TC_POLICE_SHOT:
+			kfree_skb(skb);
+			sch->qstats.drops++;
+			return NET_XMIT_POLICED;
 #if 0
-			case TC_POLICE_RECLASSIFY:
-				/* FIXME: what to do here ??? */
+		case TC_POLICE_RECLASSIFY:
+			/* FIXME: what to do here ??? */
 #endif
 #endif
-			case TC_POLICE_OK:
-				skb->tc_index = TC_H_MIN(res.classid);
-				break;
-			case TC_POLICE_UNSPEC:
-				/* fall through */
-			default:
-				if (p->default_index != NO_DEFAULT_INDEX)
-					skb->tc_index = p->default_index;
-				break;
+		case TC_POLICE_OK:
+			skb->tc_index = TC_H_MIN(res.classid);
+			break;
+		case TC_POLICE_UNSPEC:
+			/* fall through */
+		default:
+			if (p->default_index != NO_DEFAULT_INDEX)
+				skb->tc_index = p->default_index;
+			break;
 		}
 	}