cpsw.rst (22787B)
1.. SPDX-License-Identifier: GPL-2.0 2 3====================================== 4Texas Instruments CPSW ethernet driver 5====================================== 6 7Multiqueue & CBS & MQPRIO 8========================= 9 10 11The cpsw has 3 CBS shapers for each external ports. This document 12describes MQPRIO and CBS Qdisc offload configuration for cpsw driver 13based on examples. It potentially can be used in audio video bridging 14(AVB) and time sensitive networking (TSN). 15 16The following examples were tested on AM572x EVM and BBB boards. 17 18Test setup 19========== 20 21Under consideration two examples with AM572x EVM running cpsw driver 22in dual_emac mode. 23 24Several prerequisites: 25 26- TX queues must be rated starting from txq0 that has highest priority 27- Traffic classes are used starting from 0, that has highest priority 28- CBS shapers should be used with rated queues 29- The bandwidth for CBS shapers has to be set a little bit more then 30 potential incoming rate, thus, rate of all incoming tx queues has 31 to be a little less 32- Real rates can differ, due to discreetness 33- Map skb-priority to txq is not enough, also skb-priority to l2 prio 34 map has to be created with ip or vconfig tool 35- Any l2/socket prio (0 - 7) for classes can be used, but for 36 simplicity default values are used: 3 and 2 37- only 2 classes tested: A and B, but checked and can work with more, 38 maximum allowed 4, but only for 3 rate can be set. 39 40Test setup for examples 41======================= 42 43:: 44 45 +-------------------------------+ 46 |--+ | 47 | | Workstation0 | 48 |E | MAC 18:03:73:66:87:42 | 49 +-----------------------------+ +--|t | | 50 | | 1 | E | | |h |./tsn_listener -d \ | 51 | Target board: | 0 | t |--+ |0 | 18:03:73:66:87:42 -i eth0 \| 52 | AM572x EVM | 0 | h | | | -s 1500 | 53 | | 0 | 0 | |--+ | 54 | Only 2 classes: |Mb +---| +-------------------------------+ 55 | class A, class B | | 56 | | +---| +-------------------------------+ 57 | | 1 | E | |--+ | 58 | | 0 | t | | | Workstation1 | 59 | | 0 | h |--+ |E | MAC 20:cf:30:85:7d:fd | 60 | |Mb | 1 | +--|t | | 61 +-----------------------------+ |h |./tsn_listener -d \ | 62 |0 | 20:cf:30:85:7d:fd -i eth0 \| 63 | | -s 1500 | 64 |--+ | 65 +-------------------------------+ 66 67 68Example 1: One port tx AVB configuration scheme for target board 69---------------------------------------------------------------- 70 71(prints and scheme for AM572x evm, applicable for single port boards) 72 73- tc - traffic class 74- txq - transmit queue 75- p - priority 76- f - fifo (cpsw fifo) 77- S - shaper configured 78 79:: 80 81 +------------------------------------------------------------------+ u 82 | +---------------+ +---------------+ +------+ +------+ | s 83 | | | | | | | | | | e 84 | | App 1 | | App 2 | | Apps | | Apps | | r 85 | | Class A | | Class B | | Rest | | Rest | | 86 | | Eth0 | | Eth0 | | Eth0 | | Eth1 | | s 87 | | VLAN100 | | VLAN100 | | | | | | | | p 88 | | 40 Mb/s | | 20 Mb/s | | | | | | | | a 89 | | SO_PRIORITY=3 | | SO_PRIORITY=2 | | | | | | | | c 90 | | | | | | | | | | | | | | e 91 | +---|-----------+ +---|-----------+ +---|--+ +---|--+ | 92 +-----|------------------|------------------|--------|-------------+ 93 +-+ +------------+ | | 94 | | +-----------------+ +--+ 95 | | | | 96 +---|-------|-------------|-----------------------|----------------+ 97 | +----+ +----+ +----+ +----+ +----+ | 98 | | p3 | | p2 | | p1 | | p0 | | p0 | | k 99 | \ / \ / \ / \ / \ / | e 100 | \ / \ / \ / \ / \ / | r 101 | \/ \/ \/ \/ \/ | n 102 | | | | | | e 103 | | | +-----+ | | l 104 | | | | | | 105 | +----+ +----+ +----+ +----+ | s 106 | |tc0 | |tc1 | |tc2 | |tc0 | | p 107 | \ / \ / \ / \ / | a 108 | \ / \ / \ / \ / | c 109 | \/ \/ \/ \/ | e 110 | | | +-----+ | | 111 | | | | | | | 112 | | | | | | | 113 | | | | | | | 114 | +----+ +----+ +----+ +----+ +----+ | 115 | |txq0| |txq1| |txq2| |txq3| |txq4| | 116 | \ / \ / \ / \ / \ / | 117 | \ / \ / \ / \ / \ / | 118 | \/ \/ \/ \/ \/ | 119 | +-|------|------|------|--+ +--|--------------+ | 120 | | | | | | | Eth0.100 | | Eth1 | | 121 +---|------|------|------|------------------------|----------------+ 122 | | | | | 123 p p p p | 124 3 2 0-1, 4-7 <- L2 priority | 125 | | | | | 126 | | | | | 127 +---|------|------|------|------------------------|----------------+ 128 | | | | | |----------+ | 129 | +----+ +----+ +----+ +----+ +----+ | 130 | |dma7| |dma6| |dma5| |dma4| |dma3| | 131 | \ / \ / \ / \ / \ / | c 132 | \S / \S / \ / \ / \ / | p 133 | \/ \/ \/ \/ \/ | s 134 | | | | +----- | | w 135 | | | | | | | 136 | | | | | | | d 137 | +----+ +----+ +----+p p+----+ | r 138 | | | | | | |o o| | | i 139 | | f3 | | f2 | | f0 |r r| f0 | | v 140 | |tc0 | |tc1 | |tc2 |t t|tc0 | | e 141 | \CBS / \CBS / \CBS /1 2\CBS / | r 142 | \S / \S / \ / \ / | 143 | \/ \/ \/ \/ | 144 +------------------------------------------------------------------+ 145 146 1471) :: 148 149 150 // Add 4 tx queues, for interface Eth0, and 1 tx queue for Eth1 151 $ ethtool -L eth0 rx 1 tx 5 152 rx unmodified, ignoring 153 1542) :: 155 156 // Check if num of queues is set correctly: 157 $ ethtool -l eth0 158 Channel parameters for eth0: 159 Pre-set maximums: 160 RX: 8 161 TX: 8 162 Other: 0 163 Combined: 0 164 Current hardware settings: 165 RX: 1 166 TX: 5 167 Other: 0 168 Combined: 0 169 1703) :: 171 172 // TX queues must be rated starting from 0, so set bws for tx0 and tx1 173 // Set rates 40 and 20 Mb/s appropriately. 174 // Pay attention, real speed can differ a bit due to discreetness. 175 // Leave last 2 tx queues not rated. 176 $ echo 40 > /sys/class/net/eth0/queues/tx-0/tx_maxrate 177 $ echo 20 > /sys/class/net/eth0/queues/tx-1/tx_maxrate 178 1794) :: 180 181 // Check maximum rate of tx (cpdma) queues: 182 $ cat /sys/class/net/eth0/queues/tx-*/tx_maxrate 183 40 184 20 185 0 186 0 187 0 188 1895) :: 190 191 // Map skb->priority to traffic class: 192 // 3pri -> tc0, 2pri -> tc1, (0,1,4-7)pri -> tc2 193 // Map traffic class to transmit queue: 194 // tc0 -> txq0, tc1 -> txq1, tc2 -> (txq2, txq3) 195 $ tc qdisc replace dev eth0 handle 100: parent root mqprio num_tc 3 \ 196 map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 queues 1@0 1@1 2@2 hw 1 197 1985a) :: 199 200 // As two interface sharing same set of tx queues, assign all traffic 201 // coming to interface Eth1 to separate queue in order to not mix it 202 // with traffic from interface Eth0, so use separate txq to send 203 // packets to Eth1, so all prio -> tc0 and tc0 -> txq4 204 // Here hw 0, so here still default configuration for eth1 in hw 205 $ tc qdisc replace dev eth1 handle 100: parent root mqprio num_tc 1 \ 206 map 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 queues 1@4 hw 0 207 2086) :: 209 210 // Check classes settings 211 $ tc -g class show dev eth0 212 +---(100:ffe2) mqprio 213 | +---(100:3) mqprio 214 | +---(100:4) mqprio 215 | 216 +---(100:ffe1) mqprio 217 | +---(100:2) mqprio 218 | 219 +---(100:ffe0) mqprio 220 +---(100:1) mqprio 221 222 $ tc -g class show dev eth1 223 +---(100:ffe0) mqprio 224 +---(100:5) mqprio 225 2267) :: 227 228 // Set rate for class A - 41 Mbit (tc0, txq0) using CBS Qdisc 229 // Set it +1 Mb for reserve (important!) 230 // here only idle slope is important, others arg are ignored 231 // Pay attention, real speed can differ a bit due to discreetness 232 $ tc qdisc add dev eth0 parent 100:1 cbs locredit -1438 \ 233 hicredit 62 sendslope -959000 idleslope 41000 offload 1 234 net eth0: set FIFO3 bw = 50 235 2368) :: 237 238 // Set rate for class B - 21 Mbit (tc1, txq1) using CBS Qdisc: 239 // Set it +1 Mb for reserve (important!) 240 $ tc qdisc add dev eth0 parent 100:2 cbs locredit -1468 \ 241 hicredit 65 sendslope -979000 idleslope 21000 offload 1 242 net eth0: set FIFO2 bw = 30 243 2449) :: 245 246 // Create vlan 100 to map sk->priority to vlan qos 247 $ ip link add link eth0 name eth0.100 type vlan id 100 248 8021q: 802.1Q VLAN Support v1.8 249 8021q: adding VLAN 0 to HW filter on device eth0 250 8021q: adding VLAN 0 to HW filter on device eth1 251 net eth0: Adding vlanid 100 to vlan filter 252 25310) :: 254 255 // Map skb->priority to L2 prio, 1 to 1 256 $ ip link set eth0.100 type vlan \ 257 egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 258 25911) :: 260 261 // Check egress map for vlan 100 262 $ cat /proc/net/vlan/eth0.100 263 [...] 264 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 265 EGRESS priority mappings: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 266 26712) :: 268 269 // Run your appropriate tools with socket option "SO_PRIORITY" 270 // to 3 for class A and/or to 2 for class B 271 // (I took at https://www.spinics.net/lists/netdev/msg460869.html) 272 ./tsn_talker -d 18:03:73:66:87:42 -i eth0.100 -p3 -s 1500& 273 ./tsn_talker -d 18:03:73:66:87:42 -i eth0.100 -p2 -s 1500& 274 27513) :: 276 277 // run your listener on workstation (should be in same vlan) 278 // (I took at https://www.spinics.net/lists/netdev/msg460869.html) 279 ./tsn_listener -d 18:03:73:66:87:42 -i enp5s0 -s 1500 280 Receiving data rate: 39012 kbps 281 Receiving data rate: 39012 kbps 282 Receiving data rate: 39012 kbps 283 Receiving data rate: 39012 kbps 284 Receiving data rate: 39012 kbps 285 Receiving data rate: 39012 kbps 286 Receiving data rate: 39012 kbps 287 Receiving data rate: 39012 kbps 288 Receiving data rate: 39012 kbps 289 Receiving data rate: 39012 kbps 290 Receiving data rate: 39012 kbps 291 Receiving data rate: 39012 kbps 292 Receiving data rate: 39000 kbps 293 29414) :: 295 296 // Restore default configuration if needed 297 $ ip link del eth0.100 298 $ tc qdisc del dev eth1 root 299 $ tc qdisc del dev eth0 root 300 net eth0: Prev FIFO2 is shaped 301 net eth0: set FIFO3 bw = 0 302 net eth0: set FIFO2 bw = 0 303 $ ethtool -L eth0 rx 1 tx 1 304 305Example 2: Two port tx AVB configuration scheme for target board 306---------------------------------------------------------------- 307 308(prints and scheme for AM572x evm, for dual emac boards only) 309 310:: 311 312 +------------------------------------------------------------------+ u 313 | +----------+ +----------+ +------+ +----------+ +----------+ | s 314 | | | | | | | | | | | | e 315 | | App 1 | | App 2 | | Apps | | App 3 | | App 4 | | r 316 | | Class A | | Class B | | Rest | | Class B | | Class A | | 317 | | Eth0 | | Eth0 | | | | | Eth1 | | Eth1 | | s 318 | | VLAN100 | | VLAN100 | | | | | VLAN100 | | VLAN100 | | p 319 | | 40 Mb/s | | 20 Mb/s | | | | | 10 Mb/s | | 30 Mb/s | | a 320 | | SO_PRI=3 | | SO_PRI=2 | | | | | SO_PRI=3 | | SO_PRI=2 | | c 321 | | | | | | | | | | | | | | | | | e 322 | +---|------+ +---|------+ +---|--+ +---|------+ +---|------+ | 323 +-----|-------------|-------------|---------|-------------|--------+ 324 +-+ +-------+ | +----------+ +----+ 325 | | +-------+------+ | | 326 | | | | | | 327 +---|-------|-------------|--------------|-------------|-------|---+ 328 | +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ | 329 | | p3 | | p2 | | p1 | | p0 | | p0 | | p1 | | p2 | | p3 | | k 330 | \ / \ / \ / \ / \ / \ / \ / \ / | e 331 | \ / \ / \ / \ / \ / \ / \ / \ / | r 332 | \/ \/ \/ \/ \/ \/ \/ \/ | n 333 | | | | | | | | e 334 | | | +----+ +----+ | | | l 335 | | | | | | | | 336 | +----+ +----+ +----+ +----+ +----+ +----+ | s 337 | |tc0 | |tc1 | |tc2 | |tc2 | |tc1 | |tc0 | | p 338 | \ / \ / \ / \ / \ / \ / | a 339 | \ / \ / \ / \ / \ / \ / | c 340 | \/ \/ \/ \/ \/ \/ | e 341 | | | +-----+ +-----+ | | | 342 | | | | | | | | | | 343 | | | | | | | | | | 344 | | | | | E E | | | | | 345 | +----+ +----+ +----+ +----+ t t +----+ +----+ +----+ +----+ | 346 | |txq0| |txq1| |txq4| |txq5| h h |txq6| |txq7| |txq3| |txq2| | 347 | \ / \ / \ / \ / 0 1 \ / \ / \ / \ / | 348 | \ / \ / \ / \ / . . \ / \ / \ / \ / | 349 | \/ \/ \/ \/ 1 1 \/ \/ \/ \/ | 350 | +-|------|------|------|--+ 0 0 +-|------|------|------|--+ | 351 | | | | | | | 0 0 | | | | | | | 352 +---|------|------|------|---------------|------|------|------|----+ 353 | | | | | | | | 354 p p p p p p p p 355 3 2 0-1, 4-7 <-L2 pri-> 0-1, 4-7 2 3 356 | | | | | | | | 357 | | | | | | | | 358 +---|------|------|------|---------------|------|------|------|----+ 359 | | | | | | | | | | 360 | +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ | 361 | |dma7| |dma6| |dma3| |dma2| |dma1| |dma0| |dma4| |dma5| | 362 | \ / \ / \ / \ / \ / \ / \ / \ / | c 363 | \S / \S / \ / \ / \ / \ / \S / \S / | p 364 | \/ \/ \/ \/ \/ \/ \/ \/ | s 365 | | | | +----- | | | | | w 366 | | | | | +----+ | | | | 367 | | | | | | | | | | d 368 | +----+ +----+ +----+p p+----+ +----+ +----+ | r 369 | | | | | | |o o| | | | | | | i 370 | | f3 | | f2 | | f0 |r CPSW r| f3 | | f2 | | f0 | | v 371 | |tc0 | |tc1 | |tc2 |t t|tc0 | |tc1 | |tc2 | | e 372 | \CBS / \CBS / \CBS /1 2\CBS / \CBS / \CBS / | r 373 | \S / \S / \ / \S / \S / \ / | 374 | \/ \/ \/ \/ \/ \/ | 375 +------------------------------------------------------------------+ 376 ========================================Eth==========================> 377 3781) :: 379 380 // Add 8 tx queues, for interface Eth0, but they are common, so are accessed 381 // by two interfaces Eth0 and Eth1. 382 $ ethtool -L eth1 rx 1 tx 8 383 rx unmodified, ignoring 384 3852) :: 386 387 // Check if num of queues is set correctly: 388 $ ethtool -l eth0 389 Channel parameters for eth0: 390 Pre-set maximums: 391 RX: 8 392 TX: 8 393 Other: 0 394 Combined: 0 395 Current hardware settings: 396 RX: 1 397 TX: 8 398 Other: 0 399 Combined: 0 400 4013) :: 402 403 // TX queues must be rated starting from 0, so set bws for tx0 and tx1 for Eth0 404 // and for tx2 and tx3 for Eth1. That is, rates 40 and 20 Mb/s appropriately 405 // for Eth0 and 30 and 10 Mb/s for Eth1. 406 // Real speed can differ a bit due to discreetness 407 // Leave last 4 tx queues as not rated 408 $ echo 40 > /sys/class/net/eth0/queues/tx-0/tx_maxrate 409 $ echo 20 > /sys/class/net/eth0/queues/tx-1/tx_maxrate 410 $ echo 30 > /sys/class/net/eth1/queues/tx-2/tx_maxrate 411 $ echo 10 > /sys/class/net/eth1/queues/tx-3/tx_maxrate 412 4134) :: 414 415 // Check maximum rate of tx (cpdma) queues: 416 $ cat /sys/class/net/eth0/queues/tx-*/tx_maxrate 417 40 418 20 419 30 420 10 421 0 422 0 423 0 424 0 425 4265) :: 427 428 // Map skb->priority to traffic class for Eth0: 429 // 3pri -> tc0, 2pri -> tc1, (0,1,4-7)pri -> tc2 430 // Map traffic class to transmit queue: 431 // tc0 -> txq0, tc1 -> txq1, tc2 -> (txq4, txq5) 432 $ tc qdisc replace dev eth0 handle 100: parent root mqprio num_tc 3 \ 433 map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 queues 1@0 1@1 2@4 hw 1 434 4356) :: 436 437 // Check classes settings 438 $ tc -g class show dev eth0 439 +---(100:ffe2) mqprio 440 | +---(100:5) mqprio 441 | +---(100:6) mqprio 442 | 443 +---(100:ffe1) mqprio 444 | +---(100:2) mqprio 445 | 446 +---(100:ffe0) mqprio 447 +---(100:1) mqprio 448 4497) :: 450 451 // Set rate for class A - 41 Mbit (tc0, txq0) using CBS Qdisc for Eth0 452 // here only idle slope is important, others ignored 453 // Real speed can differ a bit due to discreetness 454 $ tc qdisc add dev eth0 parent 100:1 cbs locredit -1470 \ 455 hicredit 62 sendslope -959000 idleslope 41000 offload 1 456 net eth0: set FIFO3 bw = 50 457 4588) :: 459 460 // Set rate for class B - 21 Mbit (tc1, txq1) using CBS Qdisc for Eth0 461 $ tc qdisc add dev eth0 parent 100:2 cbs locredit -1470 \ 462 hicredit 65 sendslope -979000 idleslope 21000 offload 1 463 net eth0: set FIFO2 bw = 30 464 4659) :: 466 467 // Create vlan 100 to map sk->priority to vlan qos for Eth0 468 $ ip link add link eth0 name eth0.100 type vlan id 100 469 net eth0: Adding vlanid 100 to vlan filter 470 47110) :: 472 473 // Map skb->priority to L2 prio for Eth0.100, one to one 474 $ ip link set eth0.100 type vlan \ 475 egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 476 47711) :: 478 479 // Check egress map for vlan 100 480 $ cat /proc/net/vlan/eth0.100 481 [...] 482 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 483 EGRESS priority mappings: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 484 48512) :: 486 487 // Map skb->priority to traffic class for Eth1: 488 // 3pri -> tc0, 2pri -> tc1, (0,1,4-7)pri -> tc2 489 // Map traffic class to transmit queue: 490 // tc0 -> txq2, tc1 -> txq3, tc2 -> (txq6, txq7) 491 $ tc qdisc replace dev eth1 handle 100: parent root mqprio num_tc 3 \ 492 map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 queues 1@2 1@3 2@6 hw 1 493 49413) :: 495 496 // Check classes settings 497 $ tc -g class show dev eth1 498 +---(100:ffe2) mqprio 499 | +---(100:7) mqprio 500 | +---(100:8) mqprio 501 | 502 +---(100:ffe1) mqprio 503 | +---(100:4) mqprio 504 | 505 +---(100:ffe0) mqprio 506 +---(100:3) mqprio 507 50814) :: 509 510 // Set rate for class A - 31 Mbit (tc0, txq2) using CBS Qdisc for Eth1 511 // here only idle slope is important, others ignored, but calculated 512 // for interface speed - 100Mb for eth1 port. 513 // Set it +1 Mb for reserve (important!) 514 $ tc qdisc add dev eth1 parent 100:3 cbs locredit -1035 \ 515 hicredit 465 sendslope -69000 idleslope 31000 offload 1 516 net eth1: set FIFO3 bw = 31 517 51815) :: 519 520 // Set rate for class B - 11 Mbit (tc1, txq3) using CBS Qdisc for Eth1 521 // Set it +1 Mb for reserve (important!) 522 $ tc qdisc add dev eth1 parent 100:4 cbs locredit -1335 \ 523 hicredit 405 sendslope -89000 idleslope 11000 offload 1 524 net eth1: set FIFO2 bw = 11 525 52616) :: 527 528 // Create vlan 100 to map sk->priority to vlan qos for Eth1 529 $ ip link add link eth1 name eth1.100 type vlan id 100 530 net eth1: Adding vlanid 100 to vlan filter 531 53217) :: 533 534 // Map skb->priority to L2 prio for Eth1.100, one to one 535 $ ip link set eth1.100 type vlan \ 536 egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 537 53818) :: 539 540 // Check egress map for vlan 100 541 $ cat /proc/net/vlan/eth1.100 542 [...] 543 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 544 EGRESS priority mappings: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 545 54619) :: 547 548 // Run appropriate tools with socket option "SO_PRIORITY" to 3 549 // for class A and to 2 for class B. For both interfaces 550 ./tsn_talker -d 18:03:73:66:87:42 -i eth0.100 -p2 -s 1500& 551 ./tsn_talker -d 18:03:73:66:87:42 -i eth0.100 -p3 -s 1500& 552 ./tsn_talker -d 20:cf:30:85:7d:fd -i eth1.100 -p2 -s 1500& 553 ./tsn_talker -d 20:cf:30:85:7d:fd -i eth1.100 -p3 -s 1500& 554 55520) :: 556 557 // run your listener on workstation (should be in same vlan) 558 // (I took at https://www.spinics.net/lists/netdev/msg460869.html) 559 ./tsn_listener -d 18:03:73:66:87:42 -i enp5s0 -s 1500 560 Receiving data rate: 39012 kbps 561 Receiving data rate: 39012 kbps 562 Receiving data rate: 39012 kbps 563 Receiving data rate: 39012 kbps 564 Receiving data rate: 39012 kbps 565 Receiving data rate: 39012 kbps 566 Receiving data rate: 39012 kbps 567 Receiving data rate: 39012 kbps 568 Receiving data rate: 39012 kbps 569 Receiving data rate: 39012 kbps 570 Receiving data rate: 39012 kbps 571 Receiving data rate: 39012 kbps 572 Receiving data rate: 39000 kbps 573 57421) :: 575 576 // Restore default configuration if needed 577 $ ip link del eth1.100 578 $ ip link del eth0.100 579 $ tc qdisc del dev eth1 root 580 net eth1: Prev FIFO2 is shaped 581 net eth1: set FIFO3 bw = 0 582 net eth1: set FIFO2 bw = 0 583 $ tc qdisc del dev eth0 root 584 net eth0: Prev FIFO2 is shaped 585 net eth0: set FIFO3 bw = 0 586 net eth0: set FIFO2 bw = 0 587 $ ethtool -L eth0 rx 1 tx 1