On 13 May 2014 16:44, Andy Zhou <az...@nicira.com> wrote:
>
>  > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> > index 926f3d6..bb16e7b 100644
> > --- a/ofproto/ofproto-dpif.c
> > +++ b/ofproto/ofproto-dpif.c
> > @@ -3211,10 +3211,11 @@ rule_dpif_lookup(struct ofproto_dpif *ofproto,
> struct flow *flow,
> >      uint8_t table_id;
> >
> >      if (ofproto_dpif_get_enable_recirc(ofproto)) {
> > -        /* Always exactly match recirc_id since datapath supports
> > -         * recirculation.  */
> > +        /* Always exactly match recirc_id and dp_hash since the datapath
> > +         * supports recirculation.  */
> >          if (wc) {
> >              wc->masks.recirc_id = UINT32_MAX;
> > +            wc->masks.dp_hash = UINT32_MAX;
> How about MPLS use case that does not require dp_hash to be exactly
> matched?
>

Hmm, I think I added that part in particular to handle differences when
megaflows are disabled. Without that, the odp flow sent to the datapath
includes the dp_hash with a mask of 0. Then, when the datapath dumps the
flow, because the mask is 0, it doesn't dump it back.

Would it be better to always serialise the dp_hash in
odp_flow_key_from_flow__(), or add a special case in
dpif_netdev_flow_dump_next()?
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to