[NET_SCHED]: Cleanup L2T macros and handle oversized packets
Change L2T (length to time) macros, in all rate based schedulers, to call a common function qdisc_l2t() that does the rate table lookup. This function handles if the packet size lookup is larger than the rate table, which often occurs with TSO enabled. Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk> Acked-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
b6fa1a4d74
commit
e9bef55d3d
@@ -302,4 +302,16 @@ 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;
|
||||
slot >>= rtab->rate.cell_log;
|
||||
if (slot > 255)
|
||||
return (rtab->data[255]*(slot >> 8) + rtab->data[slot & 0xFF]);
|
||||
return rtab->data[slot];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user