const struct devlink_trap_group *group,
                              const struct devlink_trap_policer *policer,
                              struct netlink_ext_ack *extack);
+       /**
+        * @trap_group_action_set: Trap group action set function.
+        *
+        * If this callback is populated, it will take precedence over looping
+        * over all traps in a group and calling .trap_action_set().
+        */
+       int (*trap_group_action_set)(struct devlink *devlink,
+                                    const struct devlink_trap_group *group,
+                                    enum devlink_trap_action action,
+                                    struct netlink_ext_ack *extack);
        /**
         * @trap_policer_init: Trap policer initialization function.
         *
 
        struct devlink_trap_item *trap_item;
        int err;
 
+       if (devlink->ops->trap_group_action_set) {
+               err = devlink->ops->trap_group_action_set(devlink, group_item->group,
+                                                         trap_action, extack);
+               if (err)
+                       return err;
+
+               list_for_each_entry(trap_item, &devlink->trap_list, list) {
+                       if (strcmp(trap_item->group_item->group->name, group_name))
+                               continue;
+                       if (trap_item->action != trap_action &&
+                           trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP)
+                               continue;
+                       trap_item->action = trap_action;
+               }
+
+               return 0;
+       }
+
        list_for_each_entry(trap_item, &devlink->trap_list, list) {
                if (strcmp(trap_item->group_item->group->name, group_name))
                        continue;