Lines Matching refs:ns
52 struct netdevsim *ns = netdev_priv(dev); in nsim_start_xmit() local
60 if (!nsim_ipsec_tx(ns, skb)) in nsim_start_xmit()
63 peer_ns = rcu_dereference(ns->peer); in nsim_start_xmit()
80 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
81 ns->tx_packets++; in nsim_start_xmit()
82 ns->tx_bytes += len; in nsim_start_xmit()
83 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
90 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
91 ns->tx_dropped++; in nsim_start_xmit()
92 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
102 struct netdevsim *ns = netdev_priv(dev); in nsim_change_mtu() local
104 if (ns->xdp.prog && new_mtu > NSIM_XDP_MAX_MTU) in nsim_change_mtu()
115 struct netdevsim *ns = netdev_priv(dev); in nsim_get_stats64() local
119 start = u64_stats_fetch_begin(&ns->syncp); in nsim_get_stats64()
120 stats->tx_bytes = ns->tx_bytes; in nsim_get_stats64()
121 stats->tx_packets = ns->tx_packets; in nsim_get_stats64()
122 stats->tx_dropped = ns->tx_dropped; in nsim_get_stats64()
123 } while (u64_stats_fetch_retry(&ns->syncp, start)); in nsim_get_stats64()
134 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_mac() local
135 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_mac()
148 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_vlan() local
149 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_vlan()
163 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rate() local
164 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rate()
166 if (nsim_esw_mode_is_switchdev(ns->nsim_dev)) { in nsim_set_vf_rate()
182 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_spoofchk() local
183 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_spoofchk()
194 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rss_query_en() local
195 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rss_query_en()
206 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_trust() local
207 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_trust()
219 struct netdevsim *ns = netdev_priv(dev); in nsim_get_vf_config() local
220 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_get_vf_config()
242 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_link_state() local
243 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_link_state()
292 struct netdevsim *ns = netdev_priv(dev); in nsim_setup_tc() local
301 ns, ns, true); in nsim_setup_tc()
310 struct netdevsim *ns = netdev_priv(dev); in nsim_set_features() local
313 return nsim_bpf_disable_tc(ns); in nsim_set_features()
383 static int nsim_init_napi(struct netdevsim *ns) in nsim_init_napi() argument
385 struct net_device *dev = ns->netdev; in nsim_init_napi()
390 rq = &ns->rq[i]; in nsim_init_napi()
396 rq = &ns->rq[i]; in nsim_init_napi()
407 page_pool_destroy(ns->rq[i].page_pool); in nsim_init_napi()
408 ns->rq[i].page_pool = NULL; in nsim_init_napi()
412 __netif_napi_del(&ns->rq[i].napi); in nsim_init_napi()
417 static void nsim_enable_napi(struct netdevsim *ns) in nsim_enable_napi() argument
419 struct net_device *dev = ns->netdev; in nsim_enable_napi()
423 struct nsim_rq *rq = &ns->rq[i]; in nsim_enable_napi()
432 struct netdevsim *ns = netdev_priv(dev); in nsim_open() local
435 err = nsim_init_napi(ns); in nsim_open()
439 nsim_enable_napi(ns); in nsim_open()
444 static void nsim_del_napi(struct netdevsim *ns) in nsim_del_napi() argument
446 struct net_device *dev = ns->netdev; in nsim_del_napi()
450 struct nsim_rq *rq = &ns->rq[i]; in nsim_del_napi()
458 page_pool_destroy(ns->rq[i].page_pool); in nsim_del_napi()
459 ns->rq[i].page_pool = NULL; in nsim_del_napi()
465 struct netdevsim *ns = netdev_priv(dev); in nsim_stop() local
469 peer = rtnl_dereference(ns->peer); in nsim_stop()
473 nsim_del_napi(ns); in nsim_stop()
563 struct netdevsim *ns = file->private_data; in nsim_pp_hold_read() local
566 if (ns->page) in nsim_pp_hold_read()
576 struct netdevsim *ns = file->private_data; in nsim_pp_hold_write() local
586 if (val == !!ns->page) in nsim_pp_hold_write()
589 if (!netif_running(ns->netdev) && val) { in nsim_pp_hold_write()
592 ns->page = page_pool_dev_alloc_pages(ns->rq[0].page_pool); in nsim_pp_hold_write()
593 if (!ns->page) in nsim_pp_hold_write()
596 page_pool_put_full_page(ns->page->pp, ns->page, false); in nsim_pp_hold_write()
597 ns->page = NULL; in nsim_pp_hold_write()
632 static int nsim_queue_init(struct netdevsim *ns) in nsim_queue_init() argument
634 struct net_device *dev = ns->netdev; in nsim_queue_init()
637 ns->rq = kvcalloc(dev->num_rx_queues, sizeof(*ns->rq), in nsim_queue_init()
639 if (!ns->rq) in nsim_queue_init()
643 skb_queue_head_init(&ns->rq[i].skb_queue); in nsim_queue_init()
648 static void nsim_queue_free(struct netdevsim *ns) in nsim_queue_free() argument
650 struct net_device *dev = ns->netdev; in nsim_queue_free()
654 skb_queue_purge_reason(&ns->rq[i].skb_queue, in nsim_queue_free()
657 kvfree(ns->rq); in nsim_queue_free()
658 ns->rq = NULL; in nsim_queue_free()
661 static int nsim_init_netdevsim(struct netdevsim *ns) in nsim_init_netdevsim() argument
666 phc = mock_phc_create(&ns->nsim_bus_dev->dev); in nsim_init_netdevsim()
670 ns->phc = phc; in nsim_init_netdevsim()
671 ns->netdev->netdev_ops = &nsim_netdev_ops; in nsim_init_netdevsim()
672 ns->netdev->stat_ops = &nsim_stat_ops; in nsim_init_netdevsim()
674 err = nsim_udp_tunnels_info_create(ns->nsim_dev, ns->netdev); in nsim_init_netdevsim()
679 err = nsim_queue_init(ns); in nsim_init_netdevsim()
683 err = nsim_bpf_init(ns); in nsim_init_netdevsim()
687 nsim_macsec_init(ns); in nsim_init_netdevsim()
688 nsim_ipsec_init(ns); in nsim_init_netdevsim()
690 err = register_netdevice(ns->netdev); in nsim_init_netdevsim()
697 nsim_ipsec_teardown(ns); in nsim_init_netdevsim()
698 nsim_macsec_teardown(ns); in nsim_init_netdevsim()
699 nsim_bpf_uninit(ns); in nsim_init_netdevsim()
701 nsim_queue_free(ns); in nsim_init_netdevsim()
704 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_init_netdevsim()
706 mock_phc_destroy(ns->phc); in nsim_init_netdevsim()
710 static int nsim_init_netdevsim_vf(struct netdevsim *ns) in nsim_init_netdevsim_vf() argument
714 ns->netdev->netdev_ops = &nsim_vf_netdev_ops; in nsim_init_netdevsim_vf()
716 err = register_netdevice(ns->netdev); in nsim_init_netdevsim_vf()
721 static void nsim_exit_netdevsim(struct netdevsim *ns) in nsim_exit_netdevsim() argument
723 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_exit_netdevsim()
724 mock_phc_destroy(ns->phc); in nsim_exit_netdevsim()
731 struct netdevsim *ns; in nsim_create() local
734 dev = alloc_netdev_mq(sizeof(*ns), "eth%d", NET_NAME_UNKNOWN, nsim_setup, in nsim_create()
740 ns = netdev_priv(dev); in nsim_create()
741 ns->netdev = dev; in nsim_create()
742 u64_stats_init(&ns->syncp); in nsim_create()
743 ns->nsim_dev = nsim_dev; in nsim_create()
744 ns->nsim_dev_port = nsim_dev_port; in nsim_create()
745 ns->nsim_bus_dev = nsim_dev->nsim_bus_dev; in nsim_create()
746 SET_NETDEV_DEV(dev, &ns->nsim_bus_dev->dev); in nsim_create()
748 nsim_ethtool_init(ns); in nsim_create()
750 err = nsim_init_netdevsim(ns); in nsim_create()
752 err = nsim_init_netdevsim_vf(ns); in nsim_create()
756 ns->pp_dfs = debugfs_create_file("pp_hold", 0600, nsim_dev_port->ddir, in nsim_create()
757 ns, &nsim_pp_hold_fops); in nsim_create()
759 return ns; in nsim_create()
766 void nsim_destroy(struct netdevsim *ns) in nsim_destroy() argument
768 struct net_device *dev = ns->netdev; in nsim_destroy()
771 debugfs_remove(ns->pp_dfs); in nsim_destroy()
774 peer = rtnl_dereference(ns->peer); in nsim_destroy()
777 RCU_INIT_POINTER(ns->peer, NULL); in nsim_destroy()
779 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) { in nsim_destroy()
780 nsim_macsec_teardown(ns); in nsim_destroy()
781 nsim_ipsec_teardown(ns); in nsim_destroy()
782 nsim_bpf_uninit(ns); in nsim_destroy()
783 nsim_queue_free(ns); in nsim_destroy()
786 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) in nsim_destroy()
787 nsim_exit_netdevsim(ns); in nsim_destroy()
790 if (ns->page) { in nsim_destroy()
791 page_pool_put_full_page(ns->page->pp, ns->page, false); in nsim_destroy()
792 ns->page = NULL; in nsim_destroy()