Lines Matching +full:0 +full:ns

42 	struct netdevsim *ns = netdev_priv(dev);  in nsim_start_peer_tx_queue()  local
50 peer_ns = rcu_dereference(ns->peer); in nsim_start_peer_tx_queue()
122 struct netdevsim *ns = netdev_priv(dev); in nsim_start_xmit() local
133 if (!nsim_ipsec_tx(ns, skb)) in nsim_start_xmit()
136 peer_ns = rcu_dereference(ns->peer); in nsim_start_xmit()
140 dr = nsim_do_psp(skb, ns, peer_ns, &psp_ext); in nsim_start_xmit()
185 struct netdevsim *ns = netdev_priv(dev); in nsim_change_mtu() local
187 if (ns->xdp.prog && !ns->xdp.prog->aux->xdp_has_frags && in nsim_change_mtu()
193 return 0; in nsim_change_mtu()
204 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_mac() local
205 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_mac()
212 return 0; in nsim_set_vf_mac()
218 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_vlan() local
219 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_vlan()
228 return 0; in nsim_set_vf_vlan()
233 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rate() local
234 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rate()
236 if (nsim_esw_mode_is_switchdev(ns->nsim_dev)) { in nsim_set_vf_rate()
247 return 0; in nsim_set_vf_rate()
252 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_spoofchk() local
253 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_spoofchk()
259 return 0; in nsim_set_vf_spoofchk()
264 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_rss_query_en() local
265 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_rss_query_en()
271 return 0; in nsim_set_vf_rss_query_en()
276 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_trust() local
277 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_trust()
283 return 0; in nsim_set_vf_trust()
289 struct netdevsim *ns = netdev_priv(dev); in nsim_get_vf_config() local
290 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_get_vf_config()
307 return 0; in nsim_get_vf_config()
312 struct netdevsim *ns = netdev_priv(dev); in nsim_set_vf_link_state() local
313 struct nsim_dev *nsim_dev = ns->nsim_dev; in nsim_set_vf_link_state()
329 return 0; in nsim_set_vf_link_state()
334 stats->window_drops = 0; in nsim_taprio_stats()
335 stats->tx_overruns = 0; in nsim_taprio_stats()
341 int err = 0; in nsim_setup_tc_taprio()
362 struct netdevsim *ns = netdev_priv(dev); in nsim_setup_tc() local
371 ns, ns, true); in nsim_setup_tc()
380 struct netdevsim *ns = netdev_priv(dev); in nsim_set_features() local
383 return nsim_bpf_disable_tc(ns); in nsim_set_features()
385 return 0; in nsim_set_features()
408 struct netdevsim *ns; in nsim_rcv() local
413 ns = netdev_priv(dev); in nsim_rcv()
414 xdp_prog = READ_ONCE(ns->xdp.prog); in nsim_rcv()
416 for (i = 0; i < budget; i++) { in nsim_rcv()
464 .order = 0, in nsim_create_page_pool()
479 return 0; in nsim_create_page_pool()
482 static int nsim_init_napi(struct netdevsim *ns) in nsim_init_napi() argument
484 struct net_device *dev = ns->netdev; in nsim_init_napi()
488 for (i = 0; i < dev->num_rx_queues; i++) { in nsim_init_napi()
489 rq = ns->rq[i]; in nsim_init_napi()
494 for (i = 0; i < dev->num_rx_queues; i++) { in nsim_init_napi()
495 rq = ns->rq[i]; in nsim_init_napi()
502 return 0; in nsim_init_napi()
506 page_pool_destroy(ns->rq[i]->page_pool); in nsim_init_napi()
507 ns->rq[i]->page_pool = NULL; in nsim_init_napi()
510 for (i = 0; i < dev->num_rx_queues; i++) in nsim_init_napi()
511 __netif_napi_del_locked(&ns->rq[i]->napi); in nsim_init_napi()
532 static void nsim_enable_napi(struct netdevsim *ns) in nsim_enable_napi() argument
534 struct net_device *dev = ns->netdev; in nsim_enable_napi()
537 for (i = 0; i < dev->num_rx_queues; i++) { in nsim_enable_napi()
538 struct nsim_rq *rq = ns->rq[i]; in nsim_enable_napi()
547 struct netdevsim *ns = netdev_priv(dev); in nsim_open() local
553 err = nsim_init_napi(ns); in nsim_open()
557 nsim_enable_napi(ns); in nsim_open()
559 peer = rtnl_dereference(ns->peer); in nsim_open()
565 return 0; in nsim_open()
568 static void nsim_del_napi(struct netdevsim *ns) in nsim_del_napi() argument
570 struct net_device *dev = ns->netdev; in nsim_del_napi()
573 for (i = 0; i < dev->num_rx_queues; i++) { in nsim_del_napi()
574 struct nsim_rq *rq = ns->rq[i]; in nsim_del_napi()
581 for (i = 0; i < dev->num_rx_queues; i++) { in nsim_del_napi()
582 page_pool_destroy(ns->rq[i]->page_pool); in nsim_del_napi()
583 ns->rq[i]->page_pool = NULL; in nsim_del_napi()
589 struct netdevsim *ns = netdev_priv(dev); in nsim_stop() local
595 peer = rtnl_dereference(ns->peer); in nsim_stop()
599 nsim_del_napi(ns); in nsim_stop()
601 return 0; in nsim_stop()
608 return 0; in nsim_shaper_set()
615 return 0; in nsim_shaper_del()
624 return 0; in nsim_shaper_group()
675 * Only report stuff for queue 0.
710 rx->bytes = 0; in nsim_get_base_stats()
712 tx->bytes = 0; in nsim_get_base_stats()
748 /* Queue reset mode is controlled by ns->rq_reset_mode.
763 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_mem_alloc() local
766 if (ns->rq_reset_mode > 3) in nsim_queue_mem_alloc()
769 if (ns->rq_reset_mode == 1) { in nsim_queue_mem_alloc()
770 if (!netif_running(ns->netdev)) in nsim_queue_mem_alloc()
772 return nsim_create_page_pool(&qmem->pp, &ns->rq[idx]->napi); in nsim_queue_mem_alloc()
783 if (!ns->rq_reset_mode) in nsim_queue_mem_alloc()
787 return 0; in nsim_queue_mem_alloc()
797 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_mem_free() local
801 if (!ns->rq_reset_mode) in nsim_queue_mem_free()
812 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_start() local
816 if (ns->rq_reset_mode == 1) { in nsim_queue_start()
817 ns->rq[idx]->page_pool = qmem->pp; in nsim_queue_start()
818 napi_enable_locked(&ns->rq[idx]->napi); in nsim_queue_start()
819 return 0; in nsim_queue_start()
825 if (ns->rq_reset_mode == 2) { in nsim_queue_start()
826 netif_napi_del_locked(&ns->rq[idx]->napi); in nsim_queue_start()
829 } else if (ns->rq_reset_mode == 3) { in nsim_queue_start()
832 netif_napi_del_locked(&ns->rq[idx]->napi); in nsim_queue_start()
835 ns->rq[idx] = qmem->rq; in nsim_queue_start()
836 napi_enable_locked(&ns->rq[idx]->napi); in nsim_queue_start()
838 return 0; in nsim_queue_start()
844 struct netdevsim *ns = netdev_priv(dev); in nsim_queue_stop() local
848 napi_disable_locked(&ns->rq[idx]->napi); in nsim_queue_stop()
850 if (ns->rq_reset_mode == 1) { in nsim_queue_stop()
851 qmem->pp = ns->rq[idx]->page_pool; in nsim_queue_stop()
854 qmem->rq = ns->rq[idx]; in nsim_queue_stop()
857 return 0; in nsim_queue_stop()
872 struct netdevsim *ns = file->private_data; in nsim_qreset_write() local
881 buf[count] = '\0'; in nsim_qreset_write()
887 netdev_lock(ns->netdev); in nsim_qreset_write()
888 if (queue >= ns->netdev->real_num_rx_queues) { in nsim_qreset_write()
893 ns->rq_reset_mode = mode; in nsim_qreset_write()
894 ret = netdev_rx_queue_restart(ns->netdev, queue); in nsim_qreset_write()
895 ns->rq_reset_mode = 0; in nsim_qreset_write()
901 netdev_unlock(ns->netdev); in nsim_qreset_write()
915 struct netdevsim *ns = file->private_data; in nsim_pp_hold_read() local
918 if (ns->page) in nsim_pp_hold_read()
919 buf[0] = 'y'; in nsim_pp_hold_read()
928 struct netdevsim *ns = file->private_data; in nsim_pp_hold_write() local
938 if (val == !!ns->page) in nsim_pp_hold_write()
941 if (!netif_running(ns->netdev) && val) { in nsim_pp_hold_write()
944 ns->page = page_pool_dev_alloc_pages(ns->rq[0]->page_pool); in nsim_pp_hold_write()
945 if (!ns->page) in nsim_pp_hold_write()
948 page_pool_put_full_page(pp_page_to_nmdesc(ns->page)->pp, in nsim_pp_hold_write()
949 ns->page, false); in nsim_pp_hold_write()
950 ns->page = NULL; in nsim_pp_hold_write()
990 static int nsim_queue_init(struct netdevsim *ns) in nsim_queue_init() argument
992 struct net_device *dev = ns->netdev; in nsim_queue_init()
995 ns->rq = kcalloc(dev->num_rx_queues, sizeof(*ns->rq), in nsim_queue_init()
997 if (!ns->rq) in nsim_queue_init()
1000 for (i = 0; i < dev->num_rx_queues; i++) { in nsim_queue_init()
1001 ns->rq[i] = nsim_queue_alloc(); in nsim_queue_init()
1002 if (!ns->rq[i]) in nsim_queue_init()
1006 return 0; in nsim_queue_init()
1010 kfree(ns->rq[i]); in nsim_queue_init()
1011 kfree(ns->rq); in nsim_queue_init()
1015 static void nsim_queue_uninit(struct netdevsim *ns) in nsim_queue_uninit() argument
1017 struct net_device *dev = ns->netdev; in nsim_queue_uninit()
1020 for (i = 0; i < dev->num_rx_queues; i++) in nsim_queue_uninit()
1021 nsim_queue_free(dev, ns->rq[i]); in nsim_queue_uninit()
1023 kfree(ns->rq); in nsim_queue_uninit()
1024 ns->rq = NULL; in nsim_queue_uninit()
1027 static int nsim_init_netdevsim(struct netdevsim *ns) in nsim_init_netdevsim() argument
1033 phc = mock_phc_create(&ns->nsim_bus_dev->dev); in nsim_init_netdevsim()
1037 ns->phc = phc; in nsim_init_netdevsim()
1038 ns->netdev->netdev_ops = &nsim_netdev_ops; in nsim_init_netdevsim()
1039 ns->netdev->stat_ops = &nsim_stat_ops; in nsim_init_netdevsim()
1040 ns->netdev->queue_mgmt_ops = &nsim_queue_mgmt_ops; in nsim_init_netdevsim()
1041 netdev_lockdep_set_classes(ns->netdev); in nsim_init_netdevsim()
1043 err = nsim_udp_tunnels_info_create(ns->nsim_dev, ns->netdev); in nsim_init_netdevsim()
1048 err = nsim_queue_init(ns); in nsim_init_netdevsim()
1052 err = nsim_bpf_init(ns); in nsim_init_netdevsim()
1056 nsim_macsec_init(ns); in nsim_init_netdevsim()
1057 nsim_ipsec_init(ns); in nsim_init_netdevsim()
1059 err = register_netdevice(ns->netdev); in nsim_init_netdevsim()
1064 err = nsim_psp_init(ns); in nsim_init_netdevsim()
1069 ns->nb.notifier_call = netdev_debug_event; in nsim_init_netdevsim()
1070 if (register_netdevice_notifier_dev_net(ns->netdev, &ns->nb, in nsim_init_netdevsim()
1071 &ns->nn)) in nsim_init_netdevsim()
1072 ns->nb.notifier_call = NULL; in nsim_init_netdevsim()
1075 return 0; in nsim_init_netdevsim()
1079 peer = rtnl_dereference(ns->peer); in nsim_init_netdevsim()
1082 RCU_INIT_POINTER(ns->peer, NULL); in nsim_init_netdevsim()
1083 unregister_netdevice(ns->netdev); in nsim_init_netdevsim()
1085 nsim_ipsec_teardown(ns); in nsim_init_netdevsim()
1086 nsim_macsec_teardown(ns); in nsim_init_netdevsim()
1087 nsim_bpf_uninit(ns); in nsim_init_netdevsim()
1089 nsim_queue_uninit(ns); in nsim_init_netdevsim()
1092 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_init_netdevsim()
1094 mock_phc_destroy(ns->phc); in nsim_init_netdevsim()
1098 static int nsim_init_netdevsim_vf(struct netdevsim *ns) in nsim_init_netdevsim_vf() argument
1102 ns->netdev->netdev_ops = &nsim_vf_netdev_ops; in nsim_init_netdevsim_vf()
1104 err = register_netdevice(ns->netdev); in nsim_init_netdevsim_vf()
1109 static void nsim_exit_netdevsim(struct netdevsim *ns) in nsim_exit_netdevsim() argument
1111 nsim_udp_tunnels_info_destroy(ns->netdev); in nsim_exit_netdevsim()
1112 mock_phc_destroy(ns->phc); in nsim_exit_netdevsim()
1120 struct netdevsim *ns; in nsim_create() local
1123 dev = alloc_netdev_mq(sizeof(*ns), "eth%d", NET_NAME_UNKNOWN, nsim_setup, in nsim_create()
1132 ns = netdev_priv(dev); in nsim_create()
1133 ns->netdev = dev; in nsim_create()
1134 ns->nsim_dev = nsim_dev; in nsim_create()
1135 ns->nsim_dev_port = nsim_dev_port; in nsim_create()
1136 ns->nsim_bus_dev = nsim_dev->nsim_bus_dev; in nsim_create()
1137 SET_NETDEV_DEV(dev, &ns->nsim_bus_dev->dev); in nsim_create()
1139 nsim_ethtool_init(ns); in nsim_create()
1141 err = nsim_init_netdevsim(ns); in nsim_create()
1143 err = nsim_init_netdevsim_vf(ns); in nsim_create()
1147 ns->pp_dfs = debugfs_create_file("pp_hold", 0600, nsim_dev_port->ddir, in nsim_create()
1148 ns, &nsim_pp_hold_fops); in nsim_create()
1149 ns->qr_dfs = debugfs_create_file("queue_reset", 0200, in nsim_create()
1150 nsim_dev_port->ddir, ns, in nsim_create()
1152 return ns; in nsim_create()
1159 void nsim_destroy(struct netdevsim *ns) in nsim_destroy() argument
1161 struct net_device *dev = ns->netdev; in nsim_destroy()
1164 debugfs_remove(ns->qr_dfs); in nsim_destroy()
1165 debugfs_remove(ns->pp_dfs); in nsim_destroy()
1167 if (ns->nb.notifier_call) in nsim_destroy()
1168 unregister_netdevice_notifier_dev_net(ns->netdev, &ns->nb, in nsim_destroy()
1169 &ns->nn); in nsim_destroy()
1171 nsim_psp_uninit(ns); in nsim_destroy()
1174 peer = rtnl_dereference(ns->peer); in nsim_destroy()
1177 RCU_INIT_POINTER(ns->peer, NULL); in nsim_destroy()
1179 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) { in nsim_destroy()
1180 nsim_macsec_teardown(ns); in nsim_destroy()
1181 nsim_ipsec_teardown(ns); in nsim_destroy()
1182 nsim_bpf_uninit(ns); in nsim_destroy()
1183 nsim_queue_uninit(ns); in nsim_destroy()
1186 if (nsim_dev_port_is_pf(ns->nsim_dev_port)) in nsim_destroy()
1187 nsim_exit_netdevsim(ns); in nsim_destroy()
1190 if (ns->page) { in nsim_destroy()
1191 page_pool_put_full_page(pp_page_to_nmdesc(ns->page)->pp, in nsim_destroy()
1192 ns->page, false); in nsim_destroy()
1193 ns->page = NULL; in nsim_destroy()
1233 return 0; in nsim_module_init()