On 4/21/23 17:16, Adrian Moreno wrote:
> Instead of relying on feature bits, use the speed value directly as
> maximum rate for htb and hfsc classes.
> 
> There is still a limitation with the maximum rate that we can express
> with a 32-bit number in bytes/s (~ 34.3Gbps), but using the actual link speed
> instead of the feature bits, we can at least use an accurate maximum for
> some link speeds (such as 25Gbps) which are not supported by netdev's feature
> bits.
> 
> Signed-off-by: Adrian Moreno <[email protected]>
> ---
>  lib/netdev-linux.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
> index 576adbf3f..6d5cf8114 100644
> --- a/lib/netdev-linux.c
> +++ b/lib/netdev-linux.c
> @@ -4744,11 +4744,10 @@ htb_parse_qdisc_details__(struct netdev *netdev_,
>  
>      hc->max_rate = smap_get_ullong(details, "max-rate", 0) / 8;
>      if (!hc->max_rate) {
> -        enum netdev_features current;
> -
>          netdev_linux_read_features(netdev);
> -        current = !netdev->get_features_error ? netdev->current : 0;
> -        hc->max_rate = netdev_features_to_bps(current, NETDEV_DEFAULT_BPS) / 
> 8;
> +        hc->max_rate = !netdev->get_features_error
> +            ? (uint64_t) netdev->speed / 8 * 1000000
> +            : NETDEV_DEFAULT_BPS / 8;

Indentation to the position of the condition.

>      }
>      hc->min_rate = hc->max_rate;
>      hc->burst = 0;
> @@ -5216,11 +5215,10 @@ hfsc_parse_qdisc_details__(struct netdev *netdev_, 
> const struct smap *details,
>  
>      uint32_t max_rate = smap_get_ullong(details, "max-rate", 0) / 8;
>      if (!max_rate) {
> -        enum netdev_features current;
> -
>          netdev_linux_read_features(netdev);
> -        current = !netdev->get_features_error ? netdev->current : 0;
> -        max_rate = netdev_features_to_bps(current, NETDEV_DEFAULT_BPS) / 8;
> +        max_rate = !netdev->get_features_error
> +            ? (uint64_t) netdev->speed / 8 * 1000000
> +            : NETDEV_DEFAULT_BPS / 8;

Same here.

>      }
>  
>      class->min_rate = max_rate;

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to