On 7/17/23 10:08, Adrian Moreno wrote:
> There are currently two issues that limit our ability to configure QoS
> on certain cards in linux:
>
> 1) Firstly, the maximum link speed (which is used as maximum rate in
> some tc classes), is obtained from netdev feature bits.
> This is quite problematic because netdev feature bits do not keep up
> with the new feature bits being added to ethtool. Therefore, cards whose
> speed is not supported by OpenFlow currently report an incorrect speed
> and this can affect QoS configuration.
>
> This series addresses this problem by adding a new netdev function that
> gets the actual link speed so we don't rely on feature bits which are
> difficult to keep in sync.
>
> 2) The tc layer uses 32bit Bps rates which means we cannot express rates
> higher than ~34Gbps.
>
> This series addresses this problem using 64-bit tc attributes when
> needed.
>
> ---
> v3 -> v4
> - Fallback to netdev_get_features if netdev_get_speed is not
> implemented.
>
> v2 -> v3
> - Move some (non htb-related) from patch 4 to patch 3.
> - Add a checkpatch.py warning if the old netdev_features_to_bps API is
> used.
> - Change unit tests to avoid burst integer overflow.
> - Use netdev_get_speed() instead of accessing current_speed directly in
> {hfsc,htb}parse_qdisc_details__() (patch 2).
>
> v1 -> v2
> - Fix style issues.
> - Add a test that checks we can expose a 50Gbps speed using a tap
> interface.
> - Add an implementation of get_speed for netdev-bsd.
> - Expose both HAVE_TCA_HTB_RATE64 and HAVE_TCA_POLICE_PKTRATE64 as AC
> variables and skip tests if the running kernel does not support them.
>
> Adrian Moreno (7):
> netdev: add netdev_get_speed() to nedev API
> netdev-linux: use speed as max rate in tc classes
> netdev-linux: use 64bit rtab and burst calculations
> netdev-linux: use 64-bit rates in htb tc classes
> netdev-linux: remove tc_matchall_fill_police
> netdev-linux: refactor nl_msg_put_act_police
> netdev-linux: support 64-bit rates in tc policing
>
> acinclude.m4 | 20 ++++
> include/openvswitch/netdev.h | 1 +
> lib/dpif.h | 4 +-
> lib/netdev-bsd.c | 22 ++++
> lib/netdev-dpdk.c | 52 +++++++++
> lib/netdev-linux-private.h | 1 +
> lib/netdev-linux.c | 221 ++++++++++++++++++++---------------
> lib/netdev-linux.h | 2 +-
> lib/netdev-provider.h | 9 ++
> lib/netdev.c | 30 +++++
> lib/tc.c | 2 +
> ofproto/ofproto-dpif-sflow.c | 11 +-
> ofproto/ofproto.c | 6 +-
> tests/atlocal.in | 5 +
> tests/system-interface.at | 30 +++++
> tests/system-traffic.at | 49 ++++++++
> utilities/checkpatch.py | 11 +-
> vswitchd/bridge.c | 30 +++--
> 18 files changed, 393 insertions(+), 113 deletions(-)
>
Thanks, Adrian, Eelco and Simon!
I fixed a few typos and style issues throughout the set and added
a couple of NEWS entries. With that, applied.
Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev