On 8/7/2018 8:31 PM, 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

Oops - perhaps I was a bit hasty.  I was just trying to get caught up with upstream.

Apologies if I interrupted your work flow.

- Greg



On Aug 7, 2018, at 4:45 PM, Greg Rose <[email protected]> wrote:

From: Justin Pettit <[email protected]>

Upstream commit:
    From: Justin Pettit <[email protected]>
    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 <[email protected]>
    Cc: Andy Zhou <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>

Cc: Justin Pettit <[email protected]>
Signed-off-by: Greg Rose <[email protected]>
---
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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to