> Just to give you another data, I shuffled elements/members in struct flow > which increased the size of struct flow to 132(please note I have not added > any new fields) and tested it on a 32 bit centos 6.2 system and it fails to > match any flow that is programmed. Unfortunately the diffs are on a system > which is currently at my home. I will send out those diffs tomorrow if you > are interested.
Yep, sounds like you have a bug which is causing the hash to use uninitialized data. Have you tried running under valgrind? It's pretty good at catching that sort of thing. Ethan > > Thanks > Ravi > > -----Original Message----- > From: Kerur, Ravi > Sent: Tuesday, February 21, 2012 3:41 PM > To: Ethan Jackson > Cc: dev@openvswitch.org > Subject: RE: [ovs-dev] Q on FLOW_SIG_SIZE and hashing > > Thanks Ethan. I did zeroed out stack and ttl bits in my diffs earlier while > debugging. It didn't help so I removed them. I will take a closer look one > more time. > > Thanks > Ravi > > -----Original Message----- > From: dev-boun...@openvswitch.org [mailto:dev-boun...@openvswitch.org] On > Behalf Of Ethan Jackson > Sent: Tuesday, February 21, 2012 3:20 PM > To: Kerur, Ravi > Cc: dev@openvswitch.org > Subject: Re: [ovs-dev] Q on FLOW_SIG_SIZE and hashing > >> Yes I do. Attached complete diffs. The debugging information I mentioned >> earlier are with these diffs as well. I shifted to just flow struct diffs >> after I went through FLOW_WC_SEQ changes I had and thought it might not have >> an impact, as most of the checks are in ".c" and with build_assert_decl and >> compilation should have failed if I had missed something. Anyways let me >> know your inputs. > > OK great. So typically bugs like this come around when you have > uninitialized data in the flow or in the flow wildcards which could > cause cls_rule_hash() to return unpredictable results. This > completely breaks the classifier. I haven't read the diff you've sent > carefully, but it sounds to me like that's the issue you're running > into. One place to look: in flow_zero_wildcards() it looks to me > like you are only initializing the MPLS_LABEL_MASK and MPLS_TC_MASK > pits of the 'mpls_lse' field. If you aren't planning to match on the > TTL or STACk flags, you'll need to zero them out so the uninitialized > memory doesn't break the hash. That's just a hunch though, I know > very little about MPLS and I haven't read the diff carefully. > > Ethan > > >> >> Thanks >> Ravi >> >> -----Original Message----- >> From: Ethan Jackson [mailto:et...@nicira.com] >> Sent: Tuesday, February 21, 2012 2:31 PM >> To: Kerur, Ravi >> Cc: dev@openvswitch.org >> Subject: Re: [ovs-dev] Q on FLOW_SIG_SIZE and hashing >> >>> I have attached diffs which includes adding a member to struct flow and >>> adjusting FLOW_SIG_SIZE accordingly. This is experimental so I haven't >>> bothered to change FLOW_WC_SEQ... >> >> Oh I'm sorry for the confusion, I thought you had a more involved >> patch which makes the necessary changes demanded by FLOW_WC_SEQ. The >> code really does require those changes to work, simply adding the >> field to the structure is insufficient. The behavior you're seeing is >> what I'd expect to see without the FLOW_WC_SEQ changes. There may be >> other changes necessary as well. >> >> Ethan > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev