Thanks!  Applied to master.

On Thu, Sep 04, 2014 at 09:18:45AM -0700, Jarno Rajahalme wrote:
> Looks good to me,
> 
> Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>
> 
> On Aug 20, 2014, at 9:00 PM, Ben Pfaff <b...@nicira.com> wrote:
> 
> > Commit 79fe0f4611b60 (meta-flow: Add 64-bit registers.) added support for
> > the OpenFlow 1.5 (draft) standardized registers, but neglected to cause
> > them to be serialized when Open vSwitch composes flow matches.  This meant
> > that they were always sent to a controller as pairs of Nicira extension
> > registers.  This commit fixes the problem.
> > 
> > Found by inspection.
> > 
> > ONF-JIRA: EXT-244
> > Signed-off-by: Ben Pfaff <b...@nicira.com>
> > ---
> > lib/nx-match.c     | 14 ++++++--
> > tests/ovs-ofctl.at | 93 
> > +++++++++++++++++++++++++++++++++++++++++++++++++++++-
> > 2 files changed, 103 insertions(+), 4 deletions(-)
> > 
> > diff --git a/lib/nx-match.c b/lib/nx-match.c
> > index 1d3205f..6eee551 100644
> > --- a/lib/nx-match.c
> > +++ b/lib/nx-match.c
> > @@ -723,9 +723,17 @@ nx_put_raw(struct ofpbuf *b, enum ofp_version oxm, 
> > const struct match *match,
> >                 flow->tunnel.ip_dst, match->wc.masks.tunnel.ip_dst);
> > 
> >     /* Registers. */
> > -    for (i = 0; i < FLOW_N_REGS; i++) {
> > -        nxm_put_32m(b, mf_oxm_header(MFF_REG0 + i, oxm),
> > -                    htonl(flow->regs[i]), htonl(match->wc.masks.regs[i]));
> > +    if (oxm < OFP15_VERSION) {
> > +        for (i = 0; i < FLOW_N_REGS; i++) {
> > +            nxm_put_32m(b, mf_oxm_header(MFF_REG0 + i, oxm),
> > +                        htonl(flow->regs[i]), 
> > htonl(match->wc.masks.regs[i]));
> > +        }
> > +    } else {
> > +        for (i = 0; i < FLOW_N_XREGS; i++) {
> > +            nxm_put_64m(b, mf_oxm_header(MFF_XREG0 + i, oxm),
> > +                        htonll(flow_get_xreg(flow, i)),
> > +                        htonll(flow_get_xreg(&match->wc.masks, i)));
> > +        }
> >     }
> > 
> >     /* Mark. */
> > diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at
> > index 6e82837..8eca295 100644
> > --- a/tests/ovs-ofctl.at
> > +++ b/tests/ovs-ofctl.at
> > @@ -1681,7 +1681,7 @@ NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
> > ])
> > AT_CLEANUP
> > 
> > -AT_SETUP([ovs-ofctl parse-oxm])
> > +AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.5)])
> > AT_KEYWORDS([oxm])
> > AT_DATA([oxm.txt], [dnl
> > <any>
> > @@ -1895,6 +1895,27 @@ OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) 
> > OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_
> > OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) 
> > OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) 
> > OXM_OF_IPV6_ND_TLL(0002e30f80a4)
> > OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) 
> > OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) 
> > OXM_OF_IPV6_ND_TLL(0002e30f80a4)
> > 
> > +# Registers 0, 1, and 2.
> > +NXM_NX_REG0(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0(a0e0d050)
> > +NXM_NX_REG1(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
> > +
> > +# Extended registers 0, 1, and 2.
> > +# (For OpenFlow 1.2, OVS transforms these into its extension registers.)
> > +OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
> > +
> > # Invalid field number.
> > 01020304(1111/2222)
> > ])
> > @@ -2111,6 +2132,27 @@ nx_pull_match() returned error OFPBMC_BAD_PREREQ
> > nx_pull_match() returned error OFPBMC_BAD_PREREQ
> > nx_pull_match() returned error OFPBMC_BAD_PREREQ
> > 
> > +# Registers 0, 1, and 2.
> > +NXM_NX_REG0(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0(a0e0d050)
> > +NXM_NX_REG1(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
> > +
> > +# Extended registers 0, 1, and 2.
> > +# (For OpenFlow 1.2, OVS transforms these into its extension registers.)
> > +NXM_NX_REG0(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0(a0e0d050)
> > +NXM_NX_REG1(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
> > +
> > # Invalid field number.
> > nx_pull_match() returned error OFPBMC_BAD_FIELD
> > ], [stderr])
> > @@ -2125,6 +2167,55 @@ nx_match|WARN|NXM/OXM entry 
> > OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
> > AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
> > AT_CLEANUP
> > 
> > +AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.5)])
> > +AT_KEYWORDS([oxm])
> > +AT_DATA([oxm.txt], [dnl
> > +# Extended registers 0 and 1.
> > +OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
> > +
> > +# Registers 0, 1, and 2.
> > +# (OpenFlow 1.5 transforms these into the standard "xregs".)
> > +NXM_NX_REG0(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0(a0e0d050)
> > +NXM_NX_REG1(acebdf56)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
> > +NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
> > +])
> > +AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm 
> > OpenFlow15 < oxm.txt],
> > +  [0], [dnl
> > +# Extended registers 0 and 1.
> > +OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
> > +
> > +# Registers 0, 1, and 2.
> > +# (OpenFlow 1.5 transforms these into the standard "xregs".)
> > +OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
> > +OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
> > +OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
> > +OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), 
> > OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
> > +], [])
> > +AT_CLEANUP
> > +
> > AT_SETUP([ovs-ofctl parse-oxm loose])
> > AT_KEYWORDS([oxm])
> > AT_DATA([oxm.txt], [dnl
> > -- 
> > 1.9.1
> > 
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to