Lines Matching refs:devlink
73 devlink_trap_policer_item_lookup(struct devlink *devlink, u32 id) in devlink_trap_policer_item_lookup() argument
77 list_for_each_entry(policer_item, &devlink->trap_policer_list, list) { in devlink_trap_policer_item_lookup()
86 devlink_trap_item_lookup(struct devlink *devlink, const char *name) in devlink_trap_item_lookup() argument
90 list_for_each_entry(trap_item, &devlink->trap_list, list) { in devlink_trap_item_lookup()
99 devlink_trap_item_get_from_info(struct devlink *devlink, in devlink_trap_item_get_from_info() argument
108 return devlink_trap_item_lookup(devlink, nla_data(attr)); in devlink_trap_item_get_from_info()
209 static int devlink_trap_stats_put(struct sk_buff *msg, struct devlink *devlink, in devlink_trap_stats_put() argument
217 if (devlink->ops->trap_drop_counter_get) { in devlink_trap_stats_put()
218 err = devlink->ops->trap_drop_counter_get(devlink, in devlink_trap_stats_put()
231 if (devlink->ops->trap_drop_counter_get && in devlink_trap_stats_put()
252 static int devlink_nl_trap_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_trap_fill() argument
265 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_trap_fill()
289 err = devlink_trap_stats_put(msg, devlink, trap_item); in devlink_nl_trap_fill()
305 struct devlink *devlink = info->user_ptr[0]; in devlink_nl_trap_get_doit() local
310 if (list_empty(&devlink->trap_list)) in devlink_nl_trap_get_doit()
313 trap_item = devlink_trap_item_get_from_info(devlink, info); in devlink_nl_trap_get_doit()
323 err = devlink_nl_trap_fill(msg, devlink, trap_item, in devlink_nl_trap_get_doit()
337 struct devlink *devlink, in devlink_nl_trap_get_dump_one() argument
345 list_for_each_entry(trap_item, &devlink->trap_list, list) { in devlink_nl_trap_get_dump_one()
350 err = devlink_nl_trap_fill(msg, devlink, trap_item, in devlink_nl_trap_get_dump_one()
369 static int __devlink_trap_action_set(struct devlink *devlink, in __devlink_trap_action_set() argument
382 err = devlink->ops->trap_action_set(devlink, trap_item->trap, in __devlink_trap_action_set()
392 static int devlink_trap_action_set(struct devlink *devlink, in devlink_trap_action_set() argument
408 return __devlink_trap_action_set(devlink, trap_item, trap_action, in devlink_trap_action_set()
415 struct devlink *devlink = info->user_ptr[0]; in devlink_nl_trap_set_doit() local
418 if (list_empty(&devlink->trap_list)) in devlink_nl_trap_set_doit()
421 trap_item = devlink_trap_item_get_from_info(devlink, info); in devlink_nl_trap_set_doit()
427 return devlink_trap_action_set(devlink, trap_item, info); in devlink_nl_trap_set_doit()
431 devlink_trap_group_item_lookup(struct devlink *devlink, const char *name) in devlink_trap_group_item_lookup() argument
435 list_for_each_entry(group_item, &devlink->trap_group_list, list) { in devlink_trap_group_item_lookup()
444 devlink_trap_group_item_lookup_by_id(struct devlink *devlink, u16 id) in devlink_trap_group_item_lookup_by_id() argument
448 list_for_each_entry(group_item, &devlink->trap_group_list, list) { in devlink_trap_group_item_lookup_by_id()
457 devlink_trap_group_item_get_from_info(struct devlink *devlink, in devlink_trap_group_item_get_from_info() argument
466 return devlink_trap_group_item_lookup(devlink, name); in devlink_trap_group_item_get_from_info()
470 devlink_nl_trap_group_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_trap_group_fill() argument
482 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_trap_group_fill()
514 struct devlink *devlink = info->user_ptr[0]; in devlink_nl_trap_group_get_doit() local
519 if (list_empty(&devlink->trap_group_list)) in devlink_nl_trap_group_get_doit()
522 group_item = devlink_trap_group_item_get_from_info(devlink, info); in devlink_nl_trap_group_get_doit()
532 err = devlink_nl_trap_group_fill(msg, devlink, group_item, in devlink_nl_trap_group_get_doit()
546 struct devlink *devlink, in devlink_nl_trap_group_get_dump_one() argument
555 list_for_each_entry(group_item, &devlink->trap_group_list, list) { in devlink_nl_trap_group_get_dump_one()
560 err = devlink_nl_trap_group_fill(msg, devlink, group_item, in devlink_nl_trap_group_get_dump_one()
581 __devlink_trap_group_action_set(struct devlink *devlink, in __devlink_trap_group_action_set() argument
590 if (devlink->ops->trap_group_action_set) { in __devlink_trap_group_action_set()
591 err = devlink->ops->trap_group_action_set(devlink, group_item->group, in __devlink_trap_group_action_set()
596 list_for_each_entry(trap_item, &devlink->trap_list, list) { in __devlink_trap_group_action_set()
608 list_for_each_entry(trap_item, &devlink->trap_list, list) { in __devlink_trap_group_action_set()
611 err = __devlink_trap_action_set(devlink, trap_item, in __devlink_trap_group_action_set()
621 devlink_trap_group_action_set(struct devlink *devlink, in devlink_trap_group_action_set() argument
637 err = __devlink_trap_group_action_set(devlink, group_item, trap_action, in devlink_trap_group_action_set()
647 static int devlink_trap_group_set(struct devlink *devlink, in devlink_trap_group_set() argument
661 if (!devlink->ops->trap_group_set) in devlink_trap_group_set()
665 policer_item = devlink_trap_policer_item_lookup(devlink, policer_id); in devlink_trap_group_set()
672 err = devlink->ops->trap_group_set(devlink, group_item->group, policer, in devlink_trap_group_set()
685 struct devlink *devlink = info->user_ptr[0]; in devlink_nl_trap_group_set_doit() local
690 if (list_empty(&devlink->trap_group_list)) in devlink_nl_trap_group_set_doit()
693 group_item = devlink_trap_group_item_get_from_info(devlink, info); in devlink_nl_trap_group_set_doit()
699 err = devlink_trap_group_action_set(devlink, group_item, info, in devlink_nl_trap_group_set_doit()
704 err = devlink_trap_group_set(devlink, group_item, info); in devlink_nl_trap_group_set_doit()
717 devlink_trap_policer_item_get_from_info(struct devlink *devlink, in devlink_trap_policer_item_get_from_info() argument
726 return devlink_trap_policer_item_lookup(devlink, id); in devlink_trap_policer_item_get_from_info()
730 devlink_trap_policer_stats_put(struct sk_buff *msg, struct devlink *devlink, in devlink_trap_policer_stats_put() argument
737 if (!devlink->ops->trap_policer_counter_get) in devlink_trap_policer_stats_put()
740 err = devlink->ops->trap_policer_counter_get(devlink, policer, &drops); in devlink_trap_policer_stats_put()
761 devlink_nl_trap_policer_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_trap_policer_fill() argument
773 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_trap_policer_fill()
788 err = devlink_trap_policer_stats_put(msg, devlink, in devlink_nl_trap_policer_fill()
807 struct devlink *devlink = info->user_ptr[0]; in devlink_nl_trap_policer_get_doit() local
811 if (list_empty(&devlink->trap_policer_list)) in devlink_nl_trap_policer_get_doit()
814 policer_item = devlink_trap_policer_item_get_from_info(devlink, info); in devlink_nl_trap_policer_get_doit()
824 err = devlink_nl_trap_policer_fill(msg, devlink, policer_item, in devlink_nl_trap_policer_get_doit()
838 struct devlink *devlink, in devlink_nl_trap_policer_get_dump_one() argument
847 list_for_each_entry(policer_item, &devlink->trap_policer_list, list) { in devlink_nl_trap_policer_get_dump_one()
852 err = devlink_nl_trap_policer_fill(msg, devlink, policer_item, in devlink_nl_trap_policer_get_dump_one()
873 devlink_trap_policer_set(struct devlink *devlink, in devlink_trap_policer_set() argument
911 err = devlink->ops->trap_policer_set(devlink, policer_item->policer, in devlink_trap_policer_set()
927 struct devlink *devlink = info->user_ptr[0]; in devlink_nl_trap_policer_set_doit() local
929 if (list_empty(&devlink->trap_policer_list)) in devlink_nl_trap_policer_set_doit()
932 if (!devlink->ops->trap_policer_set) in devlink_nl_trap_policer_set_doit()
935 policer_item = devlink_trap_policer_item_get_from_info(devlink, info); in devlink_nl_trap_policer_set_doit()
941 return devlink_trap_policer_set(devlink, policer_item, info); in devlink_nl_trap_policer_set_doit()
1161 devlink_trap_group_notify(struct devlink *devlink, in devlink_trap_group_notify() argument
1171 if (!devl_is_registered(devlink) || !devlink_nl_notify_need(devlink)) in devlink_trap_group_notify()
1178 err = devlink_nl_trap_group_fill(msg, devlink, group_item, cmd, 0, 0, in devlink_trap_group_notify()
1185 devlink_nl_notify_send(devlink, msg); in devlink_trap_group_notify()
1188 void devlink_trap_groups_notify_register(struct devlink *devlink) in devlink_trap_groups_notify_register() argument
1192 list_for_each_entry(group_item, &devlink->trap_group_list, list) in devlink_trap_groups_notify_register()
1193 devlink_trap_group_notify(devlink, group_item, in devlink_trap_groups_notify_register()
1197 void devlink_trap_groups_notify_unregister(struct devlink *devlink) in devlink_trap_groups_notify_unregister() argument
1201 list_for_each_entry_reverse(group_item, &devlink->trap_group_list, list) in devlink_trap_groups_notify_unregister()
1202 devlink_trap_group_notify(devlink, group_item, in devlink_trap_groups_notify_unregister()
1207 devlink_trap_item_group_link(struct devlink *devlink, in devlink_trap_item_group_link() argument
1213 group_item = devlink_trap_group_item_lookup_by_id(devlink, group_id); in devlink_trap_item_group_link()
1222 static void devlink_trap_notify(struct devlink *devlink, in devlink_trap_notify() argument
1232 if (!devl_is_registered(devlink) || !devlink_nl_notify_need(devlink)) in devlink_trap_notify()
1239 err = devlink_nl_trap_fill(msg, devlink, trap_item, cmd, 0, 0, 0); in devlink_trap_notify()
1245 devlink_nl_notify_send(devlink, msg); in devlink_trap_notify()
1248 void devlink_traps_notify_register(struct devlink *devlink) in devlink_traps_notify_register() argument
1252 list_for_each_entry(trap_item, &devlink->trap_list, list) in devlink_traps_notify_register()
1253 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_NEW); in devlink_traps_notify_register()
1256 void devlink_traps_notify_unregister(struct devlink *devlink) in devlink_traps_notify_unregister() argument
1260 list_for_each_entry_reverse(trap_item, &devlink->trap_list, list) in devlink_traps_notify_unregister()
1261 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_DEL); in devlink_traps_notify_unregister()
1265 devlink_trap_register(struct devlink *devlink, in devlink_trap_register() argument
1271 if (devlink_trap_item_lookup(devlink, trap->name)) in devlink_trap_register()
1288 err = devlink_trap_item_group_link(devlink, trap_item); in devlink_trap_register()
1292 err = devlink->ops->trap_init(devlink, trap, trap_item); in devlink_trap_register()
1296 list_add_tail(&trap_item->list, &devlink->trap_list); in devlink_trap_register()
1297 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_NEW); in devlink_trap_register()
1309 static void devlink_trap_unregister(struct devlink *devlink, in devlink_trap_unregister() argument
1314 trap_item = devlink_trap_item_lookup(devlink, trap->name); in devlink_trap_unregister()
1318 devlink_trap_notify(devlink, trap_item, DEVLINK_CMD_TRAP_DEL); in devlink_trap_unregister()
1320 if (devlink->ops->trap_fini) in devlink_trap_unregister()
1321 devlink->ops->trap_fini(devlink, trap, trap_item); in devlink_trap_unregister()
1326 static void devlink_trap_disable(struct devlink *devlink, in devlink_trap_disable() argument
1331 trap_item = devlink_trap_item_lookup(devlink, trap->name); in devlink_trap_disable()
1335 devlink->ops->trap_action_set(devlink, trap, DEVLINK_TRAP_ACTION_DROP, in devlink_trap_disable()
1349 int devl_traps_register(struct devlink *devlink, in devl_traps_register() argument
1355 if (!devlink->ops->trap_init || !devlink->ops->trap_action_set) in devl_traps_register()
1358 devl_assert_locked(devlink); in devl_traps_register()
1366 err = devlink_trap_register(devlink, trap, priv); in devl_traps_register()
1376 devlink_trap_unregister(devlink, &traps[i]); in devl_traps_register()
1392 int devlink_traps_register(struct devlink *devlink, in devlink_traps_register() argument
1398 devl_lock(devlink); in devlink_traps_register()
1399 err = devl_traps_register(devlink, traps, traps_count, priv); in devlink_traps_register()
1400 devl_unlock(devlink); in devlink_traps_register()
1411 void devl_traps_unregister(struct devlink *devlink, in devl_traps_unregister() argument
1417 devl_assert_locked(devlink); in devl_traps_unregister()
1422 devlink_trap_disable(devlink, &traps[i]); in devl_traps_unregister()
1425 devlink_trap_unregister(devlink, &traps[i]); in devl_traps_unregister()
1437 void devlink_traps_unregister(struct devlink *devlink, in devlink_traps_unregister() argument
1441 devl_lock(devlink); in devlink_traps_unregister()
1442 devl_traps_unregister(devlink, traps, traps_count); in devlink_traps_unregister()
1443 devl_unlock(devlink); in devlink_traps_unregister()
1485 void devlink_trap_report(struct devlink *devlink, struct sk_buff *skb, in devlink_trap_report() argument
1500 trace_devlink_trap_report(devlink, skb, &metadata); in devlink_trap_report()
1520 devlink_trap_group_item_policer_link(struct devlink *devlink, in devlink_trap_group_item_policer_link() argument
1529 policer_item = devlink_trap_policer_item_lookup(devlink, policer_id); in devlink_trap_group_item_policer_link()
1539 devlink_trap_group_register(struct devlink *devlink, in devlink_trap_group_register() argument
1545 if (devlink_trap_group_item_lookup(devlink, group->name)) in devlink_trap_group_register()
1560 err = devlink_trap_group_item_policer_link(devlink, group_item); in devlink_trap_group_register()
1564 if (devlink->ops->trap_group_init) { in devlink_trap_group_register()
1565 err = devlink->ops->trap_group_init(devlink, group); in devlink_trap_group_register()
1570 list_add_tail(&group_item->list, &devlink->trap_group_list); in devlink_trap_group_register()
1571 devlink_trap_group_notify(devlink, group_item, in devlink_trap_group_register()
1585 devlink_trap_group_unregister(struct devlink *devlink, in devlink_trap_group_unregister() argument
1590 group_item = devlink_trap_group_item_lookup(devlink, group->name); in devlink_trap_group_unregister()
1594 devlink_trap_group_notify(devlink, group_item, in devlink_trap_group_unregister()
1609 int devl_trap_groups_register(struct devlink *devlink, in devl_trap_groups_register() argument
1615 devl_assert_locked(devlink); in devl_trap_groups_register()
1623 err = devlink_trap_group_register(devlink, group); in devl_trap_groups_register()
1633 devlink_trap_group_unregister(devlink, &groups[i]); in devl_trap_groups_register()
1648 int devlink_trap_groups_register(struct devlink *devlink, in devlink_trap_groups_register() argument
1654 devl_lock(devlink); in devlink_trap_groups_register()
1655 err = devl_trap_groups_register(devlink, groups, groups_count); in devlink_trap_groups_register()
1656 devl_unlock(devlink); in devlink_trap_groups_register()
1667 void devl_trap_groups_unregister(struct devlink *devlink, in devl_trap_groups_unregister() argument
1673 devl_assert_locked(devlink); in devl_trap_groups_unregister()
1675 devlink_trap_group_unregister(devlink, &groups[i]); in devl_trap_groups_unregister()
1687 void devlink_trap_groups_unregister(struct devlink *devlink, in devlink_trap_groups_unregister() argument
1691 devl_lock(devlink); in devlink_trap_groups_unregister()
1692 devl_trap_groups_unregister(devlink, groups, groups_count); in devlink_trap_groups_unregister()
1693 devl_unlock(devlink); in devlink_trap_groups_unregister()
1698 devlink_trap_policer_notify(struct devlink *devlink, in devlink_trap_policer_notify() argument
1708 if (!devl_is_registered(devlink) || !devlink_nl_notify_need(devlink)) in devlink_trap_policer_notify()
1715 err = devlink_nl_trap_policer_fill(msg, devlink, policer_item, cmd, 0, in devlink_trap_policer_notify()
1722 devlink_nl_notify_send(devlink, msg); in devlink_trap_policer_notify()
1725 void devlink_trap_policers_notify_register(struct devlink *devlink) in devlink_trap_policers_notify_register() argument
1729 list_for_each_entry(policer_item, &devlink->trap_policer_list, list) in devlink_trap_policers_notify_register()
1730 devlink_trap_policer_notify(devlink, policer_item, in devlink_trap_policers_notify_register()
1734 void devlink_trap_policers_notify_unregister(struct devlink *devlink) in devlink_trap_policers_notify_unregister() argument
1738 list_for_each_entry_reverse(policer_item, &devlink->trap_policer_list, in devlink_trap_policers_notify_unregister()
1740 devlink_trap_policer_notify(devlink, policer_item, in devlink_trap_policers_notify_unregister()
1745 devlink_trap_policer_register(struct devlink *devlink, in devlink_trap_policer_register() argument
1751 if (devlink_trap_policer_item_lookup(devlink, policer->id)) in devlink_trap_policer_register()
1762 if (devlink->ops->trap_policer_init) { in devlink_trap_policer_register()
1763 err = devlink->ops->trap_policer_init(devlink, policer); in devlink_trap_policer_register()
1768 list_add_tail(&policer_item->list, &devlink->trap_policer_list); in devlink_trap_policer_register()
1769 devlink_trap_policer_notify(devlink, policer_item, in devlink_trap_policer_register()
1780 devlink_trap_policer_unregister(struct devlink *devlink, in devlink_trap_policer_unregister() argument
1785 policer_item = devlink_trap_policer_item_lookup(devlink, policer->id); in devlink_trap_policer_unregister()
1789 devlink_trap_policer_notify(devlink, policer_item, in devlink_trap_policer_unregister()
1792 if (devlink->ops->trap_policer_fini) in devlink_trap_policer_unregister()
1793 devlink->ops->trap_policer_fini(devlink, policer); in devlink_trap_policer_unregister()
1806 devl_trap_policers_register(struct devlink *devlink, in devl_trap_policers_register() argument
1812 devl_assert_locked(devlink); in devl_trap_policers_register()
1823 err = devlink_trap_policer_register(devlink, policer); in devl_trap_policers_register()
1832 devlink_trap_policer_unregister(devlink, &policers[i]); in devl_trap_policers_register()
1844 devl_trap_policers_unregister(struct devlink *devlink, in devl_trap_policers_unregister() argument
1850 devl_assert_locked(devlink); in devl_trap_policers_unregister()
1852 devlink_trap_policer_unregister(devlink, &policers[i]); in devl_trap_policers_unregister()