On Wed, Jul 24, 2019 at 02:53:41PM +0200, Jiri Pirko wrote:
> Mon, Jul 22, 2019 at 08:31:32PM CEST, ido...@idosch.org wrote:
> >+static const struct net_dm_alert_ops *net_dm_alert_ops_arr[] = {
> >+    [NET_DM_ALERT_MODE_SUMMARY]     = &net_dm_alert_summary_ops,
> >+    [NET_DM_ALERT_MODE_PACKET]      = &net_dm_alert_packet_ops,
> >+};
> 
> Please split this patch into 2:
> 1) introducing the ops and modes (only summary)
> 2) introducing the packet mode

Ack

...

> >+static int net_dm_alert_mode_set(struct genl_info *info)
> >+{
> >+    struct netlink_ext_ack *extack = info->extack;
> >+    enum net_dm_alert_mode alert_mode;
> >+    int rc;
> >+
> >+    if (!info->attrs[NET_DM_ATTR_ALERT_MODE])
> >+            return 0;
> >+
> >+    rc = net_dm_alert_mode_get_from_info(info, &alert_mode);
> >+    if (rc) {
> >+            NL_SET_ERR_MSG_MOD(extack, "Invalid alert mode");
> >+            return -EINVAL;
> >+    }
> >+
> >+    net_dm_alert_mode = alert_mode;
> 
> 2 things:
> 1) Shouldn't you check if the tracing is on and return -EBUSY in case it is?

I'm doing it below in net_dm_cmd_config() :)
But I'm returning '-EOPNOTSUPP'. I guess '-EBUSY' is more appropriate.
Will change.

> 2) You setup the mode globally. I guess it is fine and it does not make
>    sense to do it otherwise, right? Like per-net or something.

Yes, it's global. I didn't change that aspect of drop monitor and I
don't really see a use case for that.

> 
> 
> >+
> >+    return 0;
> >+}
> >+
> > static int net_dm_cmd_config(struct sk_buff *skb,
> >                     struct genl_info *info)
> > {
> >-    NL_SET_ERR_MSG_MOD(info->extack, "Command not supported");
> >+    struct netlink_ext_ack *extack = info->extack;
> >+    int rc;
> > 
> >-    return -EOPNOTSUPP;
> >+    if (trace_state == TRACE_ON) {
> >+            NL_SET_ERR_MSG_MOD(extack, "Cannot configure drop monitor while 
> >tracing is on");
> >+            return -EOPNOTSUPP;
> >+    }
> >+
> >+    rc = net_dm_alert_mode_set(info);
> >+    if (rc)
> >+            return rc;
> >+
> >+    return 0;
> > }

Reply via email to