Lines Matching refs:efx
102 static void efx_remove_port(struct efx_nic *efx);
103 static int efx_xdp_setup_prog(struct efx_nic *efx, struct bpf_prog *prog);
108 #define EFX_ASSERT_RESET_SERIALISED(efx) \ argument
110 if ((efx->state == STATE_READY) || \
111 (efx->state == STATE_RECOVERY) || \
112 (efx->state == STATE_DISABLED)) \
122 static void efx_fini_port(struct efx_nic *efx);
124 static int efx_probe_port(struct efx_nic *efx) in efx_probe_port() argument
128 netif_dbg(efx, probe, efx->net_dev, "create port\n"); in efx_probe_port()
131 efx->phy_mode = PHY_MODE_SPECIAL; in efx_probe_port()
134 rc = efx->type->probe_port(efx); in efx_probe_port()
139 ether_addr_copy(efx->net_dev->dev_addr, efx->net_dev->perm_addr); in efx_probe_port()
144 static int efx_init_port(struct efx_nic *efx) in efx_init_port() argument
148 netif_dbg(efx, drv, efx->net_dev, "init port\n"); in efx_init_port()
150 mutex_lock(&efx->mac_lock); in efx_init_port()
152 efx->port_initialized = true; in efx_init_port()
155 rc = efx_mcdi_port_reconfigure(efx); in efx_init_port()
159 mutex_unlock(&efx->mac_lock); in efx_init_port()
163 mutex_unlock(&efx->mac_lock); in efx_init_port()
167 static void efx_fini_port(struct efx_nic *efx) in efx_fini_port() argument
169 netif_dbg(efx, drv, efx->net_dev, "shut down port\n"); in efx_fini_port()
171 if (!efx->port_initialized) in efx_fini_port()
174 efx->port_initialized = false; in efx_fini_port()
176 efx->link_state.up = false; in efx_fini_port()
177 efx_link_status_changed(efx); in efx_fini_port()
180 static void efx_remove_port(struct efx_nic *efx) in efx_remove_port() argument
182 netif_dbg(efx, drv, efx->net_dev, "destroying port\n"); in efx_remove_port()
184 efx->type->remove_port(efx); in efx_remove_port()
203 static void efx_associate(struct efx_nic *efx) in efx_associate() argument
207 if (efx->primary == efx) { in efx_associate()
210 netif_dbg(efx, probe, efx->net_dev, "adding to primary list\n"); in efx_associate()
211 list_add_tail(&efx->node, &efx_primary_list); in efx_associate()
215 if (efx_same_controller(efx, other)) { in efx_associate()
219 pci_name(efx->pci_dev), in efx_associate()
220 efx->net_dev->name); in efx_associate()
222 &efx->secondary_list); in efx_associate()
223 other->primary = efx; in efx_associate()
230 if (efx_same_controller(efx, other)) { in efx_associate()
231 netif_dbg(efx, probe, efx->net_dev, in efx_associate()
235 list_add_tail(&efx->node, in efx_associate()
237 efx->primary = other; in efx_associate()
242 netif_dbg(efx, probe, efx->net_dev, in efx_associate()
244 list_add_tail(&efx->node, &efx_unassociated_list); in efx_associate()
248 static void efx_dissociate(struct efx_nic *efx) in efx_dissociate() argument
252 list_del(&efx->node); in efx_dissociate()
253 efx->primary = NULL; in efx_dissociate()
255 list_for_each_entry_safe(other, next, &efx->secondary_list, node) { in efx_dissociate()
264 static int efx_probe_nic(struct efx_nic *efx) in efx_probe_nic() argument
268 netif_dbg(efx, probe, efx->net_dev, "creating NIC\n"); in efx_probe_nic()
271 rc = efx->type->probe(efx); in efx_probe_nic()
276 if (!efx->max_channels || !efx->max_tx_channels) { in efx_probe_nic()
277 netif_err(efx, drv, efx->net_dev, in efx_probe_nic()
287 rc = efx_probe_interrupts(efx); in efx_probe_nic()
291 rc = efx_set_channels(efx); in efx_probe_nic()
296 rc = efx->type->dimension_resources(efx); in efx_probe_nic()
302 efx_remove_interrupts(efx); in efx_probe_nic()
306 if (efx->n_channels > 1) in efx_probe_nic()
307 netdev_rss_key_fill(efx->rss_context.rx_hash_key, in efx_probe_nic()
308 sizeof(efx->rss_context.rx_hash_key)); in efx_probe_nic()
309 efx_set_default_rx_indir_table(efx, &efx->rss_context); in efx_probe_nic()
312 efx->irq_mod_step_us = DIV_ROUND_UP(efx->timer_quantum_ns, 1000); in efx_probe_nic()
313 efx_init_irq_moderation(efx, tx_irq_mod_usec, rx_irq_mod_usec, true, in efx_probe_nic()
319 efx_remove_interrupts(efx); in efx_probe_nic()
321 efx->type->remove(efx); in efx_probe_nic()
325 static void efx_remove_nic(struct efx_nic *efx) in efx_remove_nic() argument
327 netif_dbg(efx, drv, efx->net_dev, "destroying NIC\n"); in efx_remove_nic()
329 efx_remove_interrupts(efx); in efx_remove_nic()
330 efx->type->remove(efx); in efx_remove_nic()
339 static int efx_probe_all(struct efx_nic *efx) in efx_probe_all() argument
343 rc = efx_probe_nic(efx); in efx_probe_all()
345 netif_err(efx, probe, efx->net_dev, "failed to create NIC\n"); in efx_probe_all()
349 rc = efx_probe_port(efx); in efx_probe_all()
351 netif_err(efx, probe, efx->net_dev, "failed to create port\n"); in efx_probe_all()
356 if (WARN_ON(EFX_DEFAULT_DMAQ_SIZE < EFX_TXQ_MIN_ENT(efx))) { in efx_probe_all()
362 rc = efx->type->vswitching_probe(efx); in efx_probe_all()
364 netif_warn(efx, probe, efx->net_dev, in efx_probe_all()
369 rc = efx_probe_filters(efx); in efx_probe_all()
371 netif_err(efx, probe, efx->net_dev, in efx_probe_all()
376 rc = efx_probe_channels(efx); in efx_probe_all()
383 efx_remove_filters(efx); in efx_probe_all()
386 efx->type->vswitching_remove(efx); in efx_probe_all()
389 efx_remove_port(efx); in efx_probe_all()
391 efx_remove_nic(efx); in efx_probe_all()
396 static void efx_remove_all(struct efx_nic *efx) in efx_remove_all() argument
399 efx_xdp_setup_prog(efx, NULL); in efx_remove_all()
402 efx_remove_channels(efx); in efx_remove_all()
403 efx_remove_filters(efx); in efx_remove_all()
405 efx->type->vswitching_remove(efx); in efx_remove_all()
407 efx_remove_port(efx); in efx_remove_all()
408 efx_remove_nic(efx); in efx_remove_all()
416 unsigned int efx_usecs_to_ticks(struct efx_nic *efx, unsigned int usecs) in efx_usecs_to_ticks() argument
420 if (usecs * 1000 < efx->timer_quantum_ns) in efx_usecs_to_ticks()
422 return usecs * 1000 / efx->timer_quantum_ns; in efx_usecs_to_ticks()
425 unsigned int efx_ticks_to_usecs(struct efx_nic *efx, unsigned int ticks) in efx_ticks_to_usecs() argument
430 return DIV_ROUND_UP(ticks * efx->timer_quantum_ns, 1000); in efx_ticks_to_usecs()
434 int efx_init_irq_moderation(struct efx_nic *efx, unsigned int tx_usecs, in efx_init_irq_moderation() argument
441 EFX_ASSERT_RESET_SERIALISED(efx); in efx_init_irq_moderation()
443 timer_max_us = efx->timer_max_ns / 1000; in efx_init_irq_moderation()
448 if (tx_usecs != rx_usecs && efx->tx_channel_offset == 0 && in efx_init_irq_moderation()
450 netif_err(efx, drv, efx->net_dev, "Channels are shared. " in efx_init_irq_moderation()
455 efx->irq_rx_adaptive = rx_adaptive; in efx_init_irq_moderation()
456 efx->irq_rx_moderation_us = rx_usecs; in efx_init_irq_moderation()
457 efx_for_each_channel(channel, efx) { in efx_init_irq_moderation()
469 void efx_get_irq_moderation(struct efx_nic *efx, unsigned int *tx_usecs, in efx_get_irq_moderation() argument
472 *rx_adaptive = efx->irq_rx_adaptive; in efx_get_irq_moderation()
473 *rx_usecs = efx->irq_rx_moderation_us; in efx_get_irq_moderation()
479 if (efx->tx_channel_offset == 0) { in efx_get_irq_moderation()
484 tx_channel = efx->channel[efx->tx_channel_offset]; in efx_get_irq_moderation()
500 struct efx_nic *efx = netdev_priv(net_dev); in efx_ioctl() local
504 return efx_ptp_set_ts_config(efx, ifr); in efx_ioctl()
506 return efx_ptp_get_ts_config(efx, ifr); in efx_ioctl()
513 return mdio_mii_ioctl(&efx->mdio, data, cmd); in efx_ioctl()
525 struct efx_nic *efx = netdev_priv(net_dev); in efx_net_open() local
528 netif_dbg(efx, ifup, efx->net_dev, "opening device on CPU %d\n", in efx_net_open()
531 rc = efx_check_disabled(efx); in efx_net_open()
534 if (efx->phy_mode & PHY_MODE_SPECIAL) in efx_net_open()
536 if (efx_mcdi_poll_reboot(efx) && efx_reset(efx, RESET_TYPE_ALL)) in efx_net_open()
541 efx_link_status_changed(efx); in efx_net_open()
543 efx_start_all(efx); in efx_net_open()
544 if (efx->state == STATE_DISABLED || efx->reset_pending) in efx_net_open()
545 netif_device_detach(efx->net_dev); in efx_net_open()
546 efx_selftest_async_start(efx); in efx_net_open()
556 struct efx_nic *efx = netdev_priv(net_dev); in efx_net_stop() local
558 netif_dbg(efx, ifdown, efx->net_dev, "closing on CPU %d\n", in efx_net_stop()
562 efx_stop_all(efx); in efx_net_stop()
569 struct efx_nic *efx = netdev_priv(net_dev); in efx_vlan_rx_add_vid() local
571 if (efx->type->vlan_rx_add_vid) in efx_vlan_rx_add_vid()
572 return efx->type->vlan_rx_add_vid(efx, proto, vid); in efx_vlan_rx_add_vid()
579 struct efx_nic *efx = netdev_priv(net_dev); in efx_vlan_rx_kill_vid() local
581 if (efx->type->vlan_rx_kill_vid) in efx_vlan_rx_kill_vid()
582 return efx->type->vlan_rx_kill_vid(efx, proto, vid); in efx_vlan_rx_kill_vid()
621 static int efx_xdp_setup_prog(struct efx_nic *efx, struct bpf_prog *prog) in efx_xdp_setup_prog() argument
625 if (efx->xdp_rxq_info_failed) { in efx_xdp_setup_prog()
626 netif_err(efx, drv, efx->net_dev, in efx_xdp_setup_prog()
631 if (prog && efx->net_dev->mtu > efx_xdp_max_mtu(efx)) { in efx_xdp_setup_prog()
632 netif_err(efx, drv, efx->net_dev, in efx_xdp_setup_prog()
634 efx->net_dev->mtu, efx_xdp_max_mtu(efx)); in efx_xdp_setup_prog()
638 old_prog = rtnl_dereference(efx->xdp_prog); in efx_xdp_setup_prog()
639 rcu_assign_pointer(efx->xdp_prog, prog); in efx_xdp_setup_prog()
650 struct efx_nic *efx = netdev_priv(dev); in efx_xdp() local
654 return efx_xdp_setup_prog(efx, xdp->prog); in efx_xdp()
663 struct efx_nic *efx = netdev_priv(dev); in efx_xdp_xmit() local
668 return efx_xdp_tx_buffers(efx, n, xdpfs, flags & XDP_XMIT_FLUSH); in efx_xdp_xmit()
671 static void efx_update_name(struct efx_nic *efx) in efx_update_name() argument
673 strcpy(efx->name, efx->net_dev->name); in efx_update_name()
674 efx_mtd_rename(efx); in efx_update_name()
675 efx_set_channel_names(efx); in efx_update_name()
697 struct efx_nic *efx = dev_get_drvdata(dev); in show_phy_type() local
698 return sprintf(buf, "%d\n", efx->phy_type); in show_phy_type()
702 static int efx_register_netdev(struct efx_nic *efx) in efx_register_netdev() argument
704 struct net_device *net_dev = efx->net_dev; in efx_register_netdev()
709 net_dev->irq = efx->pci_dev->irq; in efx_register_netdev()
711 if (efx_nic_rev(efx) >= EFX_REV_HUNT_A0) in efx_register_netdev()
724 efx->state = STATE_READY; in efx_register_netdev()
726 if (efx->reset_pending) { in efx_register_netdev()
727 netif_err(efx, probe, efx->net_dev, in efx_register_netdev()
736 efx_update_name(efx); in efx_register_netdev()
745 efx_for_each_channel(channel, efx) { in efx_register_netdev()
751 efx_associate(efx); in efx_register_netdev()
755 rc = device_create_file(&efx->pci_dev->dev, &dev_attr_phy_type); in efx_register_netdev()
757 netif_err(efx, drv, efx->net_dev, in efx_register_netdev()
762 efx_init_mcdi_logging(efx); in efx_register_netdev()
768 efx_dissociate(efx); in efx_register_netdev()
771 efx->state = STATE_UNINIT; in efx_register_netdev()
773 netif_err(efx, drv, efx->net_dev, "could not register net dev\n"); in efx_register_netdev()
777 static void efx_unregister_netdev(struct efx_nic *efx) in efx_unregister_netdev() argument
779 if (!efx->net_dev) in efx_unregister_netdev()
782 BUG_ON(netdev_priv(efx->net_dev) != efx); in efx_unregister_netdev()
784 if (efx_dev_registered(efx)) { in efx_unregister_netdev()
785 strlcpy(efx->name, pci_name(efx->pci_dev), sizeof(efx->name)); in efx_unregister_netdev()
786 efx_fini_mcdi_logging(efx); in efx_unregister_netdev()
787 device_remove_file(&efx->pci_dev->dev, &dev_attr_phy_type); in efx_unregister_netdev()
788 unregister_netdev(efx->net_dev); in efx_unregister_netdev()
829 void efx_update_sw_stats(struct efx_nic *efx, u64 *stats) in efx_update_sw_stats() argument
834 efx_for_each_channel(channel, efx) in efx_update_sw_stats()
837 stats[GENERIC_STAT_rx_noskb_drops] = atomic_read(&efx->n_rx_noskb_drops); in efx_update_sw_stats()
849 static void efx_pci_remove_main(struct efx_nic *efx) in efx_pci_remove_main() argument
854 BUG_ON(efx->state == STATE_READY); in efx_pci_remove_main()
855 efx_flush_reset_workqueue(efx); in efx_pci_remove_main()
857 efx_disable_interrupts(efx); in efx_pci_remove_main()
858 efx_clear_interrupt_affinity(efx); in efx_pci_remove_main()
859 efx_nic_fini_interrupt(efx); in efx_pci_remove_main()
860 efx_fini_port(efx); in efx_pci_remove_main()
861 efx->type->fini(efx); in efx_pci_remove_main()
862 efx_fini_napi(efx); in efx_pci_remove_main()
863 efx_remove_all(efx); in efx_pci_remove_main()
872 struct efx_nic *efx; in efx_pci_remove() local
874 efx = pci_get_drvdata(pci_dev); in efx_pci_remove()
875 if (!efx) in efx_pci_remove()
880 efx_dissociate(efx); in efx_pci_remove()
881 dev_close(efx->net_dev); in efx_pci_remove()
882 efx_disable_interrupts(efx); in efx_pci_remove()
883 efx->state = STATE_UNINIT; in efx_pci_remove()
886 if (efx->type->sriov_fini) in efx_pci_remove()
887 efx->type->sriov_fini(efx); in efx_pci_remove()
889 efx_unregister_netdev(efx); in efx_pci_remove()
891 efx_mtd_remove(efx); in efx_pci_remove()
893 efx_pci_remove_main(efx); in efx_pci_remove()
895 efx_fini_io(efx); in efx_pci_remove()
896 netif_dbg(efx, drv, efx->net_dev, "shutdown successful\n"); in efx_pci_remove()
898 efx_fini_struct(efx); in efx_pci_remove()
899 free_netdev(efx->net_dev); in efx_pci_remove()
910 static void efx_probe_vpd_strings(struct efx_nic *efx) in efx_probe_vpd_strings() argument
912 struct pci_dev *dev = efx->pci_dev; in efx_probe_vpd_strings()
920 netif_err(efx, drv, efx->net_dev, "Unable to read VPD\n"); in efx_probe_vpd_strings()
927 netif_err(efx, drv, efx->net_dev, "VPD Read-only not found\n"); in efx_probe_vpd_strings()
940 netif_err(efx, drv, efx->net_dev, "Part number not found\n"); in efx_probe_vpd_strings()
947 netif_err(efx, drv, efx->net_dev, "Incomplete part number\n"); in efx_probe_vpd_strings()
951 netif_info(efx, drv, efx->net_dev, in efx_probe_vpd_strings()
958 netif_err(efx, drv, efx->net_dev, "Serial number not found\n"); in efx_probe_vpd_strings()
965 netif_err(efx, drv, efx->net_dev, "Incomplete serial number\n"); in efx_probe_vpd_strings()
969 efx->vpd_sn = kmalloc(j + 1, GFP_KERNEL); in efx_probe_vpd_strings()
970 if (!efx->vpd_sn) in efx_probe_vpd_strings()
973 snprintf(efx->vpd_sn, j + 1, "%s", &vpd_data[i]); in efx_probe_vpd_strings()
980 static int efx_pci_probe_main(struct efx_nic *efx) in efx_pci_probe_main() argument
985 rc = efx_probe_all(efx); in efx_pci_probe_main()
989 efx_init_napi(efx); in efx_pci_probe_main()
991 down_write(&efx->filter_sem); in efx_pci_probe_main()
992 rc = efx->type->init(efx); in efx_pci_probe_main()
993 up_write(&efx->filter_sem); in efx_pci_probe_main()
995 netif_err(efx, probe, efx->net_dev, in efx_pci_probe_main()
1000 rc = efx_init_port(efx); in efx_pci_probe_main()
1002 netif_err(efx, probe, efx->net_dev, in efx_pci_probe_main()
1007 rc = efx_nic_init_interrupt(efx); in efx_pci_probe_main()
1011 efx_set_interrupt_affinity(efx); in efx_pci_probe_main()
1012 rc = efx_enable_interrupts(efx); in efx_pci_probe_main()
1019 efx_clear_interrupt_affinity(efx); in efx_pci_probe_main()
1020 efx_nic_fini_interrupt(efx); in efx_pci_probe_main()
1022 efx_fini_port(efx); in efx_pci_probe_main()
1024 efx->type->fini(efx); in efx_pci_probe_main()
1026 efx_fini_napi(efx); in efx_pci_probe_main()
1027 efx_remove_all(efx); in efx_pci_probe_main()
1032 static int efx_pci_probe_post_io(struct efx_nic *efx) in efx_pci_probe_post_io() argument
1034 struct net_device *net_dev = efx->net_dev; in efx_pci_probe_post_io()
1035 int rc = efx_pci_probe_main(efx); in efx_pci_probe_post_io()
1040 if (efx->type->sriov_init) { in efx_pci_probe_post_io()
1041 rc = efx->type->sriov_init(efx); in efx_pci_probe_post_io()
1043 netif_err(efx, probe, efx->net_dev, in efx_pci_probe_post_io()
1048 net_dev->features |= (efx->type->offload_features | NETIF_F_SG | in efx_pci_probe_post_io()
1050 if (efx->type->offload_features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM)) in efx_pci_probe_post_io()
1053 if (!efx->type->tso_versions || !efx->type->tso_versions(efx)) in efx_pci_probe_post_io()
1060 net_dev->hw_features |= net_dev->features & ~efx->fixed_features; in efx_pci_probe_post_io()
1070 net_dev->features |= efx->fixed_features; in efx_pci_probe_post_io()
1072 rc = efx_register_netdev(efx); in efx_pci_probe_post_io()
1076 efx_pci_remove_main(efx); in efx_pci_probe_post_io()
1093 struct efx_nic *efx; in efx_pci_probe() local
1097 net_dev = alloc_etherdev_mqs(sizeof(*efx), EFX_MAX_CORE_TX_QUEUES, in efx_pci_probe()
1101 efx = netdev_priv(net_dev); in efx_pci_probe()
1102 efx->type = (const struct efx_nic_type *) entry->driver_data; in efx_pci_probe()
1103 efx->fixed_features |= NETIF_F_HIGHDMA; in efx_pci_probe()
1105 pci_set_drvdata(pci_dev, efx); in efx_pci_probe()
1107 rc = efx_init_struct(efx, pci_dev, net_dev); in efx_pci_probe()
1111 netif_info(efx, probe, efx->net_dev, in efx_pci_probe()
1114 if (!efx->type->is_vf) in efx_pci_probe()
1115 efx_probe_vpd_strings(efx); in efx_pci_probe()
1118 rc = efx_init_io(efx, efx->type->mem_bar(efx), efx->type->max_dma_mask, in efx_pci_probe()
1119 efx->type->mem_map_size(efx)); in efx_pci_probe()
1123 rc = efx_pci_probe_post_io(efx); in efx_pci_probe()
1128 efx->reset_pending = 0; in efx_pci_probe()
1129 rc = efx_pci_probe_post_io(efx); in efx_pci_probe()
1138 efx->reset_pending = 0; in efx_pci_probe()
1139 rc = efx_pci_probe_post_io(efx); in efx_pci_probe()
1145 netif_dbg(efx, probe, efx->net_dev, "initialisation successful\n"); in efx_pci_probe()
1149 rc = efx_mtd_probe(efx); in efx_pci_probe()
1152 netif_warn(efx, probe, efx->net_dev, in efx_pci_probe()
1157 if (efx->type->udp_tnl_push_ports) in efx_pci_probe()
1158 efx->type->udp_tnl_push_ports(efx); in efx_pci_probe()
1163 efx_fini_io(efx); in efx_pci_probe()
1165 efx_fini_struct(efx); in efx_pci_probe()
1168 netif_dbg(efx, drv, efx->net_dev, "initialisation failed. rc=%d\n", rc); in efx_pci_probe()
1180 struct efx_nic *efx = pci_get_drvdata(dev); in efx_pci_sriov_configure() local
1182 if (efx->type->sriov_configure) { in efx_pci_sriov_configure()
1183 rc = efx->type->sriov_configure(efx, num_vfs); in efx_pci_sriov_configure()
1195 struct efx_nic *efx = dev_get_drvdata(dev); in efx_pm_freeze() local
1199 if (efx->state != STATE_DISABLED) { in efx_pm_freeze()
1200 efx->state = STATE_UNINIT; in efx_pm_freeze()
1202 efx_device_detach_sync(efx); in efx_pm_freeze()
1204 efx_stop_all(efx); in efx_pm_freeze()
1205 efx_disable_interrupts(efx); in efx_pm_freeze()
1216 struct efx_nic *efx = dev_get_drvdata(dev); in efx_pm_thaw() local
1220 if (efx->state != STATE_DISABLED) { in efx_pm_thaw()
1221 rc = efx_enable_interrupts(efx); in efx_pm_thaw()
1225 mutex_lock(&efx->mac_lock); in efx_pm_thaw()
1226 efx_mcdi_port_reconfigure(efx); in efx_pm_thaw()
1227 mutex_unlock(&efx->mac_lock); in efx_pm_thaw()
1229 efx_start_all(efx); in efx_pm_thaw()
1231 efx_device_attach_if_not_resetting(efx); in efx_pm_thaw()
1233 efx->state = STATE_READY; in efx_pm_thaw()
1235 efx->type->resume_wol(efx); in efx_pm_thaw()
1241 efx_queue_reset_work(efx); in efx_pm_thaw()
1254 struct efx_nic *efx = pci_get_drvdata(pci_dev); in efx_pm_poweroff() local
1256 efx->type->fini(efx); in efx_pm_poweroff()
1258 efx->reset_pending = 0; in efx_pm_poweroff()
1268 struct efx_nic *efx = pci_get_drvdata(pci_dev); in efx_pm_resume() local
1278 pci_set_master(efx->pci_dev); in efx_pm_resume()
1279 rc = efx->type->reset(efx, RESET_TYPE_ALL); in efx_pm_resume()
1282 down_write(&efx->filter_sem); in efx_pm_resume()
1283 rc = efx->type->init(efx); in efx_pm_resume()
1284 up_write(&efx->filter_sem); in efx_pm_resume()