[ovs-dev] [PATCH] datapath: meter: Fix setting meter id for new entries

Ben Pfaff blp at ovn.org
Wed Aug 8 15:12:07 UTC 2018


Justin, I already applied this as a straightforward backport.  Hope it
doesn't disrupt your work.

On Tue, Aug 07, 2018 at 08:31:35PM -0700, Justin Pettit wrote:
> Thanks, Greg. I actually have this queued up with another patch that will disable meters entirely on broken kernels. I plan to send that out tomorrow. 
> 
> --Justin
> 
> 
> > On Aug 7, 2018, at 4:45 PM, Greg Rose <gvrose8192 at gmail.com> wrote:
> > 
> > From: Justin Pettit <jpettit at ovn.org>
> > 
> > Upstream commit:
> >    From: Justin Pettit <jpettit at ovn.org>
> >    Date: Sat, 28 Jul 2018 15:26:01 -0700
> >    Subject: [PATCH] openvswitch: meter: Fix setting meter id for new entries
> > 
> >    The meter code would create an entry for each new meter.  However, it
> >    would not set the meter id in the new entry, so every meter would appear
> >    to have a meter id of zero.  This commit properly sets the meter id when
> >    adding the entry.
> > 
> >    Fixes: 96fbc13d7e77 ("openvswitch: Add meter infrastructure")
> >    Signed-off-by: Justin Pettit <jpettit at ovn.org>
> >    Cc: Andy Zhou <azhou at ovn.org>
> >    Signed-off-by: David S. Miller <davem at davemloft.net>
> > 
> > Cc: Justin Pettit <jpettit at ovn.org>
> > Signed-off-by: Greg Rose <gvrose8192 at gmail.com>
> > ---
> > datapath/meter.c | 10 +++++-----
> > 1 file changed, 5 insertions(+), 5 deletions(-)
> > 
> > diff --git a/datapath/meter.c b/datapath/meter.c
> > index 1c2ed46..281d869 100644
> > --- a/datapath/meter.c
> > +++ b/datapath/meter.c
> > @@ -221,6 +221,7 @@ static struct dp_meter *dp_meter_create(struct nlattr **a)
> >    if (!meter)
> >        return ERR_PTR(-ENOMEM);
> > 
> > +    meter->id = nla_get_u32(a[OVS_METER_ATTR_ID]);
> >    meter->used = div_u64(ktime_get_ns(), 1000 * 1000);
> >    meter->kbps = a[OVS_METER_ATTR_KBPS] ? 1 : 0;
> >    meter->keep_stats = !a[OVS_METER_ATTR_CLEAR];
> > @@ -290,6 +291,10 @@ static int ovs_meter_cmd_set(struct sk_buff *skb, struct genl_info *info)
> >    u32 meter_id;
> >    bool failed;
> > 
> > +    if (!a[OVS_METER_ATTR_ID]) {
> > +        return -ENODEV;
> > +    }
> > +
> >    meter = dp_meter_create(a);
> >    if (IS_ERR_OR_NULL(meter))
> >        return PTR_ERR(meter);
> > @@ -308,11 +313,6 @@ static int ovs_meter_cmd_set(struct sk_buff *skb, struct genl_info *info)
> >        goto exit_unlock;
> >    }
> > 
> > -    if (!a[OVS_METER_ATTR_ID]) {
> > -        err = -ENODEV;
> > -        goto exit_unlock;
> > -    }
> > -
> >    meter_id = nla_get_u32(a[OVS_METER_ATTR_ID]);
> > 
> >    /* Cannot fail after this. */
> > -- 
> > 1.8.3.1
> > 
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev


More information about the dev mailing list