Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: dsa: Add support for devlink resources

Add wrappers around the devlink resource API, so that DSA drivers can
register and unregister devlink resources.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Andrew Lunn and committed by
David S. Miller
5cd73fbd 2ee6ad1d

+53
+16
include/net/dsa.h
··· 586 586 void dsa_devlink_params_unregister(struct dsa_switch *ds, 587 587 const struct devlink_param *params, 588 588 size_t params_count); 589 + int dsa_devlink_resource_register(struct dsa_switch *ds, 590 + const char *resource_name, 591 + u64 resource_size, 592 + u64 resource_id, 593 + u64 parent_resource_id, 594 + const struct devlink_resource_size_params *size_params); 595 + 596 + void dsa_devlink_resources_unregister(struct dsa_switch *ds); 597 + 598 + void dsa_devlink_resource_occ_get_register(struct dsa_switch *ds, 599 + u64 resource_id, 600 + devlink_resource_occ_get_t *occ_get, 601 + void *occ_get_priv); 602 + void dsa_devlink_resource_occ_get_unregister(struct dsa_switch *ds, 603 + u64 resource_id); 604 + 589 605 struct dsa_devlink_priv { 590 606 struct dsa_switch *ds; 591 607 };
+37
net/dsa/dsa.c
··· 379 379 } 380 380 EXPORT_SYMBOL_GPL(dsa_devlink_params_unregister); 381 381 382 + int dsa_devlink_resource_register(struct dsa_switch *ds, 383 + const char *resource_name, 384 + u64 resource_size, 385 + u64 resource_id, 386 + u64 parent_resource_id, 387 + const struct devlink_resource_size_params *size_params) 388 + { 389 + return devlink_resource_register(ds->devlink, resource_name, 390 + resource_size, resource_id, 391 + parent_resource_id, 392 + size_params); 393 + } 394 + EXPORT_SYMBOL_GPL(dsa_devlink_resource_register); 395 + 396 + void dsa_devlink_resources_unregister(struct dsa_switch *ds) 397 + { 398 + devlink_resources_unregister(ds->devlink, NULL); 399 + } 400 + EXPORT_SYMBOL_GPL(dsa_devlink_resources_unregister); 401 + 402 + void dsa_devlink_resource_occ_get_register(struct dsa_switch *ds, 403 + u64 resource_id, 404 + devlink_resource_occ_get_t *occ_get, 405 + void *occ_get_priv) 406 + { 407 + return devlink_resource_occ_get_register(ds->devlink, resource_id, 408 + occ_get, occ_get_priv); 409 + } 410 + EXPORT_SYMBOL_GPL(dsa_devlink_resource_occ_get_register); 411 + 412 + void dsa_devlink_resource_occ_get_unregister(struct dsa_switch *ds, 413 + u64 resource_id) 414 + { 415 + devlink_resource_occ_get_unregister(ds->devlink, resource_id); 416 + } 417 + EXPORT_SYMBOL_GPL(dsa_devlink_resource_occ_get_unregister); 418 + 382 419 static int __init dsa_init_module(void) 383 420 { 384 421 int rc;