X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fnet%2Fsch_generic.h;h=4c3b35153c3722b2a5871cf78ed11023f7fa9e17;hb=2ba14a017a4ba8d2266316f481d4ad7400073d18;hp=4ebd615bd013e4cd8331cb6e7e89b39e05ab5e0c;hpb=e9bef55d3d062ee7a78fde2913ec87ca9305a1e0;p=linux-2.6 diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 4ebd615bd0..4c3b35153c 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -307,11 +307,27 @@ drop: */ static inline u32 qdisc_l2t(struct qdisc_rate_table* rtab, unsigned int pktlen) { - int slot = 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