| /linux/io_uring/ |
| H A D | napi.c | 4 #include "napi.h" 37 /* napi approximating usecs, reverse busy_loop_current_time */ in net_to_ktime() 47 /* Non-NAPI IDs can be rejected. */ in __io_napi_add_id() 95 /* Non-NAPI IDs can be rejected. */ in __io_napi_del_id() 223 /* Singular lists use a different napi loop end check function and are in io_napi_blocking_busy_loop() 243 * io_napi_init() - Init napi settings 246 * Init napi settings in the io-uring context. 260 * io_napi_free() - Deallocate napi 263 * Free the napi list and the hash table in the io-uring context. 278 struct io_uring_napi *napi) in io_napi_register_napi() argument [all …]
|
| /linux/tools/testing/selftests/drivers/net/ |
| H A D | napi_threaded.py | 5 Test napi threaded states. 15 napi = nl.napi_get({'id': napi_id}) 16 ksft_eq(napi['threaded'], 'enabled') 17 ksft_ne(napi.get('pid'), None) 21 napi = nl.napi_get({'id': napi_id}) 22 ksft_eq(napi['threaded'], 'disabled') 23 ksft_eq(napi.get('pid'), None) 44 Test that threaded state (in the persistent NAPI config) gets updated 45 even when NAPI with given ID is not allocated at the time. 56 for napi i [all...] |
| /linux/include/trace/events/ |
| H A D | napi.h | 3 #define TRACE_SYSTEM napi 16 TP_PROTO(struct napi_struct *napi, int work, int budget), 18 TP_ARGS(napi, work, budget), 21 __field( struct napi_struct *, napi) 22 __string( dev_name, napi->dev ? napi->dev->name : NO_DEV) 28 __entry->napi = napi; 34 TP_printk("napi poll on napi struc [all...] |
| /linux/net/core/ |
| H A D | dev.h | 245 * napi_get_defer_hard_irqs - get the NAPI's defer_hard_irqs 246 * @n: napi struct to get the defer_hard_irqs field from 248 * Return: the per-NAPI value of the defar_hard_irqs field. 256 * napi_set_defer_hard_irqs - set the defer_hard_irqs for a napi 275 struct napi_struct *napi; in netdev_set_defer_hard_irqs() local 279 list_for_each_entry(napi, &netdev->napi_list, dev_list) in netdev_set_defer_hard_irqs() 280 napi_set_defer_hard_irqs(napi, defer); in netdev_set_defer_hard_irqs() 288 * @n: napi struct to get the gro_flush_timeout from 290 * Return: the per-NAPI value of the gro_flush_timeout field. 299 * napi_set_gro_flush_timeout - set the gro_flush_timeout for a napi [all …]
|
| H A D | gro_cells.c | 10 struct napi_struct napi; member 44 napi_schedule(&cell->napi); in gro_cells_receive() 57 static int gro_cell_poll(struct napi_struct *napi, int budget) in gro_cell_poll() argument 59 struct gro_cell *cell = container_of(napi, struct gro_cell, napi); in gro_cell_poll() 69 napi_gro_receive(napi, skb); in gro_cell_poll() 74 napi_complete_done(napi, work_done); in gro_cell_poll() 92 set_bit(NAPI_STATE_NO_BUSY_POLL, &cell->napi.state); in gro_cells_init() 94 netif_napi_add(dev, &cell->napi, gro_cell_poll); in gro_cells_init() 95 napi_enable(&cell->napi); in gro_cells_init() 125 napi_disable(&cell->napi); in gro_cells_destroy() [all …]
|
| H A D | netpoll.c | 36 #include <trace/events/napi.h> 136 static void poll_one_napi(struct napi_struct *napi) in poll_one_napi() argument 141 * that indicates that napi has been disabled and we need in poll_one_napi() 144 if (test_and_set_bit(NAPI_STATE_NPSVC, &napi->state)) in poll_one_napi() 150 work = napi->poll(napi, 0); in poll_one_napi() 151 WARN_ONCE(work, "%pS exceeded budget in poll\n", napi->poll); in poll_one_napi() 152 trace_napi_poll(napi, work, 0); in poll_one_napi() 154 clear_bit(NAPI_STATE_NPSVC, &napi->state); in poll_one_napi() 159 struct napi_struct *napi; in poll_napi() local 162 list_for_each_entry_rcu(napi, &dev->napi_list, dev_list) { in poll_napi() [all …]
|
| H A D | netdev-genl.c | 163 netdev_nl_napi_fill_one(struct sk_buff *rsp, struct napi_struct *napi, in netdev_nl_napi_fill_one() argument 172 if (!napi->dev->up) in netdev_nl_napi_fill_one() 179 if (nla_put_u32(rsp, NETDEV_A_NAPI_ID, napi->napi_id)) in netdev_nl_napi_fill_one() 182 if (nla_put_u32(rsp, NETDEV_A_NAPI_IFINDEX, napi->dev->ifindex)) in netdev_nl_napi_fill_one() 185 if (napi->irq >= 0 && nla_put_u32(rsp, NETDEV_A_NAPI_IRQ, napi->irq)) in netdev_nl_napi_fill_one() 189 napi_get_threaded(napi))) in netdev_nl_napi_fill_one() 192 if (napi->thread) { in netdev_nl_napi_fill_one() 193 pid = task_pid_nr_ns(napi->thread, in netdev_nl_napi_fill_one() 199 napi_defer_hard_irqs = napi_get_defer_hard_irqs(napi); in netdev_nl_napi_fill_one() 204 irq_suspend_timeout = napi_get_irq_suspend_timeout(napi); in netdev_nl_napi_fill_one() [all …]
|
| H A D | dev.c | 136 #include <trace/events/napi.h> 469 * (e.g. NAPI context). 819 struct napi_struct *napi; in napi_by_id() local 821 hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) in napi_by_id() 822 if (napi->napi_id == napi_id) in napi_by_id() 823 return napi; in napi_by_id() 832 struct napi_struct *napi; in netdev_napi_by_id() local 834 napi = napi_by_id(napi_id); in netdev_napi_by_id() 835 if (!napi) in netdev_napi_by_id() 838 if (WARN_ON_ONCE(!napi->dev)) in netdev_napi_by_id() [all …]
|
| H A D | gro.c | 469 /* Do not adjust napi->gro_hash[].count, caller is adding a new in gro_flush_oldest() 654 static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) in napi_reuse_skb() argument 666 skb->dev = napi->dev; in napi_reuse_skb() 687 napi->skb = skb; in napi_reuse_skb() 690 struct sk_buff *napi_get_frags(struct napi_struct *napi) in napi_get_frags() argument 692 struct sk_buff *skb = napi->skb; in napi_get_frags() 695 skb = napi_alloc_skb(napi, GRO_MAX_HEAD); in napi_get_frags() 697 napi->skb = skb; in napi_get_frags() 698 skb_mark_napi_id(skb, napi); in napi_get_frags() 705 static gro_result_t napi_frags_finish(struct napi_struct *napi, in napi_frags_finish() argument [all …]
|
| /linux/drivers/net/ethernet/intel/igc/ |
| H A D | igc_xdp.c | 32 napi_disable(&adapter->rx_ring[i]->q_vector->napi); in igc_xdp_set_prog() 47 napi_enable(&adapter->rx_ring[i]->q_vector->napi); in igc_xdp_set_prog() 62 struct napi_struct *napi; in igc_xdp_enable_pool() local 91 /* Rx and Tx rings share the same napi context. */ in igc_xdp_enable_pool() 92 napi = &rx_ring->q_vector->napi; in igc_xdp_enable_pool() 97 napi_disable(napi); in igc_xdp_enable_pool() 104 napi_enable(napi); in igc_xdp_enable_pool() 122 struct napi_struct *napi; in igc_xdp_disable_pool() local 137 /* Rx and Tx rings share the same napi context. */ in igc_xdp_disable_pool() 138 napi = &rx_ring->q_vector->napi; in igc_xdp_disable_pool() [all …]
|
| /linux/drivers/infiniband/hw/hfi1/ |
| H A D | ipoib_rx.c | 22 static struct sk_buff *prepare_frag_skb(struct napi_struct *napi, int size) in prepare_frag_skb() argument 33 return napi_alloc_skb(napi, size); in prepare_frag_skb() 49 struct napi_struct *napi = &rxq->napi; in hfi1_ipoib_prepare_skb() local 55 * napi cache. Otherwise we will try to use napi frag cache. in hfi1_ipoib_prepare_skb() 58 skb = napi_alloc_skb(napi, skb_size); in hfi1_ipoib_prepare_skb() 60 skb = prepare_frag_skb(napi, skb_size); in hfi1_ipoib_prepare_skb()
|
| /linux/Documentation/netlink/specs/ |
| H A D | netdev.yaml | 47 support in the driver napi callback. 97 name: napi-threaded 168 name: napi-id 169 doc: Id of NAPI using this Page Pool instance. 263 name: napi 267 doc: ifindex of the netdevice to which NAPI instance belongs. 273 doc: ID of the NAPI instance. 277 doc: The associated interrupt vector number for the napi 281 doc: PID of the napi thread, if NAPI is configured to operate in 282 threaded mode. If NAPI is not in threaded mode (i.e. uses normal [all …]
|
| /linux/include/linux/ |
| H A D | netpoll.h | 74 static inline void *netpoll_poll_lock(struct napi_struct *napi) in netpoll_poll_lock() argument 76 struct net_device *dev = napi->dev; in netpoll_poll_lock() 81 while (cmpxchg(&napi->poll_owner, -1, owner) != -1) in netpoll_poll_lock() 84 return napi; in netpoll_poll_lock() 91 struct napi_struct *napi = have; in netpoll_poll_unlock() local 93 if (napi) in netpoll_poll_unlock() 94 smp_store_release(&napi->poll_owner, -1); in netpoll_poll_unlock() 103 static inline void *netpoll_poll_lock(struct napi_struct *napi) in netpoll_poll_lock() argument
|
| /linux/drivers/net/wireless/ath/wil6210/ |
| H A D | netdev.c | 91 static int wil6210_netdev_poll_rx(struct napi_struct *napi, int budget) in wil6210_netdev_poll_rx() argument 93 struct wil6210_priv *wil = container_of(napi, struct wil6210_priv, in wil6210_netdev_poll_rx() 102 napi_complete_done(napi, done); in wil6210_netdev_poll_rx() 104 wil_dbg_txrx(wil, "NAPI RX complete\n"); in wil6210_netdev_poll_rx() 107 wil_dbg_txrx(wil, "NAPI RX poll(%d) done %d\n", budget, done); in wil6210_netdev_poll_rx() 112 static int wil6210_netdev_poll_rx_edma(struct napi_struct *napi, int budget) in wil6210_netdev_poll_rx_edma() argument 114 struct wil6210_priv *wil = container_of(napi, struct wil6210_priv, in wil6210_netdev_poll_rx_edma() 123 napi_complete_done(napi, done); in wil6210_netdev_poll_rx_edma() 125 wil_dbg_txrx(wil, "NAPI RX complete\n"); in wil6210_netdev_poll_rx_edma() 128 wil_dbg_txrx(wil, "NAPI RX poll(%d) done %d\n", budget, done); in wil6210_netdev_poll_rx_edma() [all …]
|
| /linux/drivers/net/netdevsim/ |
| H A D | netdev.c | 48 idx = rq->napi.index; in nsim_start_peer_tx_queue() 367 struct net_device *dev = rq->napi.dev; in nsim_rcv() 398 napi_gro_receive(&rq->napi, skb); in nsim_rcv() 405 static int nsim_poll(struct napi_struct *napi, int budget) in nsim_poll() argument 407 struct nsim_rq *rq = container_of(napi, struct nsim_rq, napi); in nsim_poll() 412 napi_complete_done(napi, done); in nsim_poll() 417 static int nsim_create_page_pool(struct page_pool **p, struct napi_struct *napi) in nsim_create_page_pool() argument 423 .dev = &napi->dev->dev, in nsim_create_page_pool() 424 .napi = napi, in nsim_create_page_pool() 426 .netdev = napi->dev, in nsim_create_page_pool() [all …]
|
| /linux/drivers/net/ethernet/synopsys/ |
| H A D | dwc-xlgmac-net.c | 283 * enabled before using the private data napi structure. in xlgmac_isr() 290 if (napi_schedule_prep(&pdata->napi)) { in xlgmac_isr() 296 __napi_schedule_irqoff(&pdata->napi); in xlgmac_isr() 348 * channel napi structure and not the private data napi structure in xlgmac_dma_isr() 350 if (napi_schedule_prep(&channel->napi)) { in xlgmac_dma_isr() 355 __napi_schedule_irqoff(&channel->napi); in xlgmac_dma_isr() 366 struct napi_struct *napi; in xlgmac_tx_timer() local 368 napi = (pdata->per_channel_irq) ? &channel->napi : &pdata->napi; in xlgmac_tx_timer() 370 if (napi_schedule_prep(napi)) { in xlgmac_tx_timer() 379 __napi_schedule(napi); in xlgmac_tx_timer() [all …]
|
| /linux/drivers/net/ethernet/aquantia/atlantic/ |
| H A D | aq_vec.c | 21 struct napi_struct napi; member 28 static int aq_vec_poll(struct napi_struct *napi, int budget) in aq_vec_poll() argument 30 struct aq_vec_s *self = container_of(napi, struct aq_vec_s, napi); in aq_vec_poll() 68 napi, in aq_vec_poll() 93 napi_complete_done(napi, work_done); in aq_vec_poll() 122 netif_napi_add(aq_nic_get_ndev(aq_nic), &self->napi, aq_vec_poll); in aq_vec_alloc() 151 self->napi.napi_id) < 0) { in aq_vec_ring_alloc() 245 napi_enable(&self->napi); in aq_vec_start() 265 napi_disable(&self->napi); in aq_vec_stop() 290 netif_napi_del(&self->napi); in aq_vec_free() [all …]
|
| /linux/drivers/net/ethernet/huawei/hinic3/ |
| H A D | hinic3_irq.c | 31 static int hinic3_poll(struct napi_struct *napi, int budget) in hinic3_poll() argument 34 container_of(napi, struct hinic3_irq_cfg, napi); in hinic3_poll() 52 if (likely(napi_complete_done(napi, work_done))) { in hinic3_poll() 65 netif_napi_add(nic_dev->netdev, &irq_cfg->napi, hinic3_poll); in qp_add_napi() 66 napi_enable(&irq_cfg->napi); in qp_add_napi() 71 napi_disable(&irq_cfg->napi); in qp_del_napi() 72 netif_napi_del(&irq_cfg->napi); in qp_del_napi() 86 napi_schedule(&irq_cfg->napi); in qp_irq() 235 NETDEV_QUEUE_TYPE_RX, &irq_cfg->napi); in hinic3_qps_irq_init() 237 NETDEV_QUEUE_TYPE_TX, &irq_cfg->napi); in hinic3_qps_irq_init()
|
| /linux/tools/testing/selftests/net/ |
| H A D | nl_netdev.py | 53 Test that verifies various cases of napi threaded 54 set and unset at napi and device level. 67 # set napi threaded and verify 81 # verify if napi threaded is still set 91 # unset napi threaded and verify 100 # check napi threaded is set for both napis 111 # check napi threaded is unset for both napis 119 # set napi threaded for napi0 128 # check napi threaded is unset for both napis 138 Test that verifies various cases of napi threade [all...] |
| /linux/drivers/net/ethernet/meta/fbnic/ |
| H A D | fbnic_txrx.c | 607 txq = txring_txq(nv->napi.dev, ring); in fbnic_clean_twq0() 699 netdev_err(nv->napi.dev, in fbnic_clean_tsq() 711 fbn = netdev_priv(nv->napi.dev); in fbnic_clean_tsq() 749 /* sub0 is always fed system pages, from the NAPI-level page_pool */ in fbnic_page_pool_get_head() 1022 netdev_err_once(nv->napi.dev, in fbnic_add_rx_frag() 1151 struct fbnic_net *fbn = netdev_priv(nv->napi.dev); in fbnic_run_xdp() 1171 bpf_warn_invalid_xdp_action(nv->napi.dev, xdp_prog, act); in fbnic_run_xdp() 1174 trace_xdp_exception(nv->napi.dev, xdp_prog, act); in fbnic_run_xdp() 1199 fbn = netdev_priv(nv->napi.dev); in fbnic_rx_tstamp() 1212 struct net_device *netdev = nv->napi.dev; in fbnic_populate_skb_fields() [all …]
|
| /linux/drivers/net/ethernet/intel/libeth/ |
| H A D | xsk.c | 126 * current NAPI poll when there are no free buffers left. 202 * @napi: NAPI corresponding to this queue 208 void libeth_xsk_init_wakeup(call_single_data_t *csd, struct napi_struct *napi) in libeth_xsk_init_wakeup() argument 210 INIT_CSD(csd, libeth_xsk_napi_sched, napi); in libeth_xsk_init_wakeup() 219 * Try to mark the NAPI as missed first, so that it could be rescheduled. 225 struct napi_struct *napi = csd->info; in libeth_xsk_wakeup() local 227 if (napi_if_scheduled_mark_missed(napi) || in libeth_xsk_wakeup() 228 unlikely(!napi_schedule_prep(napi))) in libeth_xsk_wakeup() 237 __napi_schedule(napi); in libeth_xsk_wakeup()
|
| /linux/drivers/net/ethernet/google/gve/ |
| H A D | gve_utils.c | 67 struct sk_buff *gve_rx_copy_data(struct net_device *dev, struct napi_struct *napi, in gve_rx_copy_data() argument 72 skb = napi_alloc_skb(napi, len); in gve_rx_copy_data() 83 struct sk_buff *gve_rx_copy(struct net_device *dev, struct napi_struct *napi, in gve_rx_copy() argument 89 return gve_rx_copy_data(dev, napi, va, len); in gve_rx_copy() 113 netif_napi_add_locked(priv->dev, &block->napi, gve_poll); in gve_add_napi() 114 netif_napi_set_irq_locked(&block->napi, block->irq); in gve_add_napi() 123 netif_napi_del_locked(&block->napi); in gve_remove_napi()
|
| /linux/drivers/net/wireless/ath/ath12k/wifi7/ |
| H A D | dp.c | 23 struct napi_struct *napi = &irq_grp->napi; in ath12k_wifi7_dp_service_srng() local 37 work_done = ath12k_wifi7_dp_rx_process_err(dp, napi, budget); in ath12k_wifi7_dp_service_srng() 45 work_done = ath12k_wifi7_dp_rx_process_wbm_err(dp, napi, budget); in ath12k_wifi7_dp_service_srng() 55 work_done = ath12k_wifi7_dp_rx_process(dp, i, napi, budget); in ath12k_wifi7_dp_service_srng() 70 ath12k_wifi7_dp_mon_process_ring(dp, id, napi, in ath12k_wifi7_dp_service_srng() 91 ath12k_wifi7_dp_mon_process_ring(dp, id, napi, in ath12k_wifi7_dp_service_srng() 114 napi, budget, in ath12k_wifi7_dp_service_srng()
|
| /linux/drivers/net/ethernet/qlogic/qlcnic/ |
| H A D | qlcnic_io.c | 959 static int qlcnic_poll(struct napi_struct *napi, int budget) in qlcnic_poll() argument 966 sds_ring = container_of(napi, struct qlcnic_host_sds_ring, napi); in qlcnic_poll() 979 napi_complete_done(&sds_ring->napi, work_done); in qlcnic_poll() 989 static int qlcnic_tx_poll(struct napi_struct *napi, int budget) in qlcnic_tx_poll() argument 995 tx_ring = container_of(napi, struct qlcnic_host_tx_ring, napi); in qlcnic_tx_poll() 1000 napi_complete(&tx_ring->napi); in qlcnic_tx_poll() 1011 static int qlcnic_rx_poll(struct napi_struct *napi, int budget) in qlcnic_rx_poll() argument 1017 sds_ring = container_of(napi, struct qlcnic_host_sds_ring, napi); in qlcnic_rx_poll() 1023 napi_complete_done(&sds_ring->napi, work_done); in qlcnic_rx_poll() 1248 napi_gro_receive(&sds_ring->napi, skb); in qlcnic_process_rcv() [all …]
|
| /linux/drivers/net/ethernet/hisilicon/hibmcge/ |
| H A D | hbg_txrx.c | 194 static int hbg_napi_tx_recycle(struct napi_struct *napi, int budget) in hbg_napi_tx_recycle() argument 196 struct hbg_ring *ring = container_of(napi, struct hbg_ring, napi); in hbg_napi_tx_recycle() 207 * Per NAPI documentation budget is for Rx. in hbg_napi_tx_recycle() 208 * So We hardcode the amount of work Tx NAPI does to 128. in hbg_napi_tx_recycle() 234 napi_complete_done(napi, packet_done))) in hbg_napi_tx_recycle() 482 static int hbg_napi_rx_poll(struct napi_struct *napi, int budget) in hbg_napi_rx_poll() argument 484 struct hbg_ring *ring = container_of(napi, struct hbg_ring, napi); in hbg_napi_rx_poll() 521 napi_gro_receive(napi, buffer->skb); in hbg_napi_rx_poll() 532 napi_complete_done(napi, packet_done))) in hbg_napi_rx_poll() 556 .napi = &ring->napi, in hbg_ring_page_pool_init() [all …]
|