| /linux/net/devlink/ |
| H A D | core.c | 9 #include <trace/events/devlink.h> 19 static struct devlink *devlinks_xa_get(unsigned long index) in devlinks_xa_get() 21 struct devlink *devlink; in devlinks_xa_get() local 24 devlink = xa_find(&devlinks, &index, index, DEVLINK_REGISTERED); in devlinks_xa_get() 25 if (!devlink || !devlink_try_get(devlink)) in devlinks_xa_get() 26 devlink = NULL; in devlinks_xa_get() 28 return devlink; in devlinks_xa_get() 32 * devlink object and related nested devlink instance. 70 struct devlink *__must_check devlink_nested_in_get_lock(struct devlink *devlink) in devlink_nested_in_get_lock() argument 72 devl_assert_locked(devlink); in devlink_nested_in_get_lock() [all …]
|
| H A D | devl_internal.h | 14 #include <net/devlink.h> 33 struct devlink { struct 55 /* Serializes access to devlink instance specific objects such as argument 71 struct devlink *__devlink_alloc(const struct devlink_ops *ops, size_t priv_size, argument 75 #define devl_warn(devlink, format, args...) \ argument 77 if ((devlink)->dev) \ 78 dev_warn((devlink)->dev, format, ##args); \ 80 pr_warn("devlink (%s): " format, \ 81 devlink_dev_name(devlink), ##args); \ 84 /* devlink instances are open to the access from the user space after [all …]
|
| H A D | trap.c | 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) 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() [all …]
|
| H A D | dev.c | 47 devlink_reload_action_is_supported(struct devlink *devlink, enum devlink_reload_action action) in devlink_reload_action_is_supported() argument 49 return test_bit(action, &devlink->ops->reload_actions); in devlink_reload_action_is_supported() 53 devlink_reload_limit_is_supported(struct devlink *devlink, enum devlink_reload_limit limit) in devlink_reload_limit_is_supported() argument 55 return test_bit(limit, &devlink->ops->reload_limits); in devlink_reload_limit_is_supported() 79 devlink_reload_stats_put(struct sk_buff *msg, struct devlink *devlink, bool is_remote) in devlink_reload_stats_put() argument 95 !devlink_reload_action_is_supported(devlink, i)) || in devlink_reload_stats_put() 115 !devlink_reload_limit_is_supported(devlink, j)) || in devlink_reload_stats_put() 121 value = devlink->stats.reload_stats[stat_idx]; in devlink_reload_stats_put() 123 value = devlink->stats.remote_reload_stats[stat_idx]; in devlink_reload_stats_put() 142 static int devlink_nl_nested_fill(struct sk_buff *msg, struct devlink *devlink) in devlink_nl_nested_fill() argument [all …]
|
| H A D | rate.c | 21 devlink_rate_leaf_get_from_info(struct devlink *devlink, struct genl_info *info) in devlink_rate_leaf_get_from_info() argument 26 devlink_port = devlink_port_get_from_attrs(devlink, info->attrs); in devlink_rate_leaf_get_from_info() 33 /* Repeatedly walks the nested devlink chain while cross device rate nodes are 36 * When cross device rate nodes aren't supported the original devlink instance 39 static struct devlink *devl_rate_lock(struct devlink *devlink) in devl_rate_lock() argument 41 struct devlink *rate_devlink = devlink, *parent; in devl_rate_lock() 43 devl_assert_locked(devlink); in devl_rate_lock() 50 if (rate_devlink != devlink) { in devl_rate_lock() 60 /* Unlocks and puts 'rate devlink' if different than 'devlink'. */ 61 static void devl_rate_unlock(struct devlink *devlink, in devl_rate_unlock() argument [all …]
|
| H A D | sb.c | 24 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink, in devlink_sb_get_by_index() argument 29 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_sb_get_by_index() 36 static bool devlink_sb_index_exists(struct devlink *devlink, in devlink_sb_index_exists() argument 39 return devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_index_exists() 42 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink, in devlink_sb_get_from_attrs() argument 49 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_get_from_attrs() 57 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink, in devlink_sb_get_from_info() argument 60 return devlink_sb_get_from_attrs(devlink, info->attrs); in devlink_sb_get_from_info() 167 static int devlink_nl_sb_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_sb_fill() argument 178 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_sb_fill() [all …]
|
| H A D | region.c | 10 struct devlink *devlink; member 35 devlink_region_get_by_name(struct devlink *devlink, const char *region_name) in devlink_region_get_by_name() argument 39 list_for_each_entry(region, &devlink->region_list, list) in devlink_region_get_by_name() 72 struct devlink *devlink, in devlink_nl_region_snapshot_id_put() argument 95 struct devlink *devlink, in devlink_nl_region_snapshots_id_put() argument 108 err = devlink_nl_region_snapshot_id_put(msg, devlink, snapshot); in devlink_nl_region_snapshots_id_put() 121 static int devlink_nl_region_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_region_fill() argument 133 err = devlink_nl_put_handle(msg, devlink); in devlink_nl_region_fill() 157 err = devlink_nl_region_snapshots_id_put(msg, devlink, region); in devlink_nl_region_fill() 174 struct devlink *devlink = region->devlink; in devlink_nl_region_notify_build() local [all …]
|
| H A D | resource.c | 10 * struct devlink_resource - devlink resource 12 * @id: id, per devlink instance 66 devlink_resource_find(struct devlink *devlink, in devlink_resource_find() argument 69 return __devlink_resource_find(&devlink->resource_list, in devlink_resource_find() 120 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_resource_set_doit() local 131 resource = devlink_resource_find(devlink, NULL, resource_id); in devlink_nl_resource_set_doit() 174 static int devlink_resource_put(struct devlink *devlink, struct sk_buff *skb, in devlink_resource_put() argument 210 if (devlink_resource_put(devlink, skb, child_resource)) in devlink_resource_put() 227 struct devlink *devlink, in devlink_resource_list_fill() argument 240 err = devlink_resource_put(devlink, skb, resource); in devlink_resource_list_fill() [all …]
|
| H A D | param.c | 180 static int devlink_param_get(struct devlink *devlink, in devlink_param_get() argument 187 return param->get(devlink, param->id, ctx, extack); in devlink_param_get() 190 static int devlink_param_set(struct devlink *devlink, in devlink_param_set() argument 197 return param->set(devlink, param->id, ctx, extack); in devlink_param_set() 200 static int devlink_param_get_default(struct devlink *devlink, in devlink_param_get_default() argument 208 return param->get_default(devlink, param->id, ctx, extack); in devlink_param_get_default() 211 static int devlink_param_reset_default(struct devlink *devlink, in devlink_param_reset_default() argument 219 return param->reset_default(devlink, param->id, cmode, extack); in devlink_param_reset_default() 314 static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_param_fill() argument 372 err = devlink_param_get(devlink, param, ctx, extack); in devlink_nl_param_fill() [all …]
|
| H A D | netlink.c | 144 struct devlink *devlink, int attrtype) in devlink_nl_put_nested_handle() argument 152 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_put_nested_handle() 156 devl_net = read_pnet_rcu(&devlink->_net); in devlink_nl_put_nested_handle() 190 struct devlink * 194 struct devlink *devlink; in devlink_get_from_attrs_lock() local 204 devlink = devlinks_xa_lookup_get(net, index); in devlink_get_from_attrs_lock() 205 if (!devlink) in devlink_get_from_attrs_lock() 219 devlink = devlinks_xa_lookup_get(net, index); in devlink_get_from_attrs_lock() 220 if (!devlink) in devlink_get_from_attrs_lock() 225 devlinks_xa_for_each_registered_get(net, index, devlink) { in devlink_get_from_attrs_lock() [all …]
|
| H A D | linecard.c | 11 struct devlink *devlink; member 29 devlink_linecard_get_by_index(struct devlink *devlink, in devlink_linecard_get_by_index() argument 34 list_for_each_entry(devlink_linecard, &devlink->linecard_list, list) { in devlink_linecard_get_by_index() 41 static bool devlink_linecard_index_exists(struct devlink *devlink, in devlink_linecard_index_exists() argument 44 return devlink_linecard_get_by_index(devlink, linecard_index); in devlink_linecard_index_exists() 48 devlink_linecard_get_from_attrs(struct devlink *devlink, struct nlattr **attrs) in devlink_linecard_get_from_attrs() argument 54 linecard = devlink_linecard_get_by_index(devlink, linecard_index); in devlink_linecard_get_from_attrs() 63 devlink_linecard_get_from_info(struct devlink *devlink, struct genl_info *info) in devlink_linecard_get_from_info() argument 65 return devlink_linecard_get_from_attrs(devlink, info->attrs); in devlink_linecard_get_from_info() 74 struct devlink *devlink, in devlink_nl_linecard_fill() argument [all …]
|
| H A D | port.c | 27 struct devlink_port *devlink_port_get_by_index(struct devlink *devlink, in devlink_port_get_by_index() argument 30 return xa_load(&devlink->ports, port_index); in devlink_port_get_by_index() 33 struct devlink_port *devlink_port_get_from_attrs(struct devlink *devlink, in devlink_port_get_from_attrs() argument 40 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_get_from_attrs() 48 struct devlink_port *devlink_port_get_from_info(struct devlink *devlink, in devlink_port_get_from_info() argument 51 return devlink_port_get_from_attrs(devlink, info->attrs); in devlink_port_get_from_info() 212 if (devlink_nl_put_handle(msg, devlink_port->devlink)) in devlink_nl_port_handle_fill() 221 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_handle_size() local 223 return nla_total_size(strlen(devlink_bus_name(devlink)) + 1) /* DEVLINK_ATTR_BUS_NAME */ in devlink_nl_port_handle_size() 224 + nla_total_size(strlen(devlink_dev_name(devlink)) + 1) /* DEVLINK_ATTR_DEV_NAME */ in devlink_nl_port_handle_size() [all …]
|
| H A D | dpipe.c | 216 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_dpipe_tables_fill() local 240 if (devlink_nl_put_handle(skb, devlink)) in devlink_dpipe_tables_fill() 293 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_dpipe_table_get_doit() local 300 &devlink->dpipe_table_list, in devlink_nl_dpipe_table_get_doit() 451 const char *table_name, struct devlink *devlink) in devlink_dpipe_table_find() argument 456 lockdep_is_held(&devlink->lock)) { in devlink_dpipe_table_find() 465 struct devlink *devlink; in devlink_dpipe_entry_ctx_prepare() local 481 devlink = devlink_nl_ctx(dump_ctx->info)->devlink; in devlink_dpipe_entry_ctx_prepare() 482 if (devlink_nl_put_handle(dump_ctx->skb, devlink)) in devlink_dpipe_entry_ctx_prepare() 566 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_dpipe_entries_get_doit() local [all …]
|
| H A D | health.c | 9 #include <trace/events/devlink.h> 59 struct devlink *devlink; member 94 devlink_health_reporter_find_by_name(struct devlink *devlink, in devlink_health_reporter_find_by_name() argument 97 return __devlink_health_reporter_find_by_name(&devlink->reporter_list, in devlink_health_reporter_find_by_name() 110 __devlink_health_reporter_create(struct devlink *devlink, in __devlink_health_reporter_create() argument 128 reporter->devlink = devlink; in __devlink_health_reporter_create() 137 * devl_port_health_reporter_create() - create devlink health reporter for 141 * @ops: devlink health reporter ops 151 devl_assert_locked(port->devlink); in devl_port_health_reporter_create() 157 reporter = __devlink_health_reporter_create(port->devlink, ops, priv); in devl_port_health_reporter_create() [all …]
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/ |
| H A D | devlink.c | 4 #include <devlink.h> 15 static int mlx5_devlink_flash_update(struct devlink *devlink, in mlx5_devlink_flash_update() argument 19 struct mlx5_core_dev *dev = devlink_priv(devlink); in mlx5_devlink_flash_update() 91 mlx5_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req, in mlx5_devlink_info_get() argument 94 struct mlx5_core_dev *dev = devlink_priv(devlink); in mlx5_devlink_info_get() 139 static int mlx5_devlink_reload_fw_activate(struct devlink *devlink, struct netlink_ext_ack *extack) in mlx5_devlink_reload_fw_activate() argument 141 struct mlx5_core_dev *dev = devlink_priv(devlink); in mlx5_devlink_reload_fw_activate() 170 static int mlx5_devlink_trigger_fw_live_patch(struct devlink *devlink, in mlx5_devlink_trigger_fw_live_patch() argument 173 struct mlx5_core_dev *dev = devlink_priv(devlink); in mlx5_devlink_trigger_fw_live_patch() 189 static int mlx5_devlink_reload_down(struct devlink *devlink, bool netns_change, in mlx5_devlink_reload_down() argument [all …]
|
| /linux/include/net/ |
| H A D | devlink.h | 3 * include/net/devlink.h - Network physical device Netlink interface 20 #include <uapi/linux/devlink.h> 24 struct devlink; 36 * struct devlink_port_pci_pf_attrs - devlink port's PCI PF attributes 38 * @pf: associated PCI function number for the devlink port instance 48 * struct devlink_port_pci_vf_attrs - devlink port's PCI VF attributes 50 * @pf: associated PCI function number for the devlink port instance 51 * @vf: associated PCI VF number of a PF for the devlink port instance; 63 * struct devlink_port_pci_sf_attrs - devlink port's PCI SF attributes 65 * @sf: associated SF number of a PF for the devlink port instance [all …]
|
| /linux/Documentation/networking/devlink/ |
| H A D | index.rst | 1 Linux Devlink Documentation 4 devlink is an API to expose device information and resources not directly 13 in devlink core, but don't allow registration of most sub-objects once 14 the main devlink object is itself registered. The newer ``devl_*`` APIs assume 15 the devlink instance lock is already held. Drivers can take the instance 17 devlink netlink commands. 19 Drivers are encouraged to use the devlink instance lock for their own needs. 21 Drivers need to be cautious when taking devlink instance lock and 22 taking RTNL lock at the same time. Devlink instance lock needs to be taken 29 devlink instances created underneath. In that case, drivers should make [all …]
|
| H A D | iosm.rst | 4 iosm devlink support 7 This document describes the devlink features implemented by the ``iosm`` 35 ``devlink-flash`` interface. 62 has to be passed to the driver using the devlink param command. 65 need to set the erase_full_flash parameter using devlink param command. 71 image using devlink flash command. 73 $ devlink dev flash pci/0000:02:00.0 file <PSI_RAM_File_name> 78 $ devlink dev param set pci/0000:02:00.0 name erase_full_flash value true cmode runtime 82 $ devlink dev flash pci/0000:02:00.0 file <EBL_File_name> 89 $ devlink dev flash pci/0000:02:00.0 file <Secure_bin_file_name> [all …]
|
| H A D | devlink-reload.rst | 4 Devlink Reload 7 ``devlink-reload`` provides mechanism to reinit driver entities, applying 8 ``devlink-params`` and ``devlink-resources`` new values. It also provides 23 - Devlink driver entities re-initialization, including applying 24 new values to devlink entities which are used during driver 27 * ``devlink-params`` in configuration mode ``driverinit`` 28 * ``devlink-resources`` 30 Other devlink entities may stay over the re-initialization: 32 * ``devlink-health-reporter`` 33 * ``devlink-region`` [all …]
|
| /linux/Documentation/netlink/specs/ |
| H A D | devlink.yaml | 3 name: devlink 7 doc: Partial family for Devlink. 248 name: devlink 249 name-prefix: devlink-attr- 885 doc: Unique devlink instance index. 903 Identifies the devlink instance which owns the parent rate node. 905 a different devlink instance, enabling cross-device rate scheduling. 910 subset-of: devlink 919 subset-of: devlink 926 subset-of: devlink [all …]
|
| /linux/drivers/net/ethernet/intel/ice/devlink/ |
| H A D | devlink.c | 8 #include "devlink.h" 15 /* context for devlink info version reporting */ 25 * devlink info versions. The ctx parameter is used to provide the storage 261 * ice_devlink_info_get - .info_get devlink handler 262 * @devlink: devlink instance structure 263 * @req: the devlink info request 266 * Callback for the devlink .info_get operation. Reports information about the 271 static int ice_devlink_info_get(struct devlink *devlink, in ice_devlink_info_get() argument 275 struct ice_pf *pf = devlink_priv(devlink); in ice_devlink_info_get() 457 /* No need to take devl_lock, it's already taken by devlink API */ in ice_devlink_reinit_down() [all …]
|
| /linux/drivers/net/netdevsim/ |
| H A D | dev.c | 30 #include <net/devlink.h> 33 #include <uapi/linux/devlink.h> 79 nsim_dev_take_snapshot(struct devlink *devlink, in nsim_dev_take_snapshot() argument 102 struct devlink *devlink; in nsim_dev_take_snapshot_write() local 107 devlink = priv_to_devlink(nsim_dev); in nsim_dev_take_snapshot_write() 109 err = nsim_dev_take_snapshot(devlink, NULL, NULL, &dummy_data); in nsim_dev_take_snapshot_write() 113 err = devlink_region_snapshot_id_get(devlink, &id); in nsim_dev_take_snapshot_write() 121 devlink_region_snapshot_id_put(devlink, id); in nsim_dev_take_snapshot_write() 372 static int nsim_dev_resources_register(struct devlink *devlink) in nsim_dev_resources_register() argument 382 err = devl_resource_register(devlink, "IPv4", (u64)-1, in nsim_dev_resources_register() [all …]
|
| /linux/Documentation/networking/device_drivers/ethernet/mellanox/mlx5/ |
| H A D | switchdev.rst | 21 $ devlink dev eswitch set pci/0000:06:00.0 mode switchdev 48 Subfunction which are spawned over the E-switch are created only with devlink 57 $ devlink port add pci/0000:08:00.0 flavour pcisf pfnum 0 sfnum 11 58 $ devlink port function set pci/0000:08:00.0/32768 hw_addr 00:00:00:00:00:11 state active 62 $ devlink dev param set auxiliary/mlx5_core.sf.1 name enable_eth value true cmode driverinit 64 - Now, in order to fully probe the SF, use devlink reload:: 66 $ devlink dev reload auxiliary/mlx5_core.sf.1 68 …ETH,rdma and vdpa (vnet) auxiliary devices devlink params (see :ref:`Documentation/networking/devl… 70 mlx5 supports subfunction management using devlink port (see :ref:`Documentation/networking/devlink… 100 | devlink | | tc tool | | user | [all …]
|
| /linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/ |
| H A D | hclge_devlink.c | 4 #include <net/devlink.h> 8 static int hclge_devlink_scc_info_get(struct devlink *devlink, in hclge_devlink_scc_info_get() argument 11 struct hclge_devlink_priv *priv = devlink_priv(devlink); in hclge_devlink_scc_info_get() 36 static int hclge_devlink_info_get(struct devlink *devlink, in hclge_devlink_info_get() argument 41 struct hclge_devlink_priv *priv = devlink_priv(devlink); in hclge_devlink_info_get() 65 ret = hclge_devlink_scc_info_get(devlink, req); in hclge_devlink_info_get() 70 static int hclge_devlink_reload_down(struct devlink *devlink, bool netns_change, in hclge_devlink_reload_down() argument 75 struct hclge_devlink_priv *priv = devlink_priv(devlink); in hclge_devlink_reload_down() 104 static int hclge_devlink_reload_up(struct devlink *devlink, in hclge_devlink_reload_up() argument 110 struct hclge_devlink_priv *priv = devlink_priv(devlink); in hclge_devlink_reload_up() [all …]
|
| /linux/drivers/net/ethernet/hisilicon/hns3/hns3vf/ |
| H A D | hclgevf_devlink.c | 4 #include <net/devlink.h> 8 static int hclgevf_devlink_info_get(struct devlink *devlink, in hclgevf_devlink_info_get() argument 13 struct hclgevf_devlink_priv *priv = devlink_priv(devlink); in hclgevf_devlink_info_get() 32 static int hclgevf_devlink_reload_down(struct devlink *devlink, in hclgevf_devlink_reload_down() argument 38 struct hclgevf_devlink_priv *priv = devlink_priv(devlink); in hclgevf_devlink_reload_down() 67 static int hclgevf_devlink_reload_up(struct devlink *devlink, in hclgevf_devlink_reload_up() argument 73 struct hclgevf_devlink_priv *priv = devlink_priv(devlink); in hclgevf_devlink_reload_up() 107 struct devlink *devlink; in hclgevf_devlink_init() local 109 devlink = in hclgevf_devlink_init() 112 if (!devlink) in hclgevf_devlink_init() [all …]
|