Lines Matching defs:devlink

7 #include <trace/events/devlink.h>
24 * Describes packet trap policer attributes. Created by devlink during trap
41 * Describes packet trap group attributes. Created by devlink during trap
61 * devlink during trap registration and used for all trap related operations.
73 devlink_trap_policer_item_lookup(struct devlink *devlink, u32 id)
77 list_for_each_entry(policer_item, &devlink->trap_policer_list, list) {
86 devlink_trap_item_lookup(struct devlink *devlink, const char *name)
90 list_for_each_entry(trap_item, &devlink->trap_list, list) {
99 devlink_trap_item_get_from_info(struct devlink *devlink,
108 return devlink_trap_item_lookup(devlink, nla_data(attr));
211 static int devlink_trap_stats_put(struct sk_buff *msg, struct devlink *devlink,
219 if (devlink->ops->trap_drop_counter_get) {
220 err = devlink->ops->trap_drop_counter_get(devlink,
233 if (devlink->ops->trap_drop_counter_get &&
257 static int devlink_nl_trap_fill(struct sk_buff *msg, struct devlink *devlink,
270 if (devlink_nl_put_handle(msg, devlink))
294 err = devlink_trap_stats_put(msg, devlink, trap_item);
310 struct devlink *devlink = info->user_ptr[0];
315 if (list_empty(&devlink->trap_list))
318 trap_item = devlink_trap_item_get_from_info(devlink, info);
328 err = devlink_nl_trap_fill(msg, devlink, trap_item,
342 struct devlink *devlink,
350 list_for_each_entry(trap_item, &devlink->trap_list, list) {
355 err = devlink_nl_trap_fill(msg, devlink, trap_item,
374 static int __devlink_trap_action_set(struct devlink *devlink,
387 err = devlink->ops->trap_action_set(devlink, trap_item->trap,
397 static int devlink_trap_action_set(struct devlink *devlink,
413 return __devlink_trap_action_set(devlink, trap_item, trap_action,
420 struct devlink *devlink = info->user_ptr[0];
423 if (list_empty(&devlink->trap_list))
426 trap_item = devlink_trap_item_get_from_info(devlink, info);
432 return devlink_trap_action_set(devlink, trap_item, info);
436 devlink_trap_group_item_lookup(struct devlink *devlink, const char *name)
440 list_for_each_entry(group_item, &devlink->trap_group_list, list) {
449 devlink_trap_group_item_lookup_by_id(struct devlink *devlink, u16 id)
453 list_for_each_entry(group_item, &devlink->trap_group_list, list) {
462 devlink_trap_group_item_get_from_info(struct devlink *devlink,
471 return devlink_trap_group_item_lookup(devlink, name);
475 devlink_nl_trap_group_fill(struct sk_buff *msg, struct devlink *devlink,
487 if (devlink_nl_put_handle(msg, devlink))
519 struct devlink *devlink = info->user_ptr[0];
524 if (list_empty(&devlink->trap_group_list))
527 group_item = devlink_trap_group_item_get_from_info(devlink, info);
537 err = devlink_nl_trap_group_fill(msg, devlink, group_item,
551 struct devlink *devlink,
560 list_for_each_entry(group_item, &devlink->trap_group_list, list) {
565 err = devlink_nl_trap_group_fill(msg, devlink, group_item,
586 __devlink_trap_group_action_set(struct devlink *devlink,
595 if (devlink->ops->trap_group_action_set) {
596 err = devlink->ops->trap_group_action_set(devlink, group_item->group,
601 list_for_each_entry(trap_item, &devlink->trap_list, list) {
613 list_for_each_entry(trap_item, &devlink->trap_list, list) {
616 err = __devlink_trap_action_set(devlink, trap_item,
626 devlink_trap_group_action_set(struct devlink *devlink,
642 err = __devlink_trap_group_action_set(devlink, group_item, trap_action,
652 static int devlink_trap_group_set(struct devlink *devlink,
666 if (!devlink->ops->trap_group_set)
670 policer_item = devlink_trap_policer_item_lookup(devlink, policer_id);
677 err = devlink->ops->trap_group_set(devlink, group_item->group, policer,
691 struct devlink *devlink = info->user_ptr[0];
696 if (list_empty(&devlink->trap_group_list))
699 group_item = devlink_trap_group_item_get_from_info(devlink, info);
705 err = devlink_trap_group_action_set(devlink, group_item, info,
710 err = devlink_trap_group_set(devlink, group_item, info);
723 devlink_trap_policer_item_get_from_info(struct devlink *devlink,
732 return devlink_trap_policer_item_lookup(devlink, id);
736 devlink_trap_policer_stats_put(struct sk_buff *msg, struct devlink *devlink,
743 if (!devlink->ops->trap_policer_counter_get)
746 err = devlink->ops->trap_policer_counter_get(devlink, policer, &drops);
768 devlink_nl_trap_policer_fill(struct sk_buff *msg, struct devlink *devlink,
780 if (devlink_nl_put_handle(msg, devlink))
795 err = devlink_trap_policer_stats_put(msg, devlink,
814 struct devlink *devlink = info->user_ptr[0];
818 if (list_empty(&devlink->trap_policer_list))
821 policer_item = devlink_trap_policer_item_get_from_info(devlink, info);
831 err = devlink_nl_trap_policer_fill(msg, devlink, policer_item,
845 struct devlink *devlink,
854 list_for_each_entry(policer_item, &devlink->trap_policer_list, list) {
859 err = devlink_nl_trap_policer_fill(msg, devlink, policer_item,
880 devlink_trap_policer_set(struct devlink *devlink,
918 err = devlink->ops->trap_policer_set(devlink, policer_item->policer,
934 struct devlink *devlink = info->user_ptr[0];
936 if (list_empty(&devlink->trap_policer_list))
939 if (!devlink->ops->trap_policer_set)
942 policer_item = devlink_trap_policer_item_get_from_info(devlink, info);
948 return devlink_trap_policer_set(devlink, policer_item, info);
1168 devlink_trap_group_notify(struct devlink *devlink,
1177 if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
1184 err = devlink_nl_trap_group_fill(msg, devlink, group_item, cmd, 0, 0,
1191 genlmsg_multicast_netns(&devlink_nl_family, devlink_net(devlink),
1195 void devlink_trap_groups_notify_register(struct devlink *devlink)
1199 list_for_each_entry(group_item, &devlink->trap_group_list, list)
1200 devlink_trap_group_notify(devlink, group_item,
1204 void devlink_trap_groups_notify_unregister(struct devlink *devlink)
1208 list_for_each_entry_reverse(group_item, &devlink->trap_group_list, list)
1209 devlink_trap_group_notify(devlink, group_item,
1214 devlink_trap_item_group_link(struct devlink *devlink,
1220 group_item = devlink_trap_group_item_lookup_by_id(devlink, group_id);
1229 static void devlink_trap_notify(struct devlink *devlink,
1238 if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
1245 err = devlink_nl_trap_fill(msg, devlink, trap_item, cmd, 0, 0, 0);
1251 genlmsg_multicast_netns(&devlink_nl_family, devlink_net(devlink),
1255 void devlink_traps_notify_register(struct devlink *devlink)
1259 list_for_each_entry(trap_item, &devlink->trap_list, list)
1260 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_NEW);
1263 void devlink_traps_notify_unregister(struct devlink *devlink)
1267 list_for_each_entry_reverse(trap_item, &devlink->trap_list, list)
1268 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_DEL);
1272 devlink_trap_register(struct devlink *devlink,
1278 if (devlink_trap_item_lookup(devlink, trap->name))
1295 err = devlink_trap_item_group_link(devlink, trap_item);
1299 err = devlink->ops->trap_init(devlink, trap, trap_item);
1303 list_add_tail(&trap_item->list, &devlink->trap_list);
1304 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_NEW);
1316 static void devlink_trap_unregister(struct devlink *devlink,
1321 trap_item = devlink_trap_item_lookup(devlink, trap->name);
1325 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_DEL);
1327 if (devlink->ops->trap_fini)
1328 devlink->ops->trap_fini(devlink, trap, trap_item);
1333 static void devlink_trap_disable(struct devlink *devlink,
1338 trap_item = devlink_trap_item_lookup(devlink, trap->name);
1342 devlink->ops->trap_action_set(devlink, trap, DEVLINK_TRAP_ACTION_DROP,
1348 * devl_traps_register - Register packet traps with devlink.
1349 * @devlink: devlink.
1356 int devl_traps_register(struct devlink *devlink,
1362 if (!devlink->ops->trap_init || !devlink->ops->trap_action_set)
1365 devl_assert_locked(devlink);
1373 err = devlink_trap_register(devlink, trap, priv);
1383 devlink_trap_unregister(devlink, &traps[i]);
1389 * devlink_traps_register - Register packet traps with devlink.
1390 * @devlink: devlink.
1395 * Context: Takes and release devlink->lock <mutex>.
1399 int devlink_traps_register(struct devlink *devlink,
1405 devl_lock(devlink);
1406 err = devl_traps_register(devlink, traps, traps_count, priv);
1407 devl_unlock(devlink);
1413 * devl_traps_unregister - Unregister packet traps from devlink.
1414 * @devlink: devlink.
1418 void devl_traps_unregister(struct devlink *devlink,
1424 devl_assert_locked(devlink);
1429 devlink_trap_disable(devlink, &traps[i]);
1432 devlink_trap_unregister(devlink, &traps[i]);
1437 * devlink_traps_unregister - Unregister packet traps from devlink.
1438 * @devlink: devlink.
1442 * Context: Takes and release devlink->lock <mutex>.
1444 void devlink_traps_unregister(struct devlink *devlink,
1448 devl_lock(devlink);
1449 devl_traps_unregister(devlink, traps, traps_count);
1450 devl_unlock(devlink);
1486 * @devlink: devlink.
1489 * @in_devlink_port: Input devlink port.
1492 void devlink_trap_report(struct devlink *devlink, struct sk_buff *skb,
1507 trace_devlink_trap_report(devlink, skb, &metadata);
1527 devlink_trap_group_item_policer_link(struct devlink *devlink,
1536 policer_item = devlink_trap_policer_item_lookup(devlink, policer_id);
1546 devlink_trap_group_register(struct devlink *devlink,
1552 if (devlink_trap_group_item_lookup(devlink, group->name))
1567 err = devlink_trap_group_item_policer_link(devlink, group_item);
1571 if (devlink->ops->trap_group_init) {
1572 err = devlink->ops->trap_group_init(devlink, group);
1577 list_add_tail(&group_item->list, &devlink->trap_group_list);
1578 devlink_trap_group_notify(devlink, group_item,
1592 devlink_trap_group_unregister(struct devlink *devlink,
1597 group_item = devlink_trap_group_item_lookup(devlink, group->name);
1601 devlink_trap_group_notify(devlink, group_item,
1609 * devl_trap_groups_register - Register packet trap groups with devlink.
1610 * @devlink: devlink.
1616 int devl_trap_groups_register(struct devlink *devlink,
1622 devl_assert_locked(devlink);
1630 err = devlink_trap_group_register(devlink, group);
1640 devlink_trap_group_unregister(devlink, &groups[i]);
1646 * devlink_trap_groups_register - Register packet trap groups with devlink.
1647 * @devlink: devlink.
1651 * Context: Takes and release devlink->lock <mutex>.
1655 int devlink_trap_groups_register(struct devlink *devlink,
1661 devl_lock(devlink);
1662 err = devl_trap_groups_register(devlink, groups, groups_count);
1663 devl_unlock(devlink);
1669 * devl_trap_groups_unregister - Unregister packet trap groups from devlink.
1670 * @devlink: devlink.
1674 void devl_trap_groups_unregister(struct devlink *devlink,
1680 devl_assert_locked(devlink);
1682 devlink_trap_group_unregister(devlink, &groups[i]);
1687 * devlink_trap_groups_unregister - Unregister packet trap groups from devlink.
1688 * @devlink: devlink.
1692 * Context: Takes and release devlink->lock <mutex>.
1694 void devlink_trap_groups_unregister(struct devlink *devlink,
1698 devl_lock(devlink);
1699 devl_trap_groups_unregister(devlink, groups, groups_count);
1700 devl_unlock(devlink);
1705 devlink_trap_policer_notify(struct devlink *devlink,
1714 if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
1721 err = devlink_nl_trap_policer_fill(msg, devlink, policer_item, cmd, 0,
1728 genlmsg_multicast_netns(&devlink_nl_family, devlink_net(devlink),
1732 void devlink_trap_policers_notify_register(struct devlink *devlink)
1736 list_for_each_entry(policer_item, &devlink->trap_policer_list, list)
1737 devlink_trap_policer_notify(devlink, policer_item,
1741 void devlink_trap_policers_notify_unregister(struct devlink *devlink)
1745 list_for_each_entry_reverse(policer_item, &devlink->trap_policer_list,
1747 devlink_trap_policer_notify(devlink, policer_item,
1752 devlink_trap_policer_register(struct devlink *devlink,
1758 if (devlink_trap_policer_item_lookup(devlink, policer->id))
1769 if (devlink->ops->trap_policer_init) {
1770 err = devlink->ops->trap_policer_init(devlink, policer);
1775 list_add_tail(&policer_item->list, &devlink->trap_policer_list);
1776 devlink_trap_policer_notify(devlink, policer_item,
1787 devlink_trap_policer_unregister(struct devlink *devlink,
1792 policer_item = devlink_trap_policer_item_lookup(devlink, policer->id);
1796 devlink_trap_policer_notify(devlink, policer_item,
1799 if (devlink->ops->trap_policer_fini)
1800 devlink->ops->trap_policer_fini(devlink, policer);
1805 * devl_trap_policers_register - Register packet trap policers with devlink.
1806 * @devlink: devlink.
1813 devl_trap_policers_register(struct devlink *devlink,
1819 devl_assert_locked(devlink);
1830 err = devlink_trap_policer_register(devlink, policer);
1839 devlink_trap_policer_unregister(devlink, &policers[i]);
1845 * devl_trap_policers_unregister - Unregister packet trap policers from devlink.
1846 * @devlink: devlink.
1851 devl_trap_policers_unregister(struct devlink *devlink,
1857 devl_assert_locked(devlink);
1859 devlink_trap_policer_unregister(devlink, &policers[i]);