Lines Matching +refs:trap +refs:policer +refs:id +refs:attrs

28 	const struct devlink_trap_policer *policer;  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()
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()
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()
500 group_item->policer_item->policer->id)) in devlink_nl_trap_group_fill()
605 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP) in __devlink_trap_group_action_set()
633 if (!info->attrs[DEVLINK_ATTR_TRAP_ACTION]) in devlink_trap_group_action_set()
658 const struct devlink_trap_policer *policer; in devlink_trap_group_set() local
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()
675 policer = policer_item ? policer_item->policer : NULL; 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()
737 const struct devlink_trap_policer *policer) in devlink_trap_policer_stats_put() argument
746 err = devlink->ops->trap_policer_counter_get(devlink, policer, &drops); in devlink_trap_policer_stats_put()
784 policer_item->policer->id)) in devlink_nl_trap_policer_fill()
796 policer_item->policer); 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()
898 if (rate < policer_item->policer->min_rate) { in devlink_trap_policer_set()
903 if (rate > policer_item->policer->max_rate) { in devlink_trap_policer_set()
908 if (burst < policer_item->policer->min_burst) { in devlink_trap_policer_set()
913 if (burst > policer_item->policer->max_burst) { in devlink_trap_policer_set()
918 err = devlink->ops->trap_policer_set(devlink, policer_item->policer, 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()
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()
1148 if (group->id <= DEVLINK_TRAP_GROUP_GENERIC_ID_MAX) in devlink_trap_group_driver_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()
1476 metadata->trap_type = trap_item->trap->type; in devlink_trap_report_metadata_set()
1753 const struct devlink_trap_policer *policer) in devlink_trap_policer_register() argument
1758 if (devlink_trap_policer_item_lookup(devlink, policer->id)) in devlink_trap_policer_register()
1765 policer_item->policer = policer; in devlink_trap_policer_register()
1766 policer_item->rate = policer->init_rate; in devlink_trap_policer_register()
1767 policer_item->burst = policer->init_burst; in devlink_trap_policer_register()
1770 err = devlink->ops->trap_policer_init(devlink, policer); in devlink_trap_policer_register()
1788 const struct devlink_trap_policer *policer) in devlink_trap_policer_unregister() argument
1792 policer_item = devlink_trap_policer_item_lookup(devlink, policer->id); in devlink_trap_policer_unregister()
1800 devlink->ops->trap_policer_fini(devlink, policer); in devlink_trap_policer_unregister()
1821 const struct devlink_trap_policer *policer = &policers[i]; in devl_trap_policers_register() local
1823 if (WARN_ON(policer->id == 0 || in devl_trap_policers_register()
1824 policer->max_rate < policer->min_rate || in devl_trap_policers_register()
1825 policer->max_burst < policer->min_burst)) { in devl_trap_policers_register()
1830 err = devlink_trap_policer_register(devlink, policer); in devl_trap_policers_register()