Lines Matching +refs:trap +refs:group +refs:id +refs:attrs
45 const struct devlink_trap_group *group; member
64 const struct devlink_trap *trap; member
73 devlink_trap_policer_item_lookup(struct devlink *devlink, u32 id) in devlink_trap_policer_item_lookup() argument
78 if (policer_item->policer->id == id) in devlink_trap_policer_item_lookup()
91 if (!strcmp(trap_item->trap->name, name)) in devlink_trap_item_lookup()
104 if (!info->attrs[DEVLINK_ATTR_TRAP_NAME]) in devlink_trap_item_get_from_info()
106 attr = info->attrs[DEVLINK_ATTR_TRAP_NAME]; in devlink_trap_item_get_from_info()
117 val = nla_get_u8(info->attrs[DEVLINK_ATTR_TRAP_ACTION]); in devlink_trap_action_get_from_info()
132 const struct devlink_trap *trap) in devlink_trap_metadata_put() argument
140 if ((trap->metadata_cap & DEVLINK_TRAP_METADATA_TYPE_F_IN_PORT) && in devlink_trap_metadata_put()
143 if ((trap->metadata_cap & DEVLINK_TRAP_METADATA_TYPE_F_FA_COOKIE) && in devlink_trap_metadata_put()
221 trap_item->trap, in devlink_trap_stats_put()
274 group_item->group->name)) in devlink_nl_trap_fill()
277 if (nla_put_string(msg, DEVLINK_ATTR_TRAP_NAME, trap_item->trap->name)) in devlink_nl_trap_fill()
280 if (nla_put_u8(msg, DEVLINK_ATTR_TRAP_TYPE, trap_item->trap->type)) in devlink_nl_trap_fill()
283 if (trap_item->trap->generic && in devlink_nl_trap_fill()
290 err = devlink_trap_metadata_put(msg, trap_item->trap); in devlink_nl_trap_fill()
382 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP) { in __devlink_trap_action_set()
387 err = devlink->ops->trap_action_set(devlink, trap_item->trap, in __devlink_trap_action_set()
404 if (!info->attrs[DEVLINK_ATTR_TRAP_ACTION]) in devlink_trap_action_set()
441 if (!strcmp(group_item->group->name, name)) in devlink_trap_group_item_lookup()
449 devlink_trap_group_item_lookup_by_id(struct devlink *devlink, u16 id) in devlink_trap_group_item_lookup_by_id() argument
454 if (group_item->group->id == id) in devlink_trap_group_item_lookup_by_id()
467 if (!info->attrs[DEVLINK_ATTR_TRAP_GROUP_NAME]) in devlink_trap_group_item_get_from_info()
469 name = nla_data(info->attrs[DEVLINK_ATTR_TRAP_GROUP_NAME]); in devlink_trap_group_item_get_from_info()
491 group_item->group->name)) in devlink_nl_trap_group_fill()
494 if (group_item->group->generic && in devlink_nl_trap_group_fill()
500 group_item->policer_item->policer->id)) in devlink_nl_trap_group_fill()
591 const char *group_name = group_item->group->name; in __devlink_trap_group_action_set()
596 err = devlink->ops->trap_group_action_set(devlink, group_item->group, in __devlink_trap_group_action_set()
602 if (strcmp(trap_item->group_item->group->name, group_name)) in __devlink_trap_group_action_set()
605 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP) in __devlink_trap_group_action_set()
614 if (strcmp(trap_item->group_item->group->name, group_name)) in __devlink_trap_group_action_set()
633 if (!info->attrs[DEVLINK_ATTR_TRAP_ACTION]) in devlink_trap_group_action_set()
659 struct nlattr **attrs = info->attrs; in devlink_trap_group_set() local
663 if (!attrs[DEVLINK_ATTR_TRAP_POLICER_ID]) in devlink_trap_group_set()
669 policer_id = nla_get_u32(attrs[DEVLINK_ATTR_TRAP_POLICER_ID]); in devlink_trap_group_set()
677 err = devlink->ops->trap_group_set(devlink, group_item->group, policer, in devlink_trap_group_set()
726 u32 id; in devlink_trap_policer_item_get_from_info() local
728 if (!info->attrs[DEVLINK_ATTR_TRAP_POLICER_ID]) in devlink_trap_policer_item_get_from_info()
730 id = nla_get_u32(info->attrs[DEVLINK_ATTR_TRAP_POLICER_ID]); in devlink_trap_policer_item_get_from_info()
732 return devlink_trap_policer_item_lookup(devlink, id); in devlink_trap_policer_item_get_from_info()
784 policer_item->policer->id)) in devlink_nl_trap_policer_fill()
885 struct nlattr **attrs = info->attrs; in devlink_trap_policer_set() local
892 if (attrs[DEVLINK_ATTR_TRAP_POLICER_RATE]) in devlink_trap_policer_set()
893 rate = nla_get_u64(attrs[DEVLINK_ATTR_TRAP_POLICER_RATE]); in devlink_trap_policer_set()
895 if (attrs[DEVLINK_ATTR_TRAP_POLICER_BURST]) in devlink_trap_policer_set()
896 burst = nla_get_u64(attrs[DEVLINK_ATTR_TRAP_POLICER_BURST]); in devlink_trap_policer_set()
954 .id = DEVLINK_TRAP_GENERIC_ID_##_id, \
1057 .id = DEVLINK_TRAP_GROUP_GENERIC_ID_##_id, \
1091 static int devlink_trap_generic_verify(const struct devlink_trap *trap) in devlink_trap_generic_verify() argument
1093 if (trap->id > DEVLINK_TRAP_GENERIC_ID_MAX) in devlink_trap_generic_verify()
1096 if (strcmp(trap->name, devlink_trap_generic[trap->id].name)) in devlink_trap_generic_verify()
1099 if (trap->type != devlink_trap_generic[trap->id].type) in devlink_trap_generic_verify()
1105 static int devlink_trap_driver_verify(const struct devlink_trap *trap) in devlink_trap_driver_verify() argument
1109 if (trap->id <= DEVLINK_TRAP_GENERIC_ID_MAX) in devlink_trap_driver_verify()
1113 if (!strcmp(trap->name, devlink_trap_generic[i].name)) in devlink_trap_driver_verify()
1120 static int devlink_trap_verify(const struct devlink_trap *trap) in devlink_trap_verify() argument
1122 if (!trap || !trap->name) in devlink_trap_verify()
1125 if (trap->generic) in devlink_trap_verify()
1126 return devlink_trap_generic_verify(trap); in devlink_trap_verify()
1128 return devlink_trap_driver_verify(trap); in devlink_trap_verify()
1132 devlink_trap_group_generic_verify(const struct devlink_trap_group *group) in devlink_trap_group_generic_verify() argument
1134 if (group->id > DEVLINK_TRAP_GROUP_GENERIC_ID_MAX) in devlink_trap_group_generic_verify()
1137 if (strcmp(group->name, devlink_trap_group_generic[group->id].name)) in devlink_trap_group_generic_verify()
1144 devlink_trap_group_driver_verify(const struct devlink_trap_group *group) in devlink_trap_group_driver_verify() argument
1148 if (group->id <= DEVLINK_TRAP_GROUP_GENERIC_ID_MAX) in devlink_trap_group_driver_verify()
1152 if (!strcmp(group->name, devlink_trap_group_generic[i].name)) in devlink_trap_group_driver_verify()
1159 static int devlink_trap_group_verify(const struct devlink_trap_group *group) in devlink_trap_group_verify() argument
1161 if (group->generic) in devlink_trap_group_verify()
1162 return devlink_trap_group_generic_verify(group); in devlink_trap_group_verify()
1164 return devlink_trap_group_driver_verify(group); in devlink_trap_group_verify()
1217 u16 group_id = trap_item->trap->init_group_id; in devlink_trap_item_group_link()
1273 const struct devlink_trap *trap, void *priv) in devlink_trap_register() argument
1278 if (devlink_trap_item_lookup(devlink, trap->name)) in devlink_trap_register()
1291 trap_item->trap = trap; in devlink_trap_register()
1292 trap_item->action = trap->init_action; in devlink_trap_register()
1299 err = devlink->ops->trap_init(devlink, trap, trap_item); in devlink_trap_register()
1317 const struct devlink_trap *trap) in devlink_trap_unregister() argument
1321 trap_item = devlink_trap_item_lookup(devlink, trap->name); in devlink_trap_unregister()
1328 devlink->ops->trap_fini(devlink, trap, trap_item); in devlink_trap_unregister()
1334 const struct devlink_trap *trap) in devlink_trap_disable() argument
1338 trap_item = devlink_trap_item_lookup(devlink, trap->name); in devlink_trap_disable()
1342 devlink->ops->trap_action_set(devlink, trap, DEVLINK_TRAP_ACTION_DROP, in devlink_trap_disable()
1367 const struct devlink_trap *trap = &traps[i]; in devl_traps_register() local
1369 err = devlink_trap_verify(trap); in devl_traps_register()
1373 err = devlink_trap_register(devlink, trap, priv); in devl_traps_register()
1473 metadata->trap_name = trap_item->trap->name; in devlink_trap_report_metadata_set()
1474 metadata->trap_group_name = trap_item->group_item->group->name; in devlink_trap_report_metadata_set()
1476 metadata->trap_type = trap_item->trap->type; in devlink_trap_report_metadata_set()
1530 u32 policer_id = group_item->group->init_policer_id; in devlink_trap_group_item_policer_link()
1547 const struct devlink_trap_group *group) in devlink_trap_group_register() argument
1552 if (devlink_trap_group_item_lookup(devlink, group->name)) in devlink_trap_group_register()
1565 group_item->group = group; in devlink_trap_group_register()
1572 err = devlink->ops->trap_group_init(devlink, group); in devlink_trap_group_register()
1593 const struct devlink_trap_group *group) in devlink_trap_group_unregister() argument
1597 group_item = devlink_trap_group_item_lookup(devlink, group->name); in devlink_trap_group_unregister()
1624 const struct devlink_trap_group *group = &groups[i]; in devl_trap_groups_register() local
1626 err = devlink_trap_group_verify(group); in devl_trap_groups_register()
1630 err = devlink_trap_group_register(devlink, group); in devl_trap_groups_register()
1758 if (devlink_trap_policer_item_lookup(devlink, policer->id)) in devlink_trap_policer_register()
1792 policer_item = devlink_trap_policer_item_lookup(devlink, policer->id); in devlink_trap_policer_unregister()
1823 if (WARN_ON(policer->id == 0 || in devl_trap_policers_register()