o min_tx_rate puts lower limit on the VF bandwidth. VF is guaranteed to have a bandwidth of at least this value. max_tx_rate puts cap on the VF bandwidth. VF can have a bandwidth of up to this value. o A new handler set_vf_rate for attr IFLA_VF_RATE has been introduced which takes 4 arguments: netdev, VF number, min_tx_rate, max_tx_rate o ndo_set_vf_rate replaces ndo_set_vf_tx_rate handler. o Drivers that currently implement ndo_set_vf_tx_rate should now call ndo_set_vf_rate instead and reject attempt to set a minimum bandwidth greater than 0 for IFLA_VF_TX_RATE when IFLA_VF_RATE is not yet implemented by driver. o If user enters only one of either min_tx_rate or max_tx_rate, then, userland should read back the other value from driver and set both for IFLA_VF_RATE. Drivers that have not yet implemented IFLA_VF_RATE should always return min_tx_rate as 0 when read from ip tool. o If both IFLA_VF_TX_RATE and IFLA_VF_RATE options are specified, then IFLA_VF_RATE should override. o Idea is to have consistent display of rate values to user. o Usage example: - ./ip link set p4p1 vf 0 rate 900 ./ip link show p4p1 32: p4p1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 00:0e:1e:08:b0:f0 brd ff:ff:ff:ff:ff:ff vf 0 MAC 3e:a0:ca:bd:ae:5a, tx rate 900 (Mbps), max_tx_rate 900Mbps vf 1 MAC f6:c6:7c:3f:3d:6c vf 2 MAC 56:32:43:98:d7:71 vf 3 MAC d6:be:c3:b5:85:ff vf 4 MAC ee:a9:9a:1e:19:14 vf 5 MAC 4a:d0:4c:07:52:18 vf 6 MAC 3a:76:44:93:62:f9 vf 7 MAC 82:e9:e7:e3:15:1a ./ip link set p4p1 vf 0 max_tx_rate 300 min_tx_rate 200 ./ip link show p4p1 32: p4p1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 00:0e:1e:08:b0:f0 brd ff:ff:ff:ff:ff:ff vf 0 MAC 3e:a0:ca:bd:ae:5a, tx rate 300 (Mbps), max_tx_rate 300Mbps, min_tx_rate 200Mbps vf 1 MAC f6:c6:7c:3f:3d:6c vf 2 MAC 56:32:43:98:d7:71 vf 3 MAC d6:be:c3:b5:85:ff vf 4 MAC ee:a9:9a:1e:19:14 vf 5 MAC 4a:d0:4c:07:52:18 vf 6 MAC 3a:76:44:93:62:f9 vf 7 MAC 82:e9:e7:e3:15:1a ./ip link set p4p1 vf 0 max_tx_rate 600 rate 300 ./ip link show p4p1 32: p4p1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 00:0e:1e:08:b0:f brd ff:ff:ff:ff:ff:ff vf 0 MAC 3e:a0:ca:bd:ae:5, tx rate 600 (Mbps), max_tx_rate 600Mbps, min_tx_rate 200Mbps vf 1 MAC f6:c6:7c:3f:3d:6c vf 2 MAC 56:32:43:98:d7:71 vf 3 MAC d6:be:c3:b5:85:ff vf 4 MAC ee:a9:9a:1e:19:14 vf 5 MAC 4a:d0:4c:07:52:18 vf 6 MAC 3a:76:44:93:62:f9 vf 7 MAC 82:e9:e7:e3:15:1a
Showing the changes to include/uapi/linux (1 of 20 files). Show all
Unified · Split
| @@ -399,9 +399,10 @@ enum { · 398 unmodified lines | ||
| 399 | 399 | IFLA_VF_UNSPEC, |
| 400 | 400 | IFLA_VF_MAC, /* Hardware queue specific attributes */ |
| 401 | 401 | IFLA_VF_VLAN, |
| 402 | − IFLA_VF_TX_RATE, /* TX Bandwidth Allocation */ | |
| 402 | + IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */ | |
| 403 | 403 | IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */ |
| 404 | 404 | IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */ |
| 405 | + IFLA_VF_RATE, /* Min and Max TX Bandwidth Allocation */ | |
| 405 | 406 | __IFLA_VF_MAX, |
| 406 | 407 | }; |
| 407 | 408 | |
| @@ -423,6 +424,12 @@ struct ifla_vf_tx_rate { · 15 unmodified lines | ||
| 423 | 424 | __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ |
| 424 | 425 | }; |
| 425 | 426 | |
| 427 | +struct ifla_vf_rate { | |
| 428 | + __u32 vf; | |
| 429 | + __u32 min_tx_rate; /* Min Bandwidth in Mbps */ | |
| 430 | + __u32 max_tx_rate; /* Max Bandwidth in Mbps */ | |
| 431 | +}; | |
| 432 | + | |
| 426 | 433 | struct ifla_vf_spoofchk { |
| 427 | 434 | __u32 vf; |
| 428 | 435 | __u32 setting; |