: Making rate table lookups more flexible
Subsystems (2)
PATCH 2/6 : Making rate table lookups more flexible
commit 57e993268df114a4270519b1004b8ea8086f671f
Author: Jesper Dangaard Brouer <[email protected]> Date: Tue Sep 11 15:44:15 2007 +0200
[NET_SCHED]: Making rate table lookups more flexible.
This is done in order to, add support to changing the rate table to use the upper-boundry L2T (length to time) value. Currently we use the lower-boundry, which result in under-estimating the actual bandwidth usage.
Extend the tc_ratespec struct, with two parameters: 1) "cell_align" that allow adjusting the alignment of the rate table. 2) "overhead" that allow adding a packet overhead before the lookup.
Signed-off-by Jesper Dangaard Brouer <[email protected]>
include/linux/pkt_sched.h +2 -2
@@ -77,8 +77,8 @@ struct tc_ratespec {unsigned char cell_log;unsigned char __reserved; -unsigned short feature; -short addend; +unsigned short overhead; +short cell_align;unsigned short mpu;__u32 rate; };
include/net/sch_generic.h +3 -1
@@ -307,7 +307,9 @@ 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 ]);