|
@@ -307,7 +307,9 @@ static inline int qdisc_reshape_fail(struct sk_buff *skb, struct Qdisc *sch)
|
|
|
*/
|
|
*/
|
|
|
static inline u32 qdisc_l2t(struct qdisc_rate_table* rtab, unsigned int pktlen)
|
|
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;
|
|
slot >>= rtab->rate.cell_log;
|
|
|
if (slot > 255)
|
|
if (slot > 255)
|
|
|
return (rtab->data[255]*(slot >> 8) + rtab->data[slot & 0xFF]);
|
|
return (rtab->data[255]*(slot >> 8) + rtab->data[slot & 0xFF]);
|