Lines Matching full:ns
49 struct netdevsim *ns = to_nsim(dev); in nsim_num_vf() local
51 return ns->num_vfs; in nsim_num_vf()
60 static int nsim_vfs_enable(struct netdevsim *ns, unsigned int num_vfs) in nsim_vfs_enable() argument
62 ns->vfconfigs = kcalloc(num_vfs, sizeof(struct nsim_vf_config), in nsim_vfs_enable()
64 if (!ns->vfconfigs) in nsim_vfs_enable()
66 ns->num_vfs = num_vfs; in nsim_vfs_enable()
71 static void nsim_vfs_disable(struct netdevsim *ns) in nsim_vfs_disable() argument
73 kfree(ns->vfconfigs); in nsim_vfs_disable()
74 ns->vfconfigs = NULL; in nsim_vfs_disable()
75 ns->num_vfs = 0; in nsim_vfs_disable()
82 struct netdevsim *ns = to_nsim(dev); in nsim_numvfs_store() local
91 if (ns->num_vfs == num_vfs) in nsim_numvfs_store()
93 if (ns->num_vfs && num_vfs) { in nsim_numvfs_store()
99 ret = nsim_vfs_enable(ns, num_vfs); in nsim_numvfs_store()
103 nsim_vfs_disable(ns); in nsim_numvfs_store()
116 struct netdevsim *ns = to_nsim(dev); in nsim_numvfs_show() local
118 return sprintf(buf, "%u\n", ns->num_vfs); in nsim_numvfs_show()
140 struct netdevsim *ns = to_nsim(dev); in nsim_dev_release() local
142 nsim_vfs_disable(ns); in nsim_dev_release()
143 free_netdev(ns->netdev); in nsim_dev_release()
154 struct netdevsim *ns = netdev_priv(dev); in nsim_port_attr_get() local
158 attr->u.ppid.id_len = sizeof(ns->sdev->switch_id); in nsim_port_attr_get()
159 memcpy(&attr->u.ppid.id, &ns->sdev->switch_id, in nsim_port_attr_get()
174 struct netdevsim *ns = netdev_priv(dev); in nsim_init() local
177 ns->netdev = dev; in nsim_init()
178 ns->ddir = debugfs_create_dir(netdev_name(dev), nsim_ddir); in nsim_init()
179 if (IS_ERR_OR_NULL(ns->ddir)) in nsim_init()
182 if (!ns->sdev) { in nsim_init()
183 ns->sdev = kzalloc(sizeof(*ns->sdev), GFP_KERNEL); in nsim_init()
184 if (!ns->sdev) { in nsim_init()
188 ns->sdev->refcnt = 1; in nsim_init()
189 ns->sdev->switch_id = nsim_dev_id; in nsim_init()
190 sprintf(sdev_ddir_name, "%u", ns->sdev->switch_id); in nsim_init()
191 ns->sdev->ddir = debugfs_create_dir(sdev_ddir_name, in nsim_init()
193 if (IS_ERR_OR_NULL(ns->sdev->ddir)) { in nsim_init()
194 err = PTR_ERR_OR_ZERO(ns->sdev->ddir) ?: -EINVAL; in nsim_init()
198 sprintf(sdev_ddir_name, "%u", ns->sdev->switch_id); in nsim_init()
199 ns->sdev->refcnt++; in nsim_init()
203 debugfs_create_symlink("sdev", ns->ddir, sdev_link_name); in nsim_init()
205 err = nsim_bpf_init(ns); in nsim_init()
209 ns->dev.id = nsim_dev_id++; in nsim_init()
210 ns->dev.bus = &nsim_bus; in nsim_init()
211 ns->dev.type = &nsim_dev_type; in nsim_init()
212 err = device_register(&ns->dev); in nsim_init()
216 SET_NETDEV_DEV(dev, &ns->dev); in nsim_init()
219 err = nsim_devlink_setup(ns); in nsim_init()
223 nsim_ipsec_init(ns); in nsim_init()
228 device_unregister(&ns->dev); in nsim_init()
230 nsim_bpf_uninit(ns); in nsim_init()
232 if (!--ns->sdev->refcnt) { in nsim_init()
233 debugfs_remove_recursive(ns->sdev->ddir); in nsim_init()
235 kfree(ns->sdev); in nsim_init()
238 debugfs_remove_recursive(ns->ddir); in nsim_init()
244 struct netdevsim *ns = netdev_priv(dev); in nsim_uninit() local
246 nsim_ipsec_teardown(ns); in nsim_uninit()
247 nsim_devlink_teardown(ns); in nsim_uninit()
248 debugfs_remove_recursive(ns->ddir); in nsim_uninit()
249 nsim_bpf_uninit(ns); in nsim_uninit()
250 if (!--ns->sdev->refcnt) { in nsim_uninit()
251 debugfs_remove_recursive(ns->sdev->ddir); in nsim_uninit()
252 kfree(ns->sdev); in nsim_uninit()
258 struct netdevsim *ns = netdev_priv(dev); in nsim_free() local
260 device_unregister(&ns->dev); in nsim_free()
266 struct netdevsim *ns = netdev_priv(dev); in nsim_start_xmit() local
268 if (!nsim_ipsec_tx(ns, skb)) in nsim_start_xmit()
271 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
272 ns->tx_packets++; in nsim_start_xmit()
273 ns->tx_bytes += skb->len; in nsim_start_xmit()
274 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
288 struct netdevsim *ns = netdev_priv(dev); in nsim_change_mtu() local
290 if (ns->xdp.prog && new_mtu > NSIM_XDP_MAX_MTU) in nsim_change_mtu()
301 struct netdevsim *ns = netdev_priv(dev); in nsim_get_stats64() local
305 start = u64_stats_fetch_begin(&ns->syncp); in nsim_get_stats64()
306 stats->tx_bytes = ns->tx_bytes; in nsim_get_stats64()
307 stats->tx_packets = ns->tx_packets; in nsim_get_stats64()
308 } while (u64_stats_fetch_retry(&ns->syncp, start)); in nsim_get_stats64()
320 struct netdevsim *ns = netdev_priv(dev); in nsim_setup_tc_block() local
328 ns, ns, f->extack); in nsim_setup_tc_block()
330 tcf_block_cb_unregister(f->block, nsim_setup_tc_block_cb, ns); in nsim_setup_tc_block()
339 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_mac() local
342 if (vf >= ns->num_vfs || is_multicast_ether_addr(mac)) in nsim_set_vf_mac()
344 memcpy(ns->vfconfigs[vf].vf_mac, mac, ETH_ALEN); in nsim_set_vf_mac()
352 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_vlan() local
354 if (vf >= ns->num_vfs || vlan > 4095 || qos > 7) in nsim_set_vf_vlan()
357 ns->vfconfigs[vf].vlan = vlan; in nsim_set_vf_vlan()
358 ns->vfconfigs[vf].qos = qos; in nsim_set_vf_vlan()
359 ns->vfconfigs[vf].vlan_proto = vlan_proto; in nsim_set_vf_vlan()
366 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rate() local
368 if (vf >= ns->num_vfs) in nsim_set_vf_rate()
371 ns->vfconfigs[vf].min_tx_rate = min; in nsim_set_vf_rate()
372 ns->vfconfigs[vf].max_tx_rate = max; in nsim_set_vf_rate()
379 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_spoofchk() local
381 if (vf >= ns->num_vfs) in nsim_set_vf_spoofchk()
383 ns->vfconfigs[vf].spoofchk_enabled = val; in nsim_set_vf_spoofchk()
390 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rss_query_en() local
392 if (vf >= ns->num_vfs) in nsim_set_vf_rss_query_en()
394 ns->vfconfigs[vf].rss_query_enabled = val; in nsim_set_vf_rss_query_en()
401 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_trust() local
403 if (vf >= ns->num_vfs) in nsim_set_vf_trust()
405 ns->vfconfigs[vf].trusted = val; in nsim_set_vf_trust()
413 struct netdevsim *ns = netdev_priv(dev); in nsim_get_vf_config() local
415 if (vf >= ns->num_vfs) in nsim_get_vf_config()
419 ivi->linkstate = ns->vfconfigs[vf].link_state; in nsim_get_vf_config()
420 ivi->min_tx_rate = ns->vfconfigs[vf].min_tx_rate; in nsim_get_vf_config()
421 ivi->max_tx_rate = ns->vfconfigs[vf].max_tx_rate; in nsim_get_vf_config()
422 ivi->vlan = ns->vfconfigs[vf].vlan; in nsim_get_vf_config()
423 ivi->vlan_proto = ns->vfconfigs[vf].vlan_proto; in nsim_get_vf_config()
424 ivi->qos = ns->vfconfigs[vf].qos; in nsim_get_vf_config()
425 memcpy(&ivi->mac, ns->vfconfigs[vf].vf_mac, ETH_ALEN); in nsim_get_vf_config()
426 ivi->spoofchk = ns->vfconfigs[vf].spoofchk_enabled; in nsim_get_vf_config()
427 ivi->trusted = ns->vfconfigs[vf].trusted; in nsim_get_vf_config()
428 ivi->rss_query_en = ns->vfconfigs[vf].rss_query_enabled; in nsim_get_vf_config()
435 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_link_state() local
437 if (vf >= ns->num_vfs) in nsim_set_vf_link_state()
449 ns->vfconfigs[vf].link_state = state; in nsim_set_vf_link_state()
468 struct netdevsim *ns = netdev_priv(dev); in nsim_set_features() local
471 return nsim_bpf_disable_tc(ns); in nsim_set_features()
536 struct netdevsim *ns = netdev_priv(dev); in nsim_newlink() local
552 ns->sdev = joinns->sdev; in nsim_newlink()