|
@@ -211,6 +211,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];
|
|
@@ -280,6 +281,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);
|
|
@@ -298,11 +303,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. */
|