Lines Matching defs: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) &&
219 trap_item->trap,
272 if (nla_put_string(msg, DEVLINK_ATTR_TRAP_NAME, trap_item->trap->name))
275 if (nla_put_u8(msg, DEVLINK_ATTR_TRAP_TYPE, trap_item->trap->type))
278 if (trap_item->trap->generic &&
285 err = devlink_trap_metadata_put(msg, trap_item->trap);
315 NL_SET_ERR_MSG(extack, "Device did not register this trap");
377 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP) {
382 err = devlink->ops->trap_action_set(devlink, trap_item->trap,
404 NL_SET_ERR_MSG(info->extack, "Invalid trap action");
423 NL_SET_ERR_MSG(extack, "Device did not register this trap");
524 NL_SET_ERR_MSG(extack, "Device did not register this trap group");
600 trap_item->trap->type != DEVLINK_TRAP_TYPE_DROP)
633 NL_SET_ERR_MSG(info->extack, "Invalid trap action");
667 NL_SET_ERR_MSG(extack, "Device did not register this trap policer");
695 NL_SET_ERR_MSG(extack, "Device did not register this trap group");
816 NL_SET_ERR_MSG(extack, "Device did not register this trap policer");
937 NL_SET_ERR_MSG(extack, "Device did not register this trap policer");
1084 static int devlink_trap_generic_verify(const struct devlink_trap *trap)
1086 if (trap->id > DEVLINK_TRAP_GENERIC_ID_MAX)
1089 if (strcmp(trap->name, devlink_trap_generic[trap->id].name))
1092 if (trap->type != devlink_trap_generic[trap->id].type)
1098 static int devlink_trap_driver_verify(const struct devlink_trap *trap)
1102 if (trap->id <= DEVLINK_TRAP_GENERIC_ID_MAX)
1106 if (!strcmp(trap->name, devlink_trap_generic[i].name))
1113 static int devlink_trap_verify(const struct devlink_trap *trap)
1115 if (!trap || !trap->name)
1118 if (trap->generic)
1119 return devlink_trap_generic_verify(trap);
1121 return devlink_trap_driver_verify(trap);
1210 u16 group_id = trap_item->trap->init_group_id;
1266 const struct devlink_trap *trap, void *priv)
1271 if (devlink_trap_item_lookup(devlink, trap->name))
1284 trap_item->trap = trap;
1285 trap_item->action = trap->init_action;
1292 err = devlink->ops->trap_init(devlink, trap, trap_item);
1310 const struct devlink_trap *trap)
1314 trap_item = devlink_trap_item_lookup(devlink, trap->name);
1321 devlink->ops->trap_fini(devlink, trap, trap_item);
1327 const struct devlink_trap *trap)
1331 trap_item = devlink_trap_item_lookup(devlink, trap->name);
1335 devlink->ops->trap_action_set(devlink, trap, DEVLINK_TRAP_ACTION_DROP,
1360 const struct devlink_trap *trap = &traps[i];
1362 err = devlink_trap_verify(trap);
1366 err = devlink_trap_register(devlink, trap, priv);
1466 metadata->trap_name = trap_item->trap->name;
1469 metadata->trap_type = trap_item->trap->type;
1602 * devl_trap_groups_register - Register packet trap groups with devlink.
1604 * @groups: Packet trap groups.
1605 * @groups_count: Count of provided packet trap groups.
1639 * devlink_trap_groups_register - Register packet trap groups with devlink.
1641 * @groups: Packet trap groups.
1642 * @groups_count: Count of provided packet trap groups.
1662 * devl_trap_groups_unregister - Unregister packet trap groups from devlink.
1664 * @groups: Packet trap groups.
1665 * @groups_count: Count of provided packet trap groups.
1680 * devlink_trap_groups_unregister - Unregister packet trap groups from devlink.
1682 * @groups: Packet trap groups.
1683 * @groups_count: Count of provided packet trap groups.
1798 * devl_trap_policers_register - Register packet trap policers with devlink.
1800 * @policers: Packet trap policers.
1801 * @policers_count: Count of provided packet trap policers.
1838 * devl_trap_policers_unregister - Unregister packet trap policers from devlink.
1840 * @policers: Packet trap policers.
1841 * @policers_count: Count of provided packet trap policers.