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()
725 u32 id; in devlink_trap_policer_item_get_from_info() local
727 if (!info->attrs[DEVLINK_ATTR_TRAP_POLICER_ID]) in devlink_trap_policer_item_get_from_info()
729 id = nla_get_u32(info->attrs[DEVLINK_ATTR_TRAP_POLICER_ID]); in devlink_trap_policer_item_get_from_info()
731 return devlink_trap_policer_item_lookup(devlink, id); in devlink_trap_policer_item_get_from_info()
783 policer_item->policer->id)) in devlink_nl_trap_policer_fill()
884 struct nlattr **attrs = info->attrs; in devlink_trap_policer_set() local
891 if (attrs[DEVLINK_ATTR_TRAP_POLICER_RATE]) in devlink_trap_policer_set()
892 rate = nla_get_u64(attrs[DEVLINK_ATTR_TRAP_POLICER_RATE]); in devlink_trap_policer_set()
894 if (attrs[DEVLINK_ATTR_TRAP_POLICER_BURST]) in devlink_trap_policer_set()
895 burst = nla_get_u64(attrs[DEVLINK_ATTR_TRAP_POLICER_BURST]); in devlink_trap_policer_set()
953 .id = DEVLINK_TRAP_GENERIC_ID_##_id, \
1056 .id = DEVLINK_TRAP_GROUP_GENERIC_ID_##_id, \
1090 static int devlink_trap_generic_verify(const struct devlink_trap *trap) in devlink_trap_generic_verify() argument
1092 if (trap->id > DEVLINK_TRAP_GENERIC_ID_MAX) in devlink_trap_generic_verify()
1095 if (strcmp(trap->name, devlink_trap_generic[trap->id].name)) in devlink_trap_generic_verify()
1098 if (trap->type != devlink_trap_generic[trap->id].type) in devlink_trap_generic_verify()
1104 static int devlink_trap_driver_verify(const struct devlink_trap *trap) in devlink_trap_driver_verify() argument
1108 if (trap->id <= DEVLINK_TRAP_GENERIC_ID_MAX) in devlink_trap_driver_verify()
1112 if (!strcmp(trap->name, devlink_trap_generic[i].name)) in devlink_trap_driver_verify()
1119 static int devlink_trap_verify(const struct devlink_trap *trap) in devlink_trap_verify() argument
1121 if (!trap || !trap->name) in devlink_trap_verify()
1124 if (trap->generic) in devlink_trap_verify()
1125 return devlink_trap_generic_verify(trap); in devlink_trap_verify()
1127 return devlink_trap_driver_verify(trap); in devlink_trap_verify()
1131 devlink_trap_group_generic_verify(const struct devlink_trap_group *group) in devlink_trap_group_generic_verify() argument
1133 if (group->id > DEVLINK_TRAP_GROUP_GENERIC_ID_MAX) in devlink_trap_group_generic_verify()
1136 if (strcmp(group->name, devlink_trap_group_generic[group->id].name)) in devlink_trap_group_generic_verify()
1143 devlink_trap_group_driver_verify(const struct devlink_trap_group *group) in devlink_trap_group_driver_verify() argument
1147 if (group->id <= DEVLINK_TRAP_GROUP_GENERIC_ID_MAX) in devlink_trap_group_driver_verify()
1151 if (!strcmp(group->name, devlink_trap_group_generic[i].name)) in devlink_trap_group_driver_verify()
1158 static int devlink_trap_group_verify(const struct devlink_trap_group *group) in devlink_trap_group_verify() argument
1160 if (group->generic) in devlink_trap_group_verify()
1161 return devlink_trap_group_generic_verify(group); in devlink_trap_group_verify()
1163 return devlink_trap_group_driver_verify(group); in devlink_trap_group_verify()
1216 u16 group_id = trap_item->trap->init_group_id; in devlink_trap_item_group_link()
1272 const struct devlink_trap *trap, void *priv) in devlink_trap_register() argument
1277 if (devlink_trap_item_lookup(devlink, trap->name)) in devlink_trap_register()
1290 trap_item->trap = trap; in devlink_trap_register()
1291 trap_item->action = trap->init_action; in devlink_trap_register()
1298 err = devlink->ops->trap_init(devlink, trap, trap_item); in devlink_trap_register()
1316 const struct devlink_trap *trap) in devlink_trap_unregister() argument
1320 trap_item = devlink_trap_item_lookup(devlink, trap->name); in devlink_trap_unregister()
1327 devlink->ops->trap_fini(devlink, trap, trap_item); in devlink_trap_unregister()
1333 const struct devlink_trap *trap) in devlink_trap_disable() argument
1337 trap_item = devlink_trap_item_lookup(devlink, trap->name); in devlink_trap_disable()
1341 devlink->ops->trap_action_set(devlink, trap, DEVLINK_TRAP_ACTION_DROP, in devlink_trap_disable()
1366 const struct devlink_trap *trap = &traps[i]; in devl_traps_register() local
1368 err = devlink_trap_verify(trap); in devl_traps_register()
1372 err = devlink_trap_register(devlink, trap, priv); in devl_traps_register()
1472 metadata->trap_name = trap_item->trap->name; in devlink_trap_report_metadata_set()
1473 metadata->trap_group_name = trap_item->group_item->group->name; in devlink_trap_report_metadata_set()
1475 metadata->trap_type = trap_item->trap->type; in devlink_trap_report_metadata_set()
1529 u32 policer_id = group_item->group->init_policer_id; in devlink_trap_group_item_policer_link()
1546 const struct devlink_trap_group *group) in devlink_trap_group_register() argument
1551 if (devlink_trap_group_item_lookup(devlink, group->name)) in devlink_trap_group_register()
1564 group_item->group = group; in devlink_trap_group_register()
1571 err = devlink->ops->trap_group_init(devlink, group); in devlink_trap_group_register()
1592 const struct devlink_trap_group *group) in devlink_trap_group_unregister() argument
1596 group_item = devlink_trap_group_item_lookup(devlink, group->name); in devlink_trap_group_unregister()
1623 const struct devlink_trap_group *group = &groups[i]; in devl_trap_groups_register() local
1625 err = devlink_trap_group_verify(group); in devl_trap_groups_register()
1629 err = devlink_trap_group_register(devlink, group); in devl_trap_groups_register()
1757 if (devlink_trap_policer_item_lookup(devlink, policer->id)) in devlink_trap_policer_register()
1791 policer_item = devlink_trap_policer_item_lookup(devlink, policer->id); in devlink_trap_policer_unregister()
1822 if (WARN_ON(policer->id == 0 || in devl_trap_policers_register()