Lines Matching +full:num +full:- +full:rx +full:- +full:queues

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
4 * Copyright (c) 2023-2024 Google LLC
42 &gve_allow_4k_rx_buffers, 0, "Controls if 4K RX Buffers are allowed");
61 snprintf(namebuf, sizeof(namebuf), "rxq%d", rxq->com.id); in gve_setup_rxq_sysctl()
66 stats = &rxq->stats; in gve_setup_rxq_sysctl()
70 &stats->rbytes, "Bytes received"); in gve_setup_rxq_sysctl()
73 &stats->rpackets, "Packets received"); in gve_setup_rxq_sysctl()
75 CTLFLAG_RD, &stats->rx_copybreak_cnt, in gve_setup_rxq_sysctl()
78 CTLFLAG_RD, &stats->rx_frag_flip_cnt, in gve_setup_rxq_sysctl()
81 CTLFLAG_RD, &stats->rx_frag_copy_cnt, in gve_setup_rxq_sysctl()
84 CTLFLAG_RD, &stats->rx_dropped_pkt, in gve_setup_rxq_sysctl()
85 "Total rx packets dropped"); in gve_setup_rxq_sysctl()
88 &stats->rx_dropped_pkt_desc_err, in gve_setup_rxq_sysctl()
92 &stats->rx_dropped_pkt_buf_post_fail, in gve_setup_rxq_sysctl()
96 &stats->rx_dropped_pkt_mbuf_alloc_fail, in gve_setup_rxq_sysctl()
100 &stats->rx_mbuf_dmamap_err, in gve_setup_rxq_sysctl()
101 "Number of rx mbufs which could not be dma mapped"); in gve_setup_rxq_sysctl()
104 &stats->rx_mbuf_mclget_null, in gve_setup_rxq_sysctl()
108 &rxq->cnt, 0, "Number of descriptors completed"); in gve_setup_rxq_sysctl()
111 &rxq->fill_cnt, rxq->fill_cnt, in gve_setup_rxq_sysctl()
124 snprintf(namebuf, sizeof(namebuf), "txq%d", txq->com.id); in gve_setup_txq_sysctl()
129 stats = &txq->stats; in gve_setup_txq_sysctl()
133 &txq->req, 0, "Number of descriptors posted by NIC"); in gve_setup_txq_sysctl()
136 &txq->done, 0, "Number of descriptors completed"); in gve_setup_txq_sysctl()
139 &stats->tpackets, "Packets transmitted"); in gve_setup_txq_sysctl()
142 &stats->tso_packet_cnt, "TSO Packets transmitted"); in gve_setup_txq_sysctl()
145 &stats->tbytes, "Bytes transmitted"); in gve_setup_txq_sysctl()
148 &stats->tx_delayed_pkt_nospace_device, in gve_setup_txq_sysctl()
152 &stats->tx_dropped_pkt_nospace_bufring, in gve_setup_txq_sysctl()
156 &stats->tx_dropped_pkt_vlan, in gve_setup_txq_sysctl()
160 &stats->tx_delayed_pkt_nospace_descring, in gve_setup_txq_sysctl()
164 &stats->tx_delayed_pkt_nospace_compring, in gve_setup_txq_sysctl()
168 &stats->tx_delayed_pkt_nospace_qpl_bufs, in gve_setup_txq_sysctl()
172 &stats->tx_delayed_pkt_tsoerr, in gve_setup_txq_sysctl()
176 &stats->tx_mbuf_collapse, in gve_setup_txq_sysctl()
180 &stats->tx_mbuf_defrag, in gve_setup_txq_sysctl()
184 &stats->tx_mbuf_defrag_err, in gve_setup_txq_sysctl()
188 &stats->tx_mbuf_dmamap_enomem_err, in gve_setup_txq_sysctl()
189 "tx mbufs that could not be dma-mapped due to low mem"); in gve_setup_txq_sysctl()
192 &stats->tx_mbuf_dmamap_err, in gve_setup_txq_sysctl()
193 "tx mbufs that could not be dma-mapped"); in gve_setup_txq_sysctl()
196 &stats->tx_timeout, in gve_setup_txq_sysctl()
197 "detections of timed out packets on tx queues"); in gve_setup_txq_sysctl()
206 for (i = 0; i < priv->rx_cfg.num_queues; i++) { in gve_setup_queue_stat_sysctl()
207 gve_setup_rxq_sysctl(ctx, child, &priv->rx[i]); in gve_setup_queue_stat_sysctl()
209 for (i = 0; i < priv->tx_cfg.num_queues; i++) { in gve_setup_queue_stat_sysctl()
210 gve_setup_txq_sysctl(ctx, child, &priv->tx[i]); in gve_setup_queue_stat_sysctl()
227 &priv->adminq_prod_cnt, 0, "Adminq Commands issued"); in gve_setup_adminq_stat_sysctl()
229 &priv->adminq_cmd_fail, 0, "Aqminq Failed commands"); in gve_setup_adminq_stat_sysctl()
231 &priv->adminq_timeouts, 0, "Adminq Timedout commands"); in gve_setup_adminq_stat_sysctl()
233 CTLFLAG_RD, &priv->adminq_describe_device_cnt, 0, in gve_setup_adminq_stat_sysctl()
237 &priv->adminq_cfg_device_resources_cnt, 0, in gve_setup_adminq_stat_sysctl()
241 &priv->adminq_register_page_list_cnt, 0, in gve_setup_adminq_stat_sysctl()
245 &priv->adminq_unregister_page_list_cnt, 0, in gve_setup_adminq_stat_sysctl()
248 CTLFLAG_RD, &priv->adminq_create_tx_queue_cnt, 0, in gve_setup_adminq_stat_sysctl()
251 CTLFLAG_RD, &priv->adminq_create_rx_queue_cnt, 0, in gve_setup_adminq_stat_sysctl()
254 CTLFLAG_RD, &priv->adminq_destroy_tx_queue_cnt, 0, in gve_setup_adminq_stat_sysctl()
257 CTLFLAG_RD, &priv->adminq_destroy_rx_queue_cnt, 0, in gve_setup_adminq_stat_sysctl()
260 CTLFLAG_RD, &priv->adminq_get_ptype_map_cnt, 0, in gve_setup_adminq_stat_sysctl()
264 &priv->adminq_dcfg_device_resources_cnt, 0, in gve_setup_adminq_stat_sysctl()
268 &priv->adminq_set_driver_parameter_cnt, 0, in gve_setup_adminq_stat_sysctl()
272 &priv->adminq_verify_driver_compatibility_cnt, 0, in gve_setup_adminq_stat_sysctl()
289 &priv->interface_up_cnt, 0, "Times interface was set to up"); in gve_setup_main_stat_sysctl()
291 &priv->interface_down_cnt, 0, "Times interface was set to down"); in gve_setup_main_stat_sysctl()
293 &priv->reset_cnt, 0, "Times reset"); in gve_setup_main_stat_sysctl()
300 device_printf(priv->dev, in gve_check_num_queues()
301 "Requested num queues (%u) must be a positive integer\n", val); in gve_check_num_queues()
305 if (val > (is_rx ? priv->rx_cfg.max_queues : priv->tx_cfg.max_queues)) { in gve_check_num_queues()
306 device_printf(priv->dev, in gve_check_num_queues()
307 "Requested num queues (%u) is too large\n", val); in gve_check_num_queues()
321 val = priv->tx_cfg.num_queues; in gve_sysctl_num_tx_queues()
323 if (err != 0 || req->newptr == NULL) in gve_sysctl_num_tx_queues()
330 if (val != priv->tx_cfg.num_queues) { in gve_sysctl_num_tx_queues()
331 GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); in gve_sysctl_num_tx_queues()
333 GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); in gve_sysctl_num_tx_queues()
346 val = priv->rx_cfg.num_queues; in gve_sysctl_num_rx_queues()
348 if (err != 0 || req->newptr == NULL) in gve_sysctl_num_rx_queues()
356 if (val != priv->rx_cfg.num_queues) { in gve_sysctl_num_rx_queues()
357 GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); in gve_sysctl_num_rx_queues()
359 GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); in gve_sysctl_num_rx_queues()
369 device_printf(priv->dev, in gve_check_ring_size()
374 if (val < (is_rx ? priv->min_rx_desc_cnt : priv->min_tx_desc_cnt)) { in gve_check_ring_size()
375 device_printf(priv->dev, in gve_check_ring_size()
377 (is_rx ? priv->min_rx_desc_cnt : priv->min_tx_desc_cnt)); in gve_check_ring_size()
382 if (val > (is_rx ? priv->max_rx_desc_cnt : priv->max_tx_desc_cnt)) { in gve_check_ring_size()
383 device_printf(priv->dev, in gve_check_ring_size()
385 (is_rx ? priv->max_rx_desc_cnt : priv->max_tx_desc_cnt)); in gve_check_ring_size()
399 val = priv->tx_desc_cnt; in gve_sysctl_tx_ring_size()
401 if (err != 0 || req->newptr == NULL) in gve_sysctl_tx_ring_size()
408 if (val != priv->tx_desc_cnt) { in gve_sysctl_tx_ring_size()
409 GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); in gve_sysctl_tx_ring_size()
411 GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); in gve_sysctl_tx_ring_size()
424 val = priv->rx_desc_cnt; in gve_sysctl_rx_ring_size()
426 if (err != 0 || req->newptr == NULL) in gve_sysctl_rx_ring_size()
433 if (val != priv->rx_desc_cnt) { in gve_sysctl_rx_ring_size()
434 GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); in gve_sysctl_rx_ring_size()
436 GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); in gve_sysctl_rx_ring_size()
448 gve_sysctl_num_tx_queues, "I", "Number of TX queues"); in gve_setup_sysctl_writables()
452 gve_sysctl_num_rx_queues, "I", "Number of RX queues"); in gve_setup_sysctl_writables()
454 if (priv->modify_ringsize_enabled) { in gve_setup_sysctl_writables()
461 gve_sysctl_rx_ring_size, "I", "RX ring size"); in gve_setup_sysctl_writables()
472 dev = priv->dev; in gve_setup_sysctl()
492 for (i = 0; i < priv->rx_cfg.num_queues; i++) { in gve_accum_stats()
493 rxqstats = &priv->rx[i].stats; in gve_accum_stats()
494 *rpackets += counter_u64_fetch(rxqstats->rpackets); in gve_accum_stats()
495 *rbytes += counter_u64_fetch(rxqstats->rbytes); in gve_accum_stats()
496 *rx_dropped_pkt += counter_u64_fetch(rxqstats->rx_dropped_pkt); in gve_accum_stats()
499 for (i = 0; i < priv->tx_cfg.num_queues; i++) { in gve_accum_stats()
500 txqstats = &priv->tx[i].stats; in gve_accum_stats()
501 *tpackets += counter_u64_fetch(txqstats->tpackets); in gve_accum_stats()
502 *tbytes += counter_u64_fetch(txqstats->tbytes); in gve_accum_stats()
503 *tx_dropped_pkt += counter_u64_fetch(txqstats->tx_dropped_pkt); in gve_accum_stats()