]> err.no Git - linux-2.6/blobdiff - include/net/sch_generic.h
[TCP]: Cong.ctrl modules: remove unused good_ack from cong_avoid
[linux-2.6] / include / net / sch_generic.h
index 0153cd9d1b8d724d4d17efec41ff3658f288cad9..9418ac26c986eb3911904cc5ff09735df4bd0d2c 100644 (file)
@@ -86,7 +86,7 @@ struct Qdisc_class_ops
 struct Qdisc_ops
 {
        struct Qdisc_ops        *next;
-       struct Qdisc_class_ops  *cl_ops;
+       const struct Qdisc_class_ops    *cl_ops;
        char                    id[IFNAMSIZ];
        int                     priv_size;
 
@@ -290,7 +290,7 @@ static inline int qdisc_reshape_fail(struct sk_buff *skb, struct Qdisc *sch)
 {
        sch->qstats.drops++;
 
-#if defined(CONFIG_NET_CLS_ACT) || defined(CONFIG_NET_CLS_POLICE)
+#ifdef CONFIG_NET_CLS_ACT
        if (sch->reshape_fail == NULL || sch->reshape_fail(skb, sch))
                goto drop;
 
@@ -302,4 +302,32 @@ drop:
        return NET_XMIT_DROP;
 }
 
+/* Length to Time (L2T) lookup in a qdisc_rate_table, to determine how
+   long it will take to send a packet given its size.
+ */
+static inline u32 qdisc_l2t(struct qdisc_rate_table* rtab, unsigned int pktlen)
+{
+       int slot = pktlen + rtab->rate.cell_align + rtab->rate.overhead;
+       if (slot < 0)
+               slot = 0;
+       slot >>= rtab->rate.cell_log;
+       if (slot > 255)
+               return (rtab->data[255]*(slot >> 8) + rtab->data[slot & 0xFF]);
+       return rtab->data[slot];
+}
+
+#ifdef CONFIG_NET_CLS_ACT
+static inline struct sk_buff *skb_act_clone(struct sk_buff *skb, gfp_t gfp_mask)
+{
+       struct sk_buff *n = skb_clone(skb, gfp_mask);
+
+       if (n) {
+               n->tc_verd = SET_TC_VERD(n->tc_verd, 0);
+               n->tc_verd = CLR_TC_OK2MUNGE(n->tc_verd);
+               n->tc_verd = CLR_TC_MUNGED(n->tc_verd);
+       }
+       return n;
+}
+#endif
+
 #endif