Home
last modified time | relevance | path

Searched full:napi (Results 1 – 25 of 504) sorted by relevance

12345678910>>...21

/linux/Documentation/networking/
H A Dnapi.rst6 NAPI title
9 NAPI is the event handling mechanism used by the Linux networking stack.
10 The name NAPI no longer stands for anything in particular [#]_.
14 The host then schedules a NAPI instance to process the events.
15 The device may also be polled for events via NAPI without receiving
18 NAPI processing usually happens in the software interrupt context,
20 for NAPI processing.
22 All in all NAPI abstracts away from the drivers the context and configuration
28 The two most important elements of NAPI are the struct napi_struct
30 of the NAPI instance while the method is the driver-specific event
[all …]
/linux/io_uring/
H A Dnapi.c4 #include "napi.h"
37 /* napi approximating usecs, reverse busy_loop_current_time */ in net_to_ktime()
46 /* Non-NAPI IDs can be rejected. */ in __io_napi_add_id()
89 /* Non-NAPI IDs can be rejected. */ in __io_napi_del_id()
212 /* Singular lists use a different napi loop end check function and are in io_napi_blocking_busy_loop()
232 * io_napi_init() - Init napi settings
235 * Init napi settings in the io-uring context.
249 * io_napi_free() - Deallocate napi
252 * Free the napi list and the hash table in the io-uring context.
267 struct io_uring_napi *napi) in io_napi_register_napi() argument
[all …]
/linux/net/core/
H A Dgro.c254 static void napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb) in napi_gro_complete() argument
287 gro_normal_one(napi, skb, NAPI_GRO_CB(skb)->count); in napi_gro_complete()
290 static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index, in __napi_gro_flush_chain() argument
293 struct list_head *head = &napi->gro_hash[index].list; in __napi_gro_flush_chain()
300 napi_gro_complete(napi, skb); in __napi_gro_flush_chain()
301 napi->gro_hash[index].count--; in __napi_gro_flush_chain()
304 if (!napi->gro_hash[index].count) in __napi_gro_flush_chain()
305 __clear_bit(index, &napi->gro_bitmask); in __napi_gro_flush_chain()
308 /* napi->gro_hash[].list contains packets ordered by age.
312 void napi_gro_flush(struct napi_struct *napi, bool flush_old) in napi_gro_flush() argument
[all …]
H A Ddev.h182 * napi_get_defer_hard_irqs - get the NAPI's defer_hard_irqs
183 * @n: napi struct to get the defer_hard_irqs field from
185 * Return: the per-NAPI value of the defar_hard_irqs field.
193 * napi_set_defer_hard_irqs - set the defer_hard_irqs for a napi
212 struct napi_struct *napi; in netdev_set_defer_hard_irqs() local
216 list_for_each_entry(napi, &netdev->napi_list, dev_list) in netdev_set_defer_hard_irqs()
217 napi_set_defer_hard_irqs(napi, defer); in netdev_set_defer_hard_irqs()
225 * @n: napi struct to get the gro_flush_timeout from
227 * Return: the per-NAPI value of the gro_flush_timeout field.
236 * napi_set_gro_flush_timeout - set the gro_flush_timeout for a napi
[all …]
H A Dgro_cells.c10 struct napi_struct napi; member
40 napi_schedule(&cell->napi); in gro_cells_receive()
51 static int gro_cell_poll(struct napi_struct *napi, int budget) in gro_cell_poll() argument
53 struct gro_cell *cell = container_of(napi, struct gro_cell, napi); in gro_cell_poll()
61 napi_gro_receive(napi, skb); in gro_cell_poll()
66 napi_complete_done(napi, work_done); in gro_cell_poll()
83 set_bit(NAPI_STATE_NO_BUSY_POLL, &cell->napi.state); in gro_cells_init()
85 netif_napi_add(dev, &cell->napi, gro_cell_poll); in gro_cells_init()
86 napi_enable(&cell->napi); in gro_cells_init()
116 napi_disable(&cell->napi); in gro_cells_destroy()
[all …]
H A Dnetdev-genl.c161 netdev_nl_napi_fill_one(struct sk_buff *rsp, struct napi_struct *napi, in netdev_nl_napi_fill_one() argument
170 if (!napi->dev->up) in netdev_nl_napi_fill_one()
177 if (nla_put_u32(rsp, NETDEV_A_NAPI_ID, napi->napi_id)) in netdev_nl_napi_fill_one()
180 if (nla_put_u32(rsp, NETDEV_A_NAPI_IFINDEX, napi->dev->ifindex)) in netdev_nl_napi_fill_one()
183 if (napi->irq >= 0 && nla_put_u32(rsp, NETDEV_A_NAPI_IRQ, napi->irq)) in netdev_nl_napi_fill_one()
186 if (napi->thread) { in netdev_nl_napi_fill_one()
187 pid = task_pid_nr(napi->thread); in netdev_nl_napi_fill_one()
192 napi_defer_hard_irqs = napi_get_defer_hard_irqs(napi); in netdev_nl_napi_fill_one()
197 irq_suspend_timeout = napi_get_irq_suspend_timeout(napi); in netdev_nl_napi_fill_one()
202 gro_flush_timeout = napi_get_gro_flush_timeout(napi); in netdev_nl_napi_fill_one()
[all …]
H A Ddev.c136 #include <trace/events/napi.h>
461 * (e.g. NAPI context).
760 struct napi_struct *napi; in napi_by_id() local
762 hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) in napi_by_id()
763 if (napi->napi_id == napi_id) in napi_by_id()
764 return napi; in napi_by_id()
773 struct napi_struct *napi; in netdev_napi_by_id() local
775 napi = napi_by_id(napi_id); in netdev_napi_by_id()
776 if (!napi) in netdev_napi_by_id()
779 if (WARN_ON_ONCE(!napi->dev)) in netdev_napi_by_id()
[all …]
/linux/include/trace/events/
H A Dnapi.h3 #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/Documentation/netlink/specs/
H A Dnetdev.yaml39 support in the driver napi callback.
139 name: napi-id
140 doc: Id of NAPI using this Page Pool instance.
229 name: napi
233 doc: ifindex of the netdevice to which NAPI instance belongs.
239 doc: ID of the NAPI instance.
243 doc: The associated interrupt vector number for the napi
247 doc: PID of the napi thread, if NAPI is configured to operate in
248 threaded mode. If NAPI is not in threaded mode (i.e. uses normal
260 doc: The timeout, in nanoseconds, of when to trigger the NAPI watchdog
[all …]
/linux/drivers/infiniband/hw/hfi1/
H A Dipoib_rx.c22 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()
H A Dnetdev_rx.c211 rxq->rcd->napi = &rxq->napi; in hfi1_netdev_rxq_init()
212 dd_dev_info(dd, "Setting rcv queue %d napi to context %d\n", in hfi1_netdev_rxq_init()
215 * Disable BUSY_POLL on this NAPI as this is not supported in hfi1_netdev_rxq_init()
218 set_bit(NAPI_STATE_NO_BUSY_POLL, &rxq->napi.state); in hfi1_netdev_rxq_init()
219 netif_napi_add(dev, &rxq->napi, hfi1_netdev_rx_napi); in hfi1_netdev_rxq_init()
252 netif_napi_del(&rxq->napi); in hfi1_netdev_rxq_deinit()
272 napi_enable(&rxq->napi); in enable_queues()
291 /* wait for napi if it was scheduled */ in disable_queues()
295 napi_synchronize(&rxq->napi); in disable_queues()
296 napi_disable(&rxq->napi); in disable_queues()
[all …]
H A Dnetdev.h18 * @napi: napi object
23 struct napi_struct napi; member
47 * When 0 NAPI will be disabled.
58 /* count of enabled napi polls */
103 int hfi1_netdev_rx_napi(struct napi_struct *napi, int budget);
/linux/drivers/net/netdevsim/
H A Dnetdev.c90 napi_schedule(&rq->napi); in nsim_start_xmit()
363 static int nsim_poll(struct napi_struct *napi, int budget) in nsim_poll() argument
365 struct nsim_rq *rq = container_of(napi, struct nsim_rq, napi); in nsim_poll()
369 napi_complete(napi); in nsim_poll()
374 static int nsim_create_page_pool(struct page_pool **p, struct napi_struct *napi) in nsim_create_page_pool() argument
380 .dev = &napi->dev->dev, in nsim_create_page_pool()
381 .napi = napi, in nsim_create_page_pool()
383 .netdev = napi->dev, in nsim_create_page_pool()
404 netif_napi_add_config(dev, &rq->napi, nsim_poll, i); in nsim_init_napi()
410 err = nsim_create_page_pool(&rq->page_pool, &rq->napi); in nsim_init_napi()
[all …]
/linux/drivers/net/wireless/ath/wil6210/
H A Dnetdev.c91 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/ethernet/synopsys/
H A Ddwc-xlgmac-net.c283 * 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()
365 struct napi_struct *napi; in xlgmac_tx_timer() local
367 napi = (pdata->per_channel_irq) ? &channel->napi : &pdata->napi; in xlgmac_tx_timer()
369 if (napi_schedule_prep(napi)) { in xlgmac_tx_timer()
378 __napi_schedule(napi); in xlgmac_tx_timer()
[all …]
/linux/drivers/net/ethernet/aquantia/atlantic/
H A Daq_vec.c21 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/mellanox/mlx5/core/en/
H A Dtrap.c8 static int mlx5e_trap_napi_poll(struct napi_struct *napi, int budget) in mlx5e_trap_napi_poll() argument
10 struct mlx5e_trap *trap_ctx = container_of(napi, struct mlx5e_trap, napi); in mlx5e_trap_napi_poll()
29 if (unlikely(!napi_complete_done(napi, work_done))) in mlx5e_trap_napi_poll()
77 ccp.napi = &t->napi; in mlx5e_open_trap_rq()
152 netif_napi_add(netdev, &t->napi, mlx5e_trap_napi_poll); in mlx5e_open_trap()
167 netif_napi_del(&t->napi); in mlx5e_open_trap()
176 netif_napi_del(&trap->napi); in mlx5e_close_trap()
182 napi_enable(&trap->napi); in mlx5e_activate_trap()
184 mlx5e_trigger_napi_sched(&trap->napi); in mlx5e_activate_trap()
192 napi_disable(&trap->napi); in mlx5e_deactivate_trap()
/linux/drivers/net/caif/
H A Dcaif_virtio.c30 /* NAPI schedule quota */
41 /* struct cfv_napi_contxt - NAPI context info
54 * @rx_napi_complete: Number of NAPI completions (RX)
84 * @napi: Napi context used in cfv_rx_poll()
111 struct napi_struct napi; member
250 static int cfv_rx_poll(struct napi_struct *napi, int quota) in cfv_rx_poll() argument
252 struct cfv_info *cfv = container_of(napi, struct cfv_info, napi); in cfv_rx_poll()
319 napi_complete(napi); in cfv_rx_poll()
321 napi_schedule_prep(napi)) { in cfv_rx_poll()
323 __napi_schedule(napi); in cfv_rx_poll()
[all …]
/linux/drivers/net/ethernet/qlogic/qlcnic/
H A Dqlcnic_io.c959 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/staging/octeon/
H A Dethernet-rx.c37 struct napi_struct napi; member
43 * @napi_id: Cookie to identify the NAPI instance.
406 * cvm_oct_napi_poll - the NAPI poll function.
407 * @napi: The NAPI instance.
412 static int cvm_oct_napi_poll(struct napi_struct *napi, int budget) in cvm_oct_napi_poll() argument
414 struct oct_rx_group *rx_group = container_of(napi, struct oct_rx_group, in cvm_oct_napi_poll()
415 napi); in cvm_oct_napi_poll()
422 napi_complete_done(napi, rx_count); in cvm_oct_napi_poll()
472 netif_napi_add_weight(dev_for_napi, &oct_rx_group[i].napi, in cvm_oct_rx_initialize()
474 napi_enable(&oct_rx_group[i].napi); in cvm_oct_rx_initialize()
[all …]
/linux/drivers/net/ethernet/google/gve/
H A Dgve_rx_dqo.c430 static void gve_rx_free_skb(struct napi_struct *napi, struct gve_rx_ring *rx) in gve_rx_free_skb() argument
435 if (rx->ctx.skb_head == napi->skb) in gve_rx_free_skb()
436 napi->skb = NULL; in gve_rx_free_skb()
482 static int gve_rx_append_frags(struct napi_struct *napi, in gve_rx_append_frags() argument
492 skb = napi_alloc_skb(napi, 0); in gve_rx_append_frags()
528 static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx, in gve_rx_dqo() argument
571 rx->ctx.skb_head = gve_rx_copy_data(priv->dev, napi, in gve_rx_dqo()
598 if (unlikely(gve_rx_append_frags(napi, buf_state, buf_len, rx, in gve_rx_dqo()
606 rx->ctx.skb_head = gve_rx_copy(priv->dev, napi, in gve_rx_dqo()
621 rx->ctx.skb_head = napi_get_frags(napi); in gve_rx_dqo()
[all …]
H A Dgve_rx.c445 static struct sk_buff *gve_rx_add_frags(struct napi_struct *napi, in gve_rx_add_frags() argument
455 skb = napi_get_frags(napi); in gve_rx_add_frags()
464 skb = napi_alloc_skb(napi, 0); in gve_rx_add_frags()
515 struct napi_struct *napi, in gve_rx_raw_addressing() argument
519 struct sk_buff *skb = gve_rx_add_frags(napi, page_info, packet_buffer_size, len, ctx); in gve_rx_raw_addressing()
535 u16 len, struct napi_struct *napi) in gve_rx_copy_to_pool() argument
576 skb = gve_rx_add_frags(napi, &alloc_page_info, in gve_rx_copy_to_pool()
592 skb = gve_rx_add_frags(napi, copy_page_info, in gve_rx_copy_to_pool()
621 u16 len, struct napi_struct *napi, in gve_rx_qpl() argument
633 skb = gve_rx_add_frags(napi, page_info, rx->packet_buffer_size, len, ctx); in gve_rx_qpl()
[all …]
/linux/drivers/net/wireless/mediatek/mt76/
H A Dmt792x_dma.c66 napi_schedule(&dev->mt76.napi[MT_RXQ_MCU]); in mt792x_irq_tasklet()
69 napi_schedule(&dev->mt76.napi[MT_RXQ_MCU_WA]); in mt792x_irq_tasklet()
72 napi_schedule(&dev->mt76.napi[MT_RXQ_MAIN]); in mt792x_irq_tasklet()
316 int mt792x_poll_tx(struct napi_struct *napi, int budget) in mt792x_poll_tx() argument
320 dev = container_of(napi, struct mt792x_dev, mt76.tx_napi); in mt792x_poll_tx()
323 napi_complete(napi); in mt792x_poll_tx()
329 if (napi_complete(napi)) in mt792x_poll_tx()
338 int mt792x_poll_rx(struct napi_struct *napi, int budget) in mt792x_poll_rx() argument
343 dev = mt76_priv(napi->dev); in mt792x_poll_rx()
346 napi_complete(napi); in mt792x_poll_rx()
[all …]
/linux/drivers/net/wireless/ath/ath12k/
H A Ddp_mon.h81 struct napi_struct *napi);
87 struct napi_struct *napi);
89 struct napi_struct *napi, int budget,
101 struct napi_struct *napi,
105 struct napi_struct *napi, int *budget);
/linux/drivers/net/can/dev/
H A Drx-offload.c42 static int can_rx_offload_napi_poll(struct napi_struct *napi, int quota) in can_rx_offload_napi_poll() argument
44 struct can_rx_offload *offload = container_of(napi, in can_rx_offload_napi_poll()
46 napi); in can_rx_offload_napi_poll()
66 napi_complete_done(napi, work_done); in can_rx_offload_napi_poll()
70 napi_schedule(&offload->napi); in can_rx_offload_napi_poll()
325 napi_schedule(&offload->napi); in can_rx_offload_irq_finish()
347 napi_schedule(&offload->napi); in can_rx_offload_threaded_irq_finish()
364 netif_napi_add_weight(dev, &offload->napi, can_rx_offload_napi_poll, in can_rx_offload_init_queue()
417 napi_enable(&offload->napi); in can_rx_offload_enable()
423 netif_napi_del(&offload->napi); in can_rx_offload_del()

12345678910>>...21