nsim_dev_port
struct dentry *ddir = ns->nsim_dev_port->ddir;
struct nsim_dev_port *nsim_dev_port = priv;
nsim_dev_port->tc_bw[i] = tc_bw[i];
struct nsim_dev_port *nsim_dev_port = priv;
struct nsim_dev *nsim_dev = nsim_dev_port->ns->nsim_dev;
int vf_id = nsim_dev_port_index_to_vf_index(nsim_dev_port->port_index);
struct nsim_dev_port *nsim_dev_port = priv;
struct nsim_dev *nsim_dev = nsim_dev_port->ns->nsim_dev;
int vf_id = nsim_dev_port_index_to_vf_index(nsim_dev_port->port_index);
struct nsim_dev_port *nsim_dev_port = priv_child;
nsim_dev_port->parent_name = parent->name;
nsim_dev_port->parent_name = NULL;
struct nsim_dev_port *nsim_dev_port;
nsim_dev_port = kzalloc_obj(*nsim_dev_port);
if (!nsim_dev_port)
nsim_dev_port->port_index = nsim_dev_port_index(type, port_index);
nsim_dev_port->port_type = type;
devlink_port = &nsim_dev_port->devlink_port;
if (nsim_dev_port_is_pf(nsim_dev_port)) {
nsim_dev_port->port_index);
err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port);
nsim_dev_port->ns = nsim_create(nsim_dev, nsim_dev_port, perm_addr);
if (IS_ERR(nsim_dev_port->ns)) {
err = PTR_ERR(nsim_dev_port->ns);
if (nsim_dev_port_is_vf(nsim_dev_port)) {
err = devl_rate_leaf_create(&nsim_dev_port->devlink_port,
nsim_dev_port, NULL);
list_add(&nsim_dev_port->list, &nsim_dev->port_list);
nsim_destroy(nsim_dev_port->ns);
nsim_dev_port_debugfs_exit(nsim_dev_port);
kfree(nsim_dev_port);
static void __nsim_dev_port_del(struct nsim_dev_port *nsim_dev_port)
struct devlink_port *devlink_port = &nsim_dev_port->devlink_port;
list_del(&nsim_dev_port->list);
if (nsim_dev_port_is_vf(nsim_dev_port))
devl_rate_leaf_destroy(&nsim_dev_port->devlink_port);
nsim_destroy(nsim_dev_port->ns);
nsim_dev_port_debugfs_exit(nsim_dev_port);
kfree(nsim_dev_port);
struct nsim_dev_port *nsim_dev_port, *tmp;
list_for_each_entry_safe(nsim_dev_port, tmp,
__nsim_dev_port_del(nsim_dev_port);
static struct nsim_dev_port *
struct nsim_dev_port *nsim_dev_port;
list_for_each_entry(nsim_dev_port, &nsim_dev->port_list, list)
if (nsim_dev_port->port_index == port_index)
return nsim_dev_port;
struct nsim_dev_port *nsim_dev_port;
nsim_dev_port = __nsim_dev_port_lookup(nsim_dev, type, port_index);
if (!nsim_dev_port)
__nsim_dev_port_del(nsim_dev_port);
struct nsim_dev_port *nsim_dev_port)
unsigned int port_index = nsim_dev_port->port_index;
nsim_dev_port->ddir = debugfs_create_dir(port_ddir_name,
if (IS_ERR(nsim_dev_port->ddir))
return PTR_ERR(nsim_dev_port->ddir);
if (nsim_dev_port_is_vf(nsim_dev_port)) {
debugfs_create_u16("tx_share", 0400, nsim_dev_port->ddir,
debugfs_create_u16("tx_max", 0400, nsim_dev_port->ddir,
nsim_dev_port->rate_parent = debugfs_create_file("rate_parent",
nsim_dev_port->ddir,
&nsim_dev_port->parent_name,
nsim_dev_tc_bw_debugfs_init(nsim_dev_port->ddir,
nsim_dev_port->tc_bw);
debugfs_create_symlink("dev", nsim_dev_port->ddir, dev_link_name);
static void nsim_dev_port_debugfs_exit(struct nsim_dev_port *nsim_dev_port)
debugfs_remove_recursive(nsim_dev_port->ddir);
static void __nsim_dev_port_del(struct nsim_dev_port *nsim_dev_port);
struct nsim_dev_port *nsim_dev_port, *tmp;
list_for_each_entry_safe(nsim_dev_port, tmp, &nsim_dev->port_list, list)
if (nsim_dev_port_is_vf(nsim_dev_port))
__nsim_dev_port_del(nsim_dev_port);
struct nsim_dev_port *nsim_dev_port, *tmp;
list_for_each_entry_safe(nsim_dev_port, tmp, &nsim_dev->port_list, list)
if (nsim_dev_port_is_vf(nsim_dev_port))
__nsim_dev_port_del(nsim_dev_port);
static void nsim_dev_trap_report(struct nsim_dev_port *nsim_dev_port)
struct nsim_dev *nsim_dev = nsim_dev_port->ns->nsim_dev;
skb->dev = nsim_dev_port->ns->netdev;
&nsim_dev_port->devlink_port, fa_cookie);
struct nsim_dev_port *nsim_dev_port;
list_for_each_entry(nsim_dev_port, &nsim_dev->port_list, list) {
if (!netif_running(nsim_dev_port->ns->netdev))
nsim_dev_trap_report(nsim_dev_port);
ethtool = debugfs_create_dir("ethtool", ns->nsim_dev_port->ddir);
ns->nsim_dev_port->ddir, ns,
struct nsim_dev_port *nsim_dev_port,
ns->nsim_dev_port = nsim_dev_port;
SET_NETDEV_DEVLINK_PORT(dev, &nsim_dev_port->devlink_port);
if (nsim_dev_port_is_pf(nsim_dev_port))
ns->pp_dfs = debugfs_create_file("pp_hold", 0600, nsim_dev_port->ddir,
nsim_dev_port->ddir, ns,
if (nsim_dev_port_is_pf(ns->nsim_dev_port)) {
if (nsim_dev_port_is_pf(ns->nsim_dev_port))
struct nsim_dev_port *nsim_dev_port;
struct nsim_dev_port *nsim_dev_port,
static inline bool nsim_dev_port_is_pf(struct nsim_dev_port *nsim_dev_port)
return nsim_dev_port->port_type == NSIM_DEV_PORT_TYPE_PF;
static inline bool nsim_dev_port_is_vf(struct nsim_dev_port *nsim_dev_port)
return nsim_dev_port->port_type == NSIM_DEV_PORT_TYPE_VF;
struct dentry *ddir = ns->nsim_dev_port->ddir;
ns->nsim_dev_port->ddir);