Lines Matching refs:trap
18 * struct devlink_trap_policer_item - Packet trap policer attributes.
19 * @policer: Immutable packet trap policer attributes.
24 * Describes packet trap policer attributes. Created by devlink during trap
35 * struct devlink_trap_group_item - Packet trap group attributes.
36 * @group: Immutable packet trap group attributes.
41 * Describes packet trap group attributes. Created by devlink during trap
52 * struct devlink_trap_item - Packet trap attributes.
53 * @trap: Immutable packet trap attributes.
60 * Describes both mutable and immutable packet trap attributes. Created by
61 * devlink during trap registration and used for all trap related operations.
64 const struct devlink_trap *trap;
91 if (!strcmp(trap_item->trap->name, name))
132 const struct devlink_trap *trap)
140 if ((trap->metadata_cap & DEVLINK_TRAP_METADATA_TYPE_F_IN_PORT) &&
143 if ((trap->metadata_cap & DEVLINK_TRAP_METADATA_TYPE_F_FA_COOKIE) &&
221 trap_item->trap,
277 if (nla_put_string(msg, DEVLINK_ATTR_TRAP_NAME, trap_item->trap->name))
280 if (nla_put_u8(msg, DEVLINK_ATTR_TRAP_TYPE, trap_item->trap->type))
283 if (trap_item->trap->generic &&
290 err = devlink_trap_metadata_put(msg, trap_item->trap);
320 NL_SET_ERR_MSG(extack, "Device did not register this trap");
382 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP) {
387 err = devlink->ops->trap_action_set(devlink, trap_item->trap,
409 NL_SET_ERR_MSG(info->extack, "Invalid trap action");
428 NL_SET_ERR_MSG(extack, "Device did not register this trap");
529 NL_SET_ERR_MSG(extack, "Device did not register this trap group");
605 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP)
638 NL_SET_ERR_MSG(info->extack, "Invalid trap action");
672 NL_SET_ERR_MSG(extack, "Device did not register this trap policer");
701 NL_SET_ERR_MSG(extack, "Device did not register this trap group");
823 NL_SET_ERR_MSG(extack, "Device did not register this trap policer");
944 NL_SET_ERR_MSG(extack, "Device did not register this trap policer");
1091 static int devlink_trap_generic_verify(const struct devlink_trap *trap)
1093 if (trap->id > DEVLINK_TRAP_GENERIC_ID_MAX)
1096 if (strcmp(trap->name, devlink_trap_generic[trap->id].name))
1099 if (trap->type != devlink_trap_generic[trap->id].type)
1105 static int devlink_trap_driver_verify(const struct devlink_trap *trap)
1109 if (trap->id <= DEVLINK_TRAP_GENERIC_ID_MAX)
1113 if (!strcmp(trap->name, devlink_trap_generic[i].name))
1120 static int devlink_trap_verify(const struct devlink_trap *trap)
1122 if (!trap || !trap->name)
1125 if (trap->generic)
1126 return devlink_trap_generic_verify(trap);
1128 return devlink_trap_driver_verify(trap);
1217 u16 group_id = trap_item->trap->init_group_id;
1273 const struct devlink_trap *trap, void *priv)
1278 if (devlink_trap_item_lookup(devlink, trap->name))
1291 trap_item->trap = trap;
1292 trap_item->action = trap->init_action;
1299 err = devlink->ops->trap_init(devlink, trap, trap_item);
1317 const struct devlink_trap *trap)
1321 trap_item = devlink_trap_item_lookup(devlink, trap->name);
1328 devlink->ops->trap_fini(devlink, trap, trap_item);
1334 const struct devlink_trap *trap)
1338 trap_item = devlink_trap_item_lookup(devlink, trap->name);
1342 devlink->ops->trap_action_set(devlink, trap, DEVLINK_TRAP_ACTION_DROP,
1367 const struct devlink_trap *trap = &traps[i];
1369 err = devlink_trap_verify(trap);
1373 err = devlink_trap_register(devlink, trap, priv);
1473 metadata->trap_name = trap_item->trap->name;
1476 metadata->trap_type = trap_item->trap->type;
1609 * devl_trap_groups_register - Register packet trap groups with devlink.
1611 * @groups: Packet trap groups.
1612 * @groups_count: Count of provided packet trap groups.
1646 * devlink_trap_groups_register - Register packet trap groups with devlink.
1648 * @groups: Packet trap groups.
1649 * @groups_count: Count of provided packet trap groups.
1669 * devl_trap_groups_unregister - Unregister packet trap groups from devlink.
1671 * @groups: Packet trap groups.
1672 * @groups_count: Count of provided packet trap groups.
1687 * devlink_trap_groups_unregister - Unregister packet trap groups from devlink.
1689 * @groups: Packet trap groups.
1690 * @groups_count: Count of provided packet trap groups.
1805 * devl_trap_policers_register - Register packet trap policers with devlink.
1807 * @policers: Packet trap policers.
1808 * @policers_count: Count of provided packet trap policers.
1845 * devl_trap_policers_unregister - Unregister packet trap policers from devlink.
1847 * @policers: Packet trap policers.
1848 * @policers_count: Count of provided packet trap policers.