Lines Matching full:ns
57 struct netdevsim *ns = netdev_priv(dev); in nsim_start_xmit() local
66 if (!nsim_ipsec_tx(ns, skb)) in nsim_start_xmit()
69 peer_ns = rcu_dereference(ns->peer); in nsim_start_xmit()
93 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
94 ns->tx_packets++; in nsim_start_xmit()
95 ns->tx_bytes += len; in nsim_start_xmit()
96 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
103 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
104 ns->tx_dropped++; in nsim_start_xmit()
105 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
115 struct netdevsim *ns = netdev_priv(dev); in nsim_change_mtu() local
117 if (ns->xdp.prog && new_mtu > NSIM_XDP_MAX_MTU) in nsim_change_mtu()
128 struct netdevsim *ns = netdev_priv(dev); in nsim_get_stats64() local
132 start = u64_stats_fetch_begin(&ns->syncp); in nsim_get_stats64()
133 stats->tx_bytes = ns->tx_bytes; in nsim_get_stats64()
134 stats->tx_packets = ns->tx_packets; in nsim_get_stats64()
135 stats->tx_dropped = ns->tx_dropped; in nsim_get_stats64()
136 } while (u64_stats_fetch_retry(&ns->syncp, start)); in nsim_get_stats64()
147 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_mac() local
148 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_mac()
161 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_vlan() local
162 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_vlan()
176 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rate() local
177 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rate()
179 if (nsim_esw_mode_is_switchdev(ns->nsim_dev)) { in nsim_set_vf_rate()
195 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_spoofchk() local
196 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_spoofchk()
207 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rss_query_en() local
208 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rss_query_en()
219 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_trust() local
220 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_trust()
232 struct netdevsim *ns = netdev_priv(dev); in nsim_get_vf_config() local
233 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_get_vf_config()
255 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_link_state() local
256 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_link_state()
305 struct netdevsim *ns = netdev_priv(dev); in nsim_setup_tc() local
314 ns, ns, true); in nsim_setup_tc()
323 struct netdevsim *ns = netdev_priv(dev); in nsim_set_features() local
326 return nsim_bpf_disable_tc(ns); in nsim_set_features()
395 static int nsim_init_napi(struct netdevsim *ns) in nsim_init_napi() argument
397 struct net_device *dev = ns->netdev; in nsim_init_napi()
402 rq = ns->rq[i]; in nsim_init_napi()
408 rq = ns->rq[i]; in nsim_init_napi()
419 page_pool_destroy(ns->rq[i]->page_pool); in nsim_init_napi()
420 ns->rq[i]->page_pool = NULL; in nsim_init_napi()
424 __netif_napi_del(&ns->rq[i]->napi); in nsim_init_napi()
429 static void nsim_enable_napi(struct netdevsim *ns) in nsim_enable_napi() argument
431 struct net_device *dev = ns->netdev; in nsim_enable_napi()
435 struct nsim_rq *rq = ns->rq[i]; in nsim_enable_napi()
444 struct netdevsim *ns = netdev_priv(dev); in nsim_open() local
447 err = nsim_init_napi(ns); in nsim_open()
451 nsim_enable_napi(ns); in nsim_open()
456 static void nsim_del_napi(struct netdevsim *ns) in nsim_del_napi() argument
458 struct net_device *dev = ns->netdev; in nsim_del_napi()
462 struct nsim_rq *rq = ns->rq[i]; in nsim_del_napi()
470 page_pool_destroy(ns->rq[i]->page_pool); in nsim_del_napi()
471 ns->rq[i]->page_pool = NULL; in nsim_del_napi()
477 struct netdevsim *ns = netdev_priv(dev); in nsim_stop() local
481 peer = rtnl_dereference(ns->peer); in nsim_stop()
485 nsim_del_napi(ns); in nsim_stop()
627 /* Queue reset mode is controlled by ns->rq_reset_mode.
642 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_mem_alloc() local
645 if (ns->rq_reset_mode > 3) in nsim_queue_mem_alloc()
648 if (ns->rq_reset_mode == 1) in nsim_queue_mem_alloc()
649 return nsim_create_page_pool(&qmem->pp, &ns->rq[idx]->napi); in nsim_queue_mem_alloc()
659 if (!ns->rq_reset_mode) in nsim_queue_mem_alloc()
672 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_mem_free() local
676 if (!ns->rq_reset_mode) in nsim_queue_mem_free()
687 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_start() local
689 if (ns->rq_reset_mode == 1) { in nsim_queue_start()
690 ns->rq[idx]->page_pool = qmem->pp; in nsim_queue_start()
691 napi_enable(&ns->rq[idx]->napi); in nsim_queue_start()
698 if (ns->rq_reset_mode == 2) { in nsim_queue_start()
699 netif_napi_del(&ns->rq[idx]->napi); in nsim_queue_start()
701 } else if (ns->rq_reset_mode == 3) { in nsim_queue_start()
703 netif_napi_del(&ns->rq[idx]->napi); in nsim_queue_start()
706 ns->rq[idx] = qmem->rq; in nsim_queue_start()
707 napi_enable(&ns->rq[idx]->napi); in nsim_queue_start()
715 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_stop() local
717 napi_disable(&ns->rq[idx]->napi); in nsim_queue_stop()
719 if (ns->rq_reset_mode == 1) { in nsim_queue_stop()
720 qmem->pp = ns->rq[idx]->page_pool; in nsim_queue_stop()
723 qmem->rq = ns->rq[idx]; in nsim_queue_stop()
741 struct netdevsim *ns = file->private_data; in nsim_qreset_write() local
757 if (!netif_running(ns->netdev)) { in nsim_qreset_write()
762 if (queue >= ns->netdev->real_num_rx_queues) { in nsim_qreset_write()
767 ns->rq_reset_mode = mode; in nsim_qreset_write()
768 ret = netdev_rx_queue_restart(ns->netdev, queue); in nsim_qreset_write()
769 ns->rq_reset_mode = 0; in nsim_qreset_write()
789 struct netdevsim *ns = file->private_data; in nsim_pp_hold_read() local
792 if (ns->page) in nsim_pp_hold_read()
802 struct netdevsim *ns = file->private_data; in nsim_pp_hold_write() local
812 if (val == !!ns->page) in nsim_pp_hold_write()
815 if (!netif_running(ns->netdev) && val) { in nsim_pp_hold_write()
818 ns->page = page_pool_dev_alloc_pages(ns->rq[0]->page_pool); in nsim_pp_hold_write()
819 if (!ns->page) in nsim_pp_hold_write()
822 page_pool_put_full_page(ns->page->pp, ns->page, false); in nsim_pp_hold_write()
823 ns->page = NULL; in nsim_pp_hold_write()
862 static int nsim_queue_init(struct netdevsim *ns) in nsim_queue_init() argument
864 struct net_device *dev = ns->netdev; in nsim_queue_init()
867 ns->rq = kcalloc(dev->num_rx_queues, sizeof(*ns->rq), in nsim_queue_init()
869 if (!ns->rq) in nsim_queue_init()
873 ns->rq[i] = nsim_queue_alloc(); in nsim_queue_init()
874 if (!ns->rq[i]) in nsim_queue_init()
882 kfree(ns->rq[i]); in nsim_queue_init()
883 kfree(ns->rq); in nsim_queue_init()
887 static void nsim_queue_uninit(struct netdevsim *ns) in nsim_queue_uninit() argument
889 struct net_device *dev = ns->netdev; in nsim_queue_uninit()
893 nsim_queue_free(ns->rq[i]); in nsim_queue_uninit()
895 kfree(ns->rq); in nsim_queue_uninit()
896 ns->rq = NULL; in nsim_queue_uninit()
899 static int nsim_init_netdevsim(struct netdevsim *ns) in nsim_init_netdevsim() argument
904 phc = mock_phc_create(&ns->nsim_bus_dev->dev); in nsim_init_netdevsim()
908 ns->phc = phc; in nsim_init_netdevsim()
909 ns->netdev->netdev_ops = &nsim_netdev_ops; in nsim_init_netdevsim()
910 ns->netdev->stat_ops = &nsim_stat_ops; in nsim_init_netdevsim()
911 ns->netdev->queue_mgmt_ops = &nsim_queue_mgmt_ops; in nsim_init_netdevsim()
913 err = nsim_udp_tunnels_info_create(ns->nsim_dev, ns->netdev); in nsim_init_netdevsim()
918 err = nsim_queue_init(ns); in nsim_init_netdevsim()
922 err = nsim_bpf_init(ns); in nsim_init_netdevsim()
926 nsim_macsec_init(ns); in nsim_init_netdevsim()
927 nsim_ipsec_init(ns); in nsim_init_netdevsim()
929 err = register_netdevice(ns->netdev); in nsim_init_netdevsim()
936 nsim_ipsec_teardown(ns); in nsim_init_netdevsim()
937 nsim_macsec_teardown(ns); in nsim_init_netdevsim()
938 nsim_bpf_uninit(ns); in nsim_init_netdevsim()
940 nsim_queue_uninit(ns); in nsim_init_netdevsim()
943 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_init_netdevsim()
945 mock_phc_destroy(ns->phc); in nsim_init_netdevsim()
949 static int nsim_init_netdevsim_vf(struct netdevsim *ns) in nsim_init_netdevsim_vf() argument
953 ns->netdev->netdev_ops = &nsim_vf_netdev_ops; in nsim_init_netdevsim_vf()
955 err = register_netdevice(ns->netdev); in nsim_init_netdevsim_vf()
960 static void nsim_exit_netdevsim(struct netdevsim *ns) in nsim_exit_netdevsim() argument
962 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_exit_netdevsim()
963 mock_phc_destroy(ns->phc); in nsim_exit_netdevsim()
970 struct netdevsim *ns; in nsim_create() local
973 dev = alloc_netdev_mq(sizeof(*ns), "eth%d", NET_NAME_UNKNOWN, nsim_setup, in nsim_create()
979 ns = netdev_priv(dev); in nsim_create()
980 ns->netdev = dev; in nsim_create()
981 u64_stats_init(&ns->syncp); in nsim_create()
982 ns->nsim_dev = nsim_dev; in nsim_create()
983 ns->nsim_dev_port = nsim_dev_port; in nsim_create()
984 ns->nsim_bus_dev = nsim_dev->nsim_bus_dev; in nsim_create()
985 SET_NETDEV_DEV(dev, &ns->nsim_bus_dev->dev); in nsim_create()
987 nsim_ethtool_init(ns); in nsim_create()
989 err = nsim_init_netdevsim(ns); in nsim_create()
991 err = nsim_init_netdevsim_vf(ns); in nsim_create()
995 ns->pp_dfs = debugfs_create_file("pp_hold", 0600, nsim_dev_port->ddir, in nsim_create()
996 ns, &nsim_pp_hold_fops); in nsim_create()
997 ns->qr_dfs = debugfs_create_file("queue_reset", 0200, in nsim_create()
998 nsim_dev_port->ddir, ns, in nsim_create()
1001 return ns; in nsim_create()
1008 void nsim_destroy(struct netdevsim *ns) in nsim_destroy() argument
1010 struct net_device *dev = ns->netdev; in nsim_destroy()
1013 debugfs_remove(ns->qr_dfs); in nsim_destroy()
1014 debugfs_remove(ns->pp_dfs); in nsim_destroy()
1017 peer = rtnl_dereference(ns->peer); in nsim_destroy()
1020 RCU_INIT_POINTER(ns->peer, NULL); in nsim_destroy()
1022 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) { in nsim_destroy()
1023 nsim_macsec_teardown(ns); in nsim_destroy()
1024 nsim_ipsec_teardown(ns); in nsim_destroy()
1025 nsim_bpf_uninit(ns); in nsim_destroy()
1026 nsim_queue_uninit(ns); in nsim_destroy()
1029 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) in nsim_destroy()
1030 nsim_exit_netdevsim(ns); in nsim_destroy()
1033 if (ns->page) { in nsim_destroy()
1034 page_pool_put_full_page(ns->page->pp, ns->page, false); in nsim_destroy()
1035 ns->page = NULL; in nsim_destroy()