pkt_sched: rate overflow fix
Subsystems (3)
PATCH 1/1 pkt_sched: rate overflow fix
Use bonding to aggregate two 82599 nics which have 4 ports and max rate is 40gbit. Then set rate to 35gbit, the rate is overflow.
tc qdisc add dev $bond root handle 1: \
tbf latency 50ms burst 35mb rate 35gbit mtu 64k
tc qdisc show dev $bond
qdisc tbf 1: root refcnt 2 rate 640262Kbit burst 35Mb lat 50.0ms
iperf -c host -t 30 -i 10
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 764 MBytes 641 Mbits/sec [ 3] 10.0-20.0 sec 730 MBytes 612 Mbits/sec
--- include/uapi/linux/pkt_sched.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/uapi/linux/pkt_sched.h +1 -1
@@ -79,7 +79,7 @@ struct tc_ratespec {unsigned short overhead;short cell_align;unsigned short mpu; -__u32 rate; +__u64 rate; };#define TC_RTAB_SIZE 1024
Signature · 1 line
1.7.12
Quoted 24 lines · Yang Yingliang
Use bonding to aggregate two 82599 nics which have 4 ports and max rate is 40gbit. Then set rate to 35gbit, the rate is overflow.
tc qdisc add dev $bond root handle 1: \
tbf latency 50ms burst 35mb rate 35gbit mtu 64ktc qdisc show dev $bond
qdisc tbf 1: root refcnt 2 rate 640262Kbit burst 35Mb lat 50.0msiperf -c host -t 30 -i 10
[ ID] Interval Transfer Bandwidth[ 3] 0.0-10.0 sec 764 MBytes 641 Mbits/sec [ 3] 10.0-20.0 sec 730 MBytes 612 Mbits/secSigned-off-by Yang Yingliang <[email protected]>--- include/uapi/linux/pkt_sched.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)include/uapi/linux/pkt_sched.h +0
-0
include/uapi/linux/pkt_sched.h struct tc_ratespec { · line 85
Quoted 8 lines
include/uapi/linux/pkt_sched.h +1
-1@@ -79,7 +79,7 @@ struct tc_ratespec {unsigned short overhead;short cell_align;unsigned short mpu; -__u32 rate; +__u64 rate; };#define TC_RTAB_SIZE 1024
OK, you just broke all previous tc binaries.
I wonder why people keep posting such buggy patches, while we are slowly doing all the right changes for this problem, in the kernel and userland.
Guys, if it was that simple, we would have done it years ago.
In the mean time, I suggest you update your iproute2 package to include the fix for this problem (commit a303853e844ce4
"get_rate: detect 32bit overflows")