FYI, I accidentally merged this without review.  Justin's looking at
it now.  If it gets anything other than a "looks good", I'll revert
it.  My bad, sorry.

Ethan

On Tue, Apr 2, 2013 at 12:36 PM, Ethan Jackson <et...@nicira.com> wrote:
> In the standard case, rate limiting facet_learn() to once ever
> 500ms, makes sense.  The worst that can happen is a learning entry
> is expired half a second to early.  However, when using
> fin_timeouts, we really need react quickly to delete the newly
> stale flow.
>
> Bug #15915.
> Signed-off-by: Ethan Jackson <et...@nicira.com>
> ---
>  ofproto/ofproto-dpif.c |    5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> index 32ed091..47830c1 100644
> --- a/ofproto/ofproto-dpif.c
> +++ b/ofproto/ofproto-dpif.c
> @@ -4585,13 +4585,14 @@ facet_learn(struct facet *facet)
>      struct ofproto_dpif *ofproto = 
> ofproto_dpif_cast(facet->rule->up.ofproto);
>      struct subfacet *subfacet= CONTAINER_OF(list_front(&facet->subfacets),
>                                              struct subfacet, list_node);
> +    long long int now = time_msec();
>      struct action_xlate_ctx ctx;
>
> -    if (time_msec() < facet->learn_rl) {
> +    if (!facet->has_fin_timeout && now < facet->learn_rl) {
>          return;
>      }
>
> -    facet->learn_rl = time_msec() + 500;
> +    facet->learn_rl = now + 500;
>
>      if (!facet->has_learn
>          && !facet->has_normal
> --
> 1.7.9.5
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to