Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/124090 _apply patch failure_ Submitter: Levend Sayar Date: Thursday, February 16 2023 18:10:25 Applied on: CommitID:01314192b7856d3737eb6d80aa351f60a07631af Apply patch set 124090-124093 failed: Checking patch drivers/net/gve/gve_ethdev.c... Hunk #2 succeeded at 377 (offset 58 lines). error: while searching for: return 0; } static const struct eth_dev_ops gve_eth_dev_ops = { .dev_configure = gve_dev_configure, .dev_start = gve_dev_start, .dev_stop = gve_dev_stop, .dev_close = gve_dev_close, .dev_infos_get = gve_dev_info_get, .rx_queue_setup = gve_rx_queue_setup, .tx_queue_setup = gve_tx_queue_setup, .rx_queue_release = gve_rx_queue_release, .tx_queue_release = gve_tx_queue_release, .link_update = gve_link_update, .mtu_set = gve_dev_mtu_set, }; static void error: patch failed: drivers/net/gve/gve_ethdev.c:345 Checking patch drivers/net/gve/gve_ethdev.h... Hunk #2 succeeded at 134 (offset 5 lines). Checking patch drivers/net/gve/gve_rx.c... error: while searching for: if (diag < 0) { for (i = 0; i < nb_alloc; i++) { nmb = rte_pktmbuf_alloc(rxq->mpool); if (!nmb) break; rxq->sw_ring[idx + i] = nmb; } if (i != nb_alloc) error: patch failed: drivers/net/gve/gve_rx.c:22 error: while searching for: uint16_t nb_rx, len; uint64_t addr; uint16_t i; rxr = rxq->rx_desc_ring; nb_rx = 0; error: patch failed: drivers/net/gve/gve_rx.c:90 error: while searching for: if (GVE_SEQNO(rxd->flags_seq) != rxq->expected_seqno) break; if (rxd->flags_seq & GVE_RXF_ERR) continue; len = rte_be_to_cpu_16(rxd->len) - GVE_RX_PAD; rxe = rxq->sw_ring[rx_id]; if (rxq->is_gqi_qpl) { addr = (uint64_t)(rxq->qpl->mz->addr) + rx_id * PAGE_SIZE + GVE_RX_PAD; error: patch failed: drivers/net/gve/gve_rx.c:99 Checking patch drivers/net/gve/gve_tx.c... error: while searching for: uint16_t nb_used, i; uint16_t nb_tx = 0; uint32_t hlen; txr = txq->tx_desc_ring; error: patch failed: drivers/net/gve/gve_tx.c:262 error: while searching for: txq->sw_tail = sw_id; } return nb_tx; } error: patch failed: drivers/net/gve/gve_tx.c:364 Applying patch drivers/net/gve/gve_ethdev.c with 1 reject... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Rejected hunk #3. Applied patch drivers/net/gve/gve_ethdev.h cleanly. Applying patch drivers/net/gve/gve_rx.c with 3 rejects... Rejected hunk #1. Hunk #2 applied cleanly. Rejected hunk #3. Rejected hunk #4. Hunk #5 applied cleanly. Applying patch drivers/net/gve/gve_tx.c with 2 rejects... Rejected hunk #1. Hunk #2 applied cleanly. Rejected hunk #3. diff a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c (rejected hunks) @@ -345,18 +345,157 @@ gve_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) return 0; } +static int +gve_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) +{ + uint16_t i; + struct rte_eth_stats tmp; + + memset(&tmp, 0, sizeof(tmp)); + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + struct gve_rx_queue *rxq = dev->data->rx_queues[i]; + tmp.ipackets += rxq->packets; + tmp.ibytes += rxq->bytes; + tmp.ierrors += rxq->errors; + tmp.rx_nombuf += rxq->no_mbufs; + } + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + struct gve_tx_queue *txq = dev->data->tx_queues[i]; + tmp.opackets += txq->packets; + tmp.obytes += txq->bytes; + tmp.oerrors += txq->errors; + } + + *stats = tmp; + return 0; +} + +static int +gve_stats_reset(struct rte_eth_dev *dev) +{ + uint16_t i; + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + struct gve_rx_queue *rxq = dev->data->rx_queues[i]; + rxq->packets = 0; + rxq->bytes = 0; + rxq->errors = 0; + rxq->no_mbufs = 0; + } + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + struct gve_tx_queue *txq = dev->data->tx_queues[i]; + txq->packets = 0; + txq->bytes = 0; + txq->errors = 0; + } + + return 0; +} + +static int +gve_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, unsigned int n) +{ + if (xstats) { + uint requested = n; + uint64_t indx = 0; + struct rte_eth_xstat *xstat = xstats; + uint16_t i; + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + struct gve_rx_queue *rxq = dev->data->rx_queues[i]; + xstat->id = indx++; + xstat->value = rxq->packets; + if (--requested == 0) + return n; + xstat++; + + xstat->id = indx++; + xstat->value = rxq->bytes; + if (--requested == 0) + return n; + xstat++; + } + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + struct gve_tx_queue *txq = dev->data->tx_queues[i]; + xstat->id = indx++; + xstat->value = txq->packets; + if (--requested == 0) + return n; + xstat++; + + xstat->id = indx++; + xstat->value = txq->bytes; + if (--requested == 0) + return n; + xstat++; + } + } + + return (dev->data->nb_tx_queues + dev->data->nb_rx_queues) * 2; +} + +static int +gve_xstats_reset(struct rte_eth_dev *dev) +{ + return gve_stats_reset(dev); +} + +static int +gve_xstats_get_names(struct rte_eth_dev *dev, struct rte_eth_xstat_name *xstats_names, + unsigned int n) +{ + if (xstats_names) { + uint requested = n; + struct rte_eth_xstat_name *xstats_name = xstats_names; + uint16_t i; + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + snprintf(xstats_name->name, sizeof(xstats_name->name), "rx_q%d_packets", i); + if (--requested == 0) + return n; + xstats_name++; + snprintf(xstats_name->name, sizeof(xstats_name->name), "rx_q%d_bytes", i); + if (--requested == 0) + return n; + xstats_name++; + } + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + snprintf(xstats_name->name, sizeof(xstats_name->name), "tx_q%d_packets", i); + if (--requested == 0) + return n; + xstats_name++; + snprintf(xstats_name->name, sizeof(xstats_name->name), "tx_q%d_bytes", i); + if (--requested == 0) + return n; + xstats_name++; + } + } + + return (dev->data->nb_tx_queues + dev->data->nb_rx_queues) * 2; +} + static const struct eth_dev_ops gve_eth_dev_ops = { .dev_configure = gve_dev_configure, .dev_start = gve_dev_start, .dev_stop = gve_dev_stop, .dev_close = gve_dev_close, - .dev_infos_get = gve_dev_info_get, + .dev_infos_get = gve_dev_infos_get, .rx_queue_setup = gve_rx_queue_setup, .tx_queue_setup = gve_tx_queue_setup, .rx_queue_release = gve_rx_queue_release, .tx_queue_release = gve_tx_queue_release, .link_update = gve_link_update, - .mtu_set = gve_dev_mtu_set, + .mtu_set = gve_mtu_set, + .stats_get = gve_stats_get, + .stats_reset = gve_stats_reset, + .xstats_get = gve_xstats_get, + .xstats_reset = gve_xstats_reset, + .xstats_get_names = gve_xstats_get_names, }; static void diff a/drivers/net/gve/gve_rx.c b/drivers/net/gve/gve_rx.c (rejected hunks) @@ -22,8 +22,10 @@ gve_rx_refill(struct gve_rx_queue *rxq) if (diag < 0) { for (i = 0; i < nb_alloc; i++) { nmb = rte_pktmbuf_alloc(rxq->mpool); - if (!nmb) + if (!nmb) { + rxq->no_mbufs++; break; + } rxq->sw_ring[idx + i] = nmb; } if (i != nb_alloc) @@ -90,6 +94,7 @@ gve_rx_burst(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) uint16_t nb_rx, len; uint64_t addr; uint16_t i; + uint64_t total_len = 0; rxr = rxq->rx_desc_ring; nb_rx = 0; @@ -99,10 +104,13 @@ gve_rx_burst(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) if (GVE_SEQNO(rxd->flags_seq) != rxq->expected_seqno) break; - if (rxd->flags_seq & GVE_RXF_ERR) + if (rxd->flags_seq & GVE_RXF_ERR) { + rxq->errors++; continue; + } len = rte_be_to_cpu_16(rxd->len) - GVE_RX_PAD; + total_len += len; rxe = rxq->sw_ring[rx_id]; if (rxq->is_gqi_qpl) { addr = (uint64_t)(rxq->qpl->mz->addr) + rx_id * PAGE_SIZE + GVE_RX_PAD; diff a/drivers/net/gve/gve_tx.c b/drivers/net/gve/gve_tx.c (rejected hunks) @@ -262,6 +262,7 @@ gve_tx_burst_qpl(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) uint16_t nb_used, i; uint16_t nb_tx = 0; uint32_t hlen; + uint64_t total_len = 0; txr = txq->tx_desc_ring; @@ -364,6 +366,10 @@ gve_tx_burst_qpl(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) txq->sw_tail = sw_id; } + /* update stats */ + txq->packets += nb_tx; + txq->bytes += total_len; + return nb_tx; } Checking patch drivers/net/gve/gve_tx.c... error: drivers/net/gve/gve_tx.c: does not match index Checking patch drivers/net/gve/gve_ethdev.c... error: drivers/net/gve/gve_ethdev.c: does not match index https://lab.dpdk.org/results/dashboard/patchsets/25430/ UNH-IOL DPDK Community Lab