diff options
Diffstat (limited to 'drivers/net/netdevsim')
| -rw-r--r-- | drivers/net/netdevsim/bpf.c | 4 | ||||
| -rw-r--r-- | drivers/net/netdevsim/dev.c | 57 | ||||
| -rw-r--r-- | drivers/net/netdevsim/health.c | 20 | ||||
| -rw-r--r-- | drivers/net/netdevsim/ipsec.c | 17 | ||||
| -rw-r--r-- | drivers/net/netdevsim/netdev.c | 15 | 
5 files changed, 53 insertions, 60 deletions
diff --git a/drivers/net/netdevsim/bpf.c b/drivers/net/netdevsim/bpf.c index 50854265864d..f60eb97e3a62 100644 --- a/drivers/net/netdevsim/bpf.c +++ b/drivers/net/netdevsim/bpf.c @@ -315,10 +315,6 @@ nsim_setup_prog_hw_checks(struct netdevsim *ns, struct netdev_bpf *bpf)  		NSIM_EA(bpf->extack, "xdpoffload of non-bound program");  		return -EINVAL;  	} -	if (!bpf_offload_dev_match(bpf->prog, ns->netdev)) { -		NSIM_EA(bpf->extack, "program bound to different dev"); -		return -EINVAL; -	}  	state = bpf->prog->aux->offload->dev_priv;  	if (WARN_ON(strcmp(state->state, "xlated"))) { diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c index 68e56e451b2b..6045bece2654 100644 --- a/drivers/net/netdevsim/dev.c +++ b/drivers/net/netdevsim/dev.c @@ -527,13 +527,13 @@ static void nsim_devlink_set_params_init_values(struct nsim_dev *nsim_dev,  	union devlink_param_value value;  	value.vu32 = nsim_dev->max_macs; -	devlink_param_driverinit_value_set(devlink, -					   DEVLINK_PARAM_GENERIC_ID_MAX_MACS, -					   value); +	devl_param_driverinit_value_set(devlink, +					DEVLINK_PARAM_GENERIC_ID_MAX_MACS, +					value);  	value.vbool = nsim_dev->test1; -	devlink_param_driverinit_value_set(devlink, -					   NSIM_DEVLINK_PARAM_ID_TEST1, -					   value); +	devl_param_driverinit_value_set(devlink, +					NSIM_DEVLINK_PARAM_ID_TEST1, +					value);  }  static void nsim_devlink_param_load_driverinit_values(struct devlink *devlink) @@ -542,14 +542,14 @@ static void nsim_devlink_param_load_driverinit_values(struct devlink *devlink)  	union devlink_param_value saved_value;  	int err; -	err = devlink_param_driverinit_value_get(devlink, -						 DEVLINK_PARAM_GENERIC_ID_MAX_MACS, -						 &saved_value); +	err = devl_param_driverinit_value_get(devlink, +					      DEVLINK_PARAM_GENERIC_ID_MAX_MACS, +					      &saved_value);  	if (!err)  		nsim_dev->max_macs = saved_value.vu32; -	err = devlink_param_driverinit_value_get(devlink, -						 NSIM_DEVLINK_PARAM_ID_TEST1, -						 &saved_value); +	err = devl_param_driverinit_value_get(devlink, +					      NSIM_DEVLINK_PARAM_ID_TEST1, +					      &saved_value);  	if (!err)  		nsim_dev->test1 = saved_value.vbool;  } @@ -994,9 +994,6 @@ static int nsim_dev_info_get(struct devlink *devlink,  {  	int err; -	err = devlink_info_driver_name_put(req, DRV_NAME); -	if (err) -		return err;  	err = devlink_info_version_stored_put_ext(req, "fw.mgmt", "10.20.30",  						  DEVLINK_INFO_VERSION_TYPE_COMPONENT);  	if (err) @@ -1401,12 +1398,11 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, enum nsim_dev_port_typ  	if (nsim_dev_port_is_vf(nsim_dev_port)) {  		err = devl_rate_leaf_create(&nsim_dev_port->devlink_port, -					    nsim_dev_port); +					    nsim_dev_port, NULL);  		if (err)  			goto err_nsim_destroy;  	} -	devlink_port_type_eth_set(devlink_port, nsim_dev_port->ns->netdev);  	list_add(&nsim_dev_port->list, &nsim_dev->port_list);  	return 0; @@ -1429,7 +1425,6 @@ static void __nsim_dev_port_del(struct nsim_dev_port *nsim_dev_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); -	devlink_port_type_clear(devlink_port);  	nsim_destroy(nsim_dev_port->ns);  	nsim_dev_port_debugfs_exit(nsim_dev_port);  	devl_port_unregister(devlink_port); @@ -1561,14 +1556,18 @@ int nsim_drv_probe(struct nsim_bus_dev *nsim_bus_dev)  		goto err_devlink_unlock;  	} -	err = nsim_dev_resources_register(devlink); +	err = devl_register(devlink);  	if (err)  		goto err_vfc_free; -	err = devlink_params_register(devlink, nsim_devlink_params, -				      ARRAY_SIZE(nsim_devlink_params)); +	err = nsim_dev_resources_register(devlink);  	if (err)  		goto err_dl_unregister; + +	err = devl_params_register(devlink, nsim_devlink_params, +				   ARRAY_SIZE(nsim_devlink_params)); +	if (err) +		goto err_resource_unregister;  	nsim_devlink_set_params_init_values(nsim_dev, devlink);  	err = nsim_dev_dummy_region_init(nsim_dev, devlink); @@ -1610,9 +1609,7 @@ int nsim_drv_probe(struct nsim_bus_dev *nsim_bus_dev)  		goto err_hwstats_exit;  	nsim_dev->esw_mode = DEVLINK_ESWITCH_MODE_LEGACY; -	devlink_set_features(devlink, DEVLINK_F_RELOAD);  	devl_unlock(devlink); -	devlink_register(devlink);  	return 0;  err_hwstats_exit: @@ -1632,10 +1629,12 @@ err_traps_exit:  err_dummy_region_exit:  	nsim_dev_dummy_region_exit(nsim_dev);  err_params_unregister: -	devlink_params_unregister(devlink, nsim_devlink_params, -				  ARRAY_SIZE(nsim_devlink_params)); -err_dl_unregister: +	devl_params_unregister(devlink, nsim_devlink_params, +			       ARRAY_SIZE(nsim_devlink_params)); +err_resource_unregister:  	devl_resources_unregister(devlink); +err_dl_unregister: +	devl_unregister(devlink);  err_vfc_free:  	kfree(nsim_dev->vfconfigs);  err_devlink_unlock: @@ -1673,15 +1672,15 @@ void nsim_drv_remove(struct nsim_bus_dev *nsim_bus_dev)  	struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev);  	struct devlink *devlink = priv_to_devlink(nsim_dev); -	devlink_unregister(devlink);  	devl_lock(devlink);  	nsim_dev_reload_destroy(nsim_dev);  	nsim_bpf_dev_exit(nsim_dev);  	nsim_dev_debugfs_exit(nsim_dev); -	devlink_params_unregister(devlink, nsim_devlink_params, -				  ARRAY_SIZE(nsim_devlink_params)); +	devl_params_unregister(devlink, nsim_devlink_params, +			       ARRAY_SIZE(nsim_devlink_params));  	devl_resources_unregister(devlink); +	devl_unregister(devlink);  	kfree(nsim_dev->vfconfigs);  	kfree(nsim_dev->fa_cookie);  	devl_unlock(devlink); diff --git a/drivers/net/netdevsim/health.c b/drivers/net/netdevsim/health.c index aa77af4a68df..eb04ed715d2d 100644 --- a/drivers/net/netdevsim/health.c +++ b/drivers/net/netdevsim/health.c @@ -233,16 +233,16 @@ int nsim_dev_health_init(struct nsim_dev *nsim_dev, struct devlink *devlink)  	int err;  	health->empty_reporter = -		devlink_health_reporter_create(devlink, -					       &nsim_dev_empty_reporter_ops, -					       0, health); +		devl_health_reporter_create(devlink, +					    &nsim_dev_empty_reporter_ops, +					    0, health);  	if (IS_ERR(health->empty_reporter))  		return PTR_ERR(health->empty_reporter);  	health->dummy_reporter = -		devlink_health_reporter_create(devlink, -					       &nsim_dev_dummy_reporter_ops, -					       0, health); +		devl_health_reporter_create(devlink, +					    &nsim_dev_dummy_reporter_ops, +					    0, health);  	if (IS_ERR(health->dummy_reporter)) {  		err = PTR_ERR(health->dummy_reporter);  		goto err_empty_reporter_destroy; @@ -266,9 +266,9 @@ int nsim_dev_health_init(struct nsim_dev *nsim_dev, struct devlink *devlink)  	return 0;  err_dummy_reporter_destroy: -	devlink_health_reporter_destroy(health->dummy_reporter); +	devl_health_reporter_destroy(health->dummy_reporter);  err_empty_reporter_destroy: -	devlink_health_reporter_destroy(health->empty_reporter); +	devl_health_reporter_destroy(health->empty_reporter);  	return err;  } @@ -278,6 +278,6 @@ void nsim_dev_health_exit(struct nsim_dev *nsim_dev)  	debugfs_remove_recursive(health->ddir);  	kfree(health->recovered_break_msg); -	devlink_health_reporter_destroy(health->dummy_reporter); -	devlink_health_reporter_destroy(health->empty_reporter); +	devl_health_reporter_destroy(health->dummy_reporter); +	devl_health_reporter_destroy(health->empty_reporter);  } diff --git a/drivers/net/netdevsim/ipsec.c b/drivers/net/netdevsim/ipsec.c index 386336a38f34..f0d58092e7e9 100644 --- a/drivers/net/netdevsim/ipsec.c +++ b/drivers/net/netdevsim/ipsec.c @@ -125,7 +125,8 @@ static int nsim_ipsec_parse_proto_keys(struct xfrm_state *xs,  	return 0;  } -static int nsim_ipsec_add_sa(struct xfrm_state *xs) +static int nsim_ipsec_add_sa(struct xfrm_state *xs, +			     struct netlink_ext_ack *extack)  {  	struct nsim_ipsec *ipsec;  	struct net_device *dev; @@ -139,20 +140,24 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs)  	ipsec = &ns->ipsec;  	if (xs->id.proto != IPPROTO_ESP && xs->id.proto != IPPROTO_AH) { -		netdev_err(dev, "Unsupported protocol 0x%04x for ipsec offload\n", -			   xs->id.proto); +		NL_SET_ERR_MSG_MOD(extack, "Unsupported protocol for ipsec offload");  		return -EINVAL;  	}  	if (xs->calg) { -		netdev_err(dev, "Compression offload not supported\n"); +		NL_SET_ERR_MSG_MOD(extack, "Compression offload not supported"); +		return -EINVAL; +	} + +	if (xs->xso.type != XFRM_DEV_OFFLOAD_CRYPTO) { +		NL_SET_ERR_MSG_MOD(extack, "Unsupported ipsec offload type");  		return -EINVAL;  	}  	/* find the first unused index */  	ret = nsim_ipsec_find_empty_idx(ipsec);  	if (ret < 0) { -		netdev_err(dev, "No space for SA in Rx table!\n"); +		NL_SET_ERR_MSG_MOD(extack, "No space for SA in Rx table!");  		return ret;  	}  	sa_idx = (u16)ret; @@ -167,7 +172,7 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs)  	/* get the key and salt */  	ret = nsim_ipsec_parse_proto_keys(xs, sa.key, &sa.salt);  	if (ret) { -		netdev_err(dev, "Failed to get key data for SA table\n"); +		NL_SET_ERR_MSG_MOD(extack, "Failed to get key data for SA table");  		return ret;  	} diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index 9a1a5b203624..35fa1ca98671 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -67,10 +67,10 @@ nsim_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)  	unsigned int start;  	do { -		start = u64_stats_fetch_begin_irq(&ns->syncp); +		start = u64_stats_fetch_begin(&ns->syncp);  		stats->tx_bytes = ns->tx_bytes;  		stats->tx_packets = ns->tx_packets; -	} while (u64_stats_fetch_retry_irq(&ns->syncp, start)); +	} while (u64_stats_fetch_retry(&ns->syncp, start));  }  static int @@ -238,13 +238,6 @@ nsim_set_features(struct net_device *dev, netdev_features_t features)  	return 0;  } -static struct devlink_port *nsim_get_devlink_port(struct net_device *dev) -{ -	struct netdevsim *ns = netdev_priv(dev); - -	return &ns->nsim_dev_port->devlink_port; -} -  static const struct net_device_ops nsim_netdev_ops = {  	.ndo_start_xmit		= nsim_start_xmit,  	.ndo_set_rx_mode	= nsim_set_rx_mode, @@ -263,7 +256,6 @@ static const struct net_device_ops nsim_netdev_ops = {  	.ndo_setup_tc		= nsim_setup_tc,  	.ndo_set_features	= nsim_set_features,  	.ndo_bpf		= nsim_bpf, -	.ndo_get_devlink_port	= nsim_get_devlink_port,  };  static const struct net_device_ops nsim_vf_netdev_ops = { @@ -275,7 +267,6 @@ static const struct net_device_ops nsim_vf_netdev_ops = {  	.ndo_get_stats64	= nsim_get_stats64,  	.ndo_setup_tc		= nsim_setup_tc,  	.ndo_set_features	= nsim_set_features, -	.ndo_get_devlink_port	= nsim_get_devlink_port,  };  static void nsim_setup(struct net_device *dev) @@ -295,6 +286,7 @@ static void nsim_setup(struct net_device *dev)  			 NETIF_F_TSO;  	dev->hw_features |= NETIF_F_HW_TC;  	dev->max_mtu = ETH_MAX_MTU; +	dev->xdp_features = NETDEV_XDP_ACT_HW_OFFLOAD;  }  static int nsim_init_netdevsim(struct netdevsim *ns) @@ -360,6 +352,7 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port)  	ns->nsim_dev_port = nsim_dev_port;  	ns->nsim_bus_dev = nsim_dev->nsim_bus_dev;  	SET_NETDEV_DEV(dev, &ns->nsim_bus_dev->dev); +	SET_NETDEV_DEVLINK_PORT(dev, &nsim_dev_port->devlink_port);  	nsim_ethtool_init(ns);  	if (nsim_dev_port_is_pf(nsim_dev_port))  		err = nsim_init_netdevsim(ns);  |