netdevsim: Explicitly register packet trap groups
authorIdo Schimmel <idosch@mellanox.com>
Sun, 22 Mar 2020 18:48:28 +0000 (20:48 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Mar 2020 04:40:40 +0000 (21:40 -0700)
Use the previously added API to explicitly register / unregister
supported packet trap groups. This is in preparation for future patches
that will enable drivers to pass additional group attributes, such as
associated policer identifier.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netdevsim/dev.c

index f81c473..edeb61d 100644 (file)
@@ -397,6 +397,13 @@ enum {
                            DEVLINK_TRAP_GROUP_GENERIC(_group_id),            \
                            NSIM_TRAP_METADATA)
 
+static const struct devlink_trap_group nsim_trap_groups_arr[] = {
+       DEVLINK_TRAP_GROUP_GENERIC(L2_DROPS),
+       DEVLINK_TRAP_GROUP_GENERIC(L3_DROPS),
+       DEVLINK_TRAP_GROUP_GENERIC(BUFFER_DROPS),
+       DEVLINK_TRAP_GROUP_GENERIC(ACL_DROPS),
+};
+
 static const struct devlink_trap nsim_traps_arr[] = {
        NSIM_TRAP_DROP(SMAC_MC, L2_DROPS),
        NSIM_TRAP_DROP(VLAN_TAG_MISMATCH, L2_DROPS),
@@ -556,10 +563,15 @@ static int nsim_dev_traps_init(struct devlink *devlink)
        nsim_trap_data->nsim_dev = nsim_dev;
        nsim_dev->trap_data = nsim_trap_data;
 
+       err = devlink_trap_groups_register(devlink, nsim_trap_groups_arr,
+                                          ARRAY_SIZE(nsim_trap_groups_arr));
+       if (err)
+               goto err_trap_items_free;
+
        err = devlink_traps_register(devlink, nsim_traps_arr,
                                     ARRAY_SIZE(nsim_traps_arr), NULL);
        if (err)
-               goto err_trap_items_free;
+               goto err_trap_groups_unregister;
 
        INIT_DELAYED_WORK(&nsim_dev->trap_data->trap_report_dw,
                          nsim_dev_trap_report_work);
@@ -568,6 +580,9 @@ static int nsim_dev_traps_init(struct devlink *devlink)
 
        return 0;
 
+err_trap_groups_unregister:
+       devlink_trap_groups_unregister(devlink, nsim_trap_groups_arr,
+                                      ARRAY_SIZE(nsim_trap_groups_arr));
 err_trap_items_free:
        kfree(nsim_trap_data->trap_items_arr);
 err_trap_data_free:
@@ -582,6 +597,8 @@ static void nsim_dev_traps_exit(struct devlink *devlink)
        cancel_delayed_work_sync(&nsim_dev->trap_data->trap_report_dw);
        devlink_traps_unregister(devlink, nsim_traps_arr,
                                 ARRAY_SIZE(nsim_traps_arr));
+       devlink_trap_groups_unregister(devlink, nsim_trap_groups_arr,
+                                      ARRAY_SIZE(nsim_trap_groups_arr));
        kfree(nsim_dev->trap_data->trap_items_arr);
        kfree(nsim_dev->trap_data);
 }