Lines Matching full:ns
58 struct netdevsim *ns = netdev_priv(dev); in nsim_start_xmit() local
67 if (!nsim_ipsec_tx(ns, skb)) in nsim_start_xmit()
70 peer_ns = rcu_dereference(ns->peer); in nsim_start_xmit()
95 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
96 ns->tx_packets++; in nsim_start_xmit()
97 ns->tx_bytes += len; in nsim_start_xmit()
98 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
105 u64_stats_update_begin(&ns->syncp); in nsim_start_xmit()
106 ns->tx_dropped++; in nsim_start_xmit()
107 u64_stats_update_end(&ns->syncp); in nsim_start_xmit()
117 struct netdevsim *ns = netdev_priv(dev); in nsim_change_mtu() local
119 if (ns->xdp.prog && !ns->xdp.prog->aux->xdp_has_frags && in nsim_change_mtu()
131 struct netdevsim *ns = netdev_priv(dev); in nsim_get_stats64() local
135 start = u64_stats_fetch_begin(&ns->syncp); in nsim_get_stats64()
136 stats->tx_bytes = ns->tx_bytes; in nsim_get_stats64()
137 stats->tx_packets = ns->tx_packets; in nsim_get_stats64()
138 stats->tx_dropped = ns->tx_dropped; in nsim_get_stats64()
139 } while (u64_stats_fetch_retry(&ns->syncp, start)); in nsim_get_stats64()
150 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_mac() local
151 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_mac()
164 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_vlan() local
165 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_vlan()
179 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rate() local
180 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rate()
182 if (nsim_esw_mode_is_switchdev(ns->nsim_dev)) { in nsim_set_vf_rate()
198 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_spoofchk() local
199 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_spoofchk()
210 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rss_query_en() local
211 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rss_query_en()
222 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_trust() local
223 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_trust()
235 struct netdevsim *ns = netdev_priv(dev); in nsim_get_vf_config() local
236 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_get_vf_config()
258 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_link_state() local
259 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_link_state()
308 struct netdevsim *ns = netdev_priv(dev); in nsim_setup_tc() local
317 ns, ns, true); in nsim_setup_tc()
326 struct netdevsim *ns = netdev_priv(dev); in nsim_set_features() local
329 return nsim_bpf_disable_tc(ns); in nsim_set_features()
398 static int nsim_init_napi(struct netdevsim *ns) in nsim_init_napi() argument
400 struct net_device *dev = ns->netdev; in nsim_init_napi()
405 rq = ns->rq[i]; in nsim_init_napi()
411 rq = ns->rq[i]; in nsim_init_napi()
422 page_pool_destroy(ns->rq[i]->page_pool); in nsim_init_napi()
423 ns->rq[i]->page_pool = NULL; in nsim_init_napi()
427 __netif_napi_del_locked(&ns->rq[i]->napi); in nsim_init_napi()
448 static void nsim_enable_napi(struct netdevsim *ns) in nsim_enable_napi() argument
450 struct net_device *dev = ns->netdev; in nsim_enable_napi()
454 struct nsim_rq *rq = ns->rq[i]; in nsim_enable_napi()
463 struct netdevsim *ns = netdev_priv(dev); in nsim_open() local
468 err = nsim_init_napi(ns); in nsim_open()
472 nsim_enable_napi(ns); in nsim_open()
477 static void nsim_del_napi(struct netdevsim *ns) in nsim_del_napi() argument
479 struct net_device *dev = ns->netdev; in nsim_del_napi()
483 struct nsim_rq *rq = ns->rq[i]; in nsim_del_napi()
491 page_pool_destroy(ns->rq[i]->page_pool); in nsim_del_napi()
492 ns->rq[i]->page_pool = NULL; in nsim_del_napi()
498 struct netdevsim *ns = netdev_priv(dev); in nsim_stop() local
504 peer = rtnl_dereference(ns->peer); in nsim_stop()
508 nsim_del_napi(ns); in nsim_stop()
652 /* Queue reset mode is controlled by ns->rq_reset_mode.
667 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_mem_alloc() local
670 if (ns->rq_reset_mode > 3) in nsim_queue_mem_alloc()
673 if (ns->rq_reset_mode == 1) { in nsim_queue_mem_alloc()
674 if (!netif_running(ns->netdev)) in nsim_queue_mem_alloc()
676 return nsim_create_page_pool(&qmem->pp, &ns->rq[idx]->napi); in nsim_queue_mem_alloc()
687 if (!ns->rq_reset_mode) in nsim_queue_mem_alloc()
701 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_mem_free() local
705 if (!ns->rq_reset_mode) in nsim_queue_mem_free()
716 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_start() local
720 if (ns->rq_reset_mode == 1) { in nsim_queue_start()
721 ns->rq[idx]->page_pool = qmem->pp; in nsim_queue_start()
722 napi_enable_locked(&ns->rq[idx]->napi); in nsim_queue_start()
729 if (ns->rq_reset_mode == 2) { in nsim_queue_start()
730 netif_napi_del_locked(&ns->rq[idx]->napi); in nsim_queue_start()
733 } else if (ns->rq_reset_mode == 3) { in nsim_queue_start()
736 netif_napi_del_locked(&ns->rq[idx]->napi); in nsim_queue_start()
739 ns->rq[idx] = qmem->rq; in nsim_queue_start()
740 napi_enable_locked(&ns->rq[idx]->napi); in nsim_queue_start()
748 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_stop() local
752 napi_disable_locked(&ns->rq[idx]->napi); in nsim_queue_stop()
754 if (ns->rq_reset_mode == 1) { in nsim_queue_stop()
755 qmem->pp = ns->rq[idx]->page_pool; in nsim_queue_stop()
758 qmem->rq = ns->rq[idx]; in nsim_queue_stop()
776 struct netdevsim *ns = file->private_data; in nsim_qreset_write() local
791 netdev_lock(ns->netdev); in nsim_qreset_write()
792 if (queue >= ns->netdev->real_num_rx_queues) { in nsim_qreset_write()
797 ns->rq_reset_mode = mode; in nsim_qreset_write()
798 ret = netdev_rx_queue_restart(ns->netdev, queue); in nsim_qreset_write()
799 ns->rq_reset_mode = 0; in nsim_qreset_write()
805 netdev_unlock(ns->netdev); in nsim_qreset_write()
819 struct netdevsim *ns = file->private_data; in nsim_pp_hold_read() local
822 if (ns->page) in nsim_pp_hold_read()
832 struct netdevsim *ns = file->private_data; in nsim_pp_hold_write() local
842 if (val == !!ns->page) in nsim_pp_hold_write()
845 if (!netif_running(ns->netdev) && val) { in nsim_pp_hold_write()
848 ns->page = page_pool_dev_alloc_pages(ns->rq[0]->page_pool); in nsim_pp_hold_write()
849 if (!ns->page) in nsim_pp_hold_write()
852 page_pool_put_full_page(ns->page->pp, ns->page, false); in nsim_pp_hold_write()
853 ns->page = NULL; in nsim_pp_hold_write()
892 static int nsim_queue_init(struct netdevsim *ns) in nsim_queue_init() argument
894 struct net_device *dev = ns->netdev; in nsim_queue_init()
897 ns->rq = kcalloc(dev->num_rx_queues, sizeof(*ns->rq), in nsim_queue_init()
899 if (!ns->rq) in nsim_queue_init()
903 ns->rq[i] = nsim_queue_alloc(); in nsim_queue_init()
904 if (!ns->rq[i]) in nsim_queue_init()
912 kfree(ns->rq[i]); in nsim_queue_init()
913 kfree(ns->rq); in nsim_queue_init()
917 static void nsim_queue_uninit(struct netdevsim *ns) in nsim_queue_uninit() argument
919 struct net_device *dev = ns->netdev; in nsim_queue_uninit()
923 nsim_queue_free(ns->rq[i]); in nsim_queue_uninit()
925 kfree(ns->rq); in nsim_queue_uninit()
926 ns->rq = NULL; in nsim_queue_uninit()
929 static int nsim_init_netdevsim(struct netdevsim *ns) in nsim_init_netdevsim() argument
934 phc = mock_phc_create(&ns->nsim_bus_dev->dev); in nsim_init_netdevsim()
938 ns->phc = phc; in nsim_init_netdevsim()
939 ns->netdev->netdev_ops = &nsim_netdev_ops; in nsim_init_netdevsim()
940 ns->netdev->stat_ops = &nsim_stat_ops; in nsim_init_netdevsim()
941 ns->netdev->queue_mgmt_ops = &nsim_queue_mgmt_ops; in nsim_init_netdevsim()
942 netdev_lockdep_set_classes(ns->netdev); in nsim_init_netdevsim()
944 err = nsim_udp_tunnels_info_create(ns->nsim_dev, ns->netdev); in nsim_init_netdevsim()
949 err = nsim_queue_init(ns); in nsim_init_netdevsim()
953 err = nsim_bpf_init(ns); in nsim_init_netdevsim()
957 nsim_macsec_init(ns); in nsim_init_netdevsim()
958 nsim_ipsec_init(ns); in nsim_init_netdevsim()
960 err = register_netdevice(ns->netdev); in nsim_init_netdevsim()
966 ns->nb.notifier_call = netdev_debug_event; in nsim_init_netdevsim()
967 if (register_netdevice_notifier_dev_net(ns->netdev, &ns->nb, in nsim_init_netdevsim()
968 &ns->nn)) in nsim_init_netdevsim()
969 ns->nb.notifier_call = NULL; in nsim_init_netdevsim()
975 nsim_ipsec_teardown(ns); in nsim_init_netdevsim()
976 nsim_macsec_teardown(ns); in nsim_init_netdevsim()
977 nsim_bpf_uninit(ns); in nsim_init_netdevsim()
979 nsim_queue_uninit(ns); in nsim_init_netdevsim()
982 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_init_netdevsim()
984 mock_phc_destroy(ns->phc); in nsim_init_netdevsim()
988 static int nsim_init_netdevsim_vf(struct netdevsim *ns) in nsim_init_netdevsim_vf() argument
992 ns->netdev->netdev_ops = &nsim_vf_netdev_ops; in nsim_init_netdevsim_vf()
994 err = register_netdevice(ns->netdev); in nsim_init_netdevsim_vf()
999 static void nsim_exit_netdevsim(struct netdevsim *ns) in nsim_exit_netdevsim() argument
1001 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_exit_netdevsim()
1002 mock_phc_destroy(ns->phc); in nsim_exit_netdevsim()
1009 struct netdevsim *ns; in nsim_create() local
1012 dev = alloc_netdev_mq(sizeof(*ns), "eth%d", NET_NAME_UNKNOWN, nsim_setup, in nsim_create()
1018 ns = netdev_priv(dev); in nsim_create()
1019 ns->netdev = dev; in nsim_create()
1020 u64_stats_init(&ns->syncp); in nsim_create()
1021 ns->nsim_dev = nsim_dev; in nsim_create()
1022 ns->nsim_dev_port = nsim_dev_port; in nsim_create()
1023 ns->nsim_bus_dev = nsim_dev->nsim_bus_dev; in nsim_create()
1024 SET_NETDEV_DEV(dev, &ns->nsim_bus_dev->dev); in nsim_create()
1026 nsim_ethtool_init(ns); in nsim_create()
1028 err = nsim_init_netdevsim(ns); in nsim_create()
1030 err = nsim_init_netdevsim_vf(ns); in nsim_create()
1034 ns->pp_dfs = debugfs_create_file("pp_hold", 0600, nsim_dev_port->ddir, in nsim_create()
1035 ns, &nsim_pp_hold_fops); in nsim_create()
1036 ns->qr_dfs = debugfs_create_file("queue_reset", 0200, in nsim_create()
1037 nsim_dev_port->ddir, ns, in nsim_create()
1040 return ns; in nsim_create()
1047 void nsim_destroy(struct netdevsim *ns) in nsim_destroy() argument
1049 struct net_device *dev = ns->netdev; in nsim_destroy()
1052 debugfs_remove(ns->qr_dfs); in nsim_destroy()
1053 debugfs_remove(ns->pp_dfs); in nsim_destroy()
1055 if (ns->nb.notifier_call) in nsim_destroy()
1056 unregister_netdevice_notifier_dev_net(ns->netdev, &ns->nb, in nsim_destroy()
1057 &ns->nn); in nsim_destroy()
1060 peer = rtnl_dereference(ns->peer); in nsim_destroy()
1063 RCU_INIT_POINTER(ns->peer, NULL); in nsim_destroy()
1065 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) { in nsim_destroy()
1066 nsim_macsec_teardown(ns); in nsim_destroy()
1067 nsim_ipsec_teardown(ns); in nsim_destroy()
1068 nsim_bpf_uninit(ns); in nsim_destroy()
1069 nsim_queue_uninit(ns); in nsim_destroy()
1072 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) in nsim_destroy()
1073 nsim_exit_netdevsim(ns); in nsim_destroy()
1076 if (ns->page) { in nsim_destroy()
1077 page_pool_put_full_page(ns->page->pp, ns->page, false); in nsim_destroy()
1078 ns->page = NULL; in nsim_destroy()