On 21/12/2022 11:34, Eelco Chaudron wrote:
> Depending on the driver implementation it can take up to 2 seconds before
> offloaded flow statistics are updated. This is causing a problem with
> min-revalidate-pps, as old statistic values are used during this period.
>
> This fix will wait for at least 2 seconds before assuming no packets
> where received during this period.
>
> Signed-off-by: Eelco Chaudron <[email protected]>
> ---
> ofproto/ofproto-dpif-upcall.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
> index ad9635496..464c304a8 100644
> --- a/ofproto/ofproto-dpif-upcall.c
> +++ b/ofproto/ofproto-dpif-upcall.c
> @@ -2095,7 +2095,7 @@ ukey_delete(struct umap *umap, struct udpif_key *ukey)
>
> static bool
> should_revalidate(const struct udpif *udpif, uint64_t packets,
> - long long int used)
> + long long int used, bool offloaded)
> {
> long long int metric, now, duration;
>
> @@ -2124,8 +2124,12 @@ should_revalidate(const struct udpif *udpif, uint64_t
> packets,
> duration = now - used;
> metric = duration / packets;
>
> - if (metric < 1000 / ofproto_min_revalidate_pps) {
> - /* The flow is receiving more than min-revalidate-pps, so keep it. */
> + if (metric < 1000 / ofproto_min_revalidate_pps ||
> + (offloaded && duration < 2000)) {
> + /* The flow is receiving more than min-revalidate-pps, so keep it.
> + * Or it's a hardware offloaded flow that might take up to 2 seconds
> + * to update its statistics. Until we are sure the statistics had a
> + * chance to be updated, also keep it. */
> return true;
> }
> return false;
> @@ -2342,7 +2346,8 @@ revalidate_ukey(struct udpif *udpif, struct udpif_key
> *ukey,
> : 0);
>
> if (need_revalidate) {
> - if (should_revalidate(udpif, push.n_packets, ukey->stats.used)) {
> + if (should_revalidate(udpif, push.n_packets, ukey->stats.used,
> + offloaded)) {
> if (!ukey->xcache) {
> ukey->xcache = xlate_cache_new();
> } else {
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
looks good. thanks
Acked-by: Roi Dayan <[email protected]>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev