Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/117850 _apply patch failure_ Submitter: Andrew Boyer Date: Tuesday, October 11 2022 00:50:19 Applied on: CommitID:f13604fad12a81383da7b04821a4befb3d01e2ed Apply patch set 117850 failed: Checking patch drivers/net/ionic/ionic_lif.h... error: while searching for: uint16_t hdr_seg_size; /* Length of first segment of RX chain */ uint16_t seg_size; /* Length of all subsequent segments */ uint16_t flags; /* cacheline3 (inside stats) */ struct ionic_rx_stats stats; }; struct ionic_tx_qcq { error: patch failed: drivers/net/ionic/ionic_lif.h:86 Checking patch drivers/net/ionic/ionic_rxtx.c... error: while searching for: * fragments that were left dangling for later reuse */ ionic_empty_array(q->info, q->num_descs * q->num_segs, 0); } /********************************************************************* error: patch failed: drivers/net/ionic/ionic_rxtx.c:77 error: while searching for: rte_iova_t data_iova; uint32_t i; void **info; info = IONIC_INFO_PTR(q, q->head_idx); desc = &desc_base[q->head_idx]; error: patch failed: drivers/net/ionic/ionic_rxtx.c:950 error: while searching for: if (unlikely(info[0])) return 0; rxm = rte_mbuf_raw_alloc(rxq->mb_pool); if (unlikely(rxm == NULL)) { assert(0); return -ENOMEM; } info[0] = rxm; data_iova = rte_mbuf_data_iova_default(rxm); error: patch failed: drivers/net/ionic/ionic_rxtx.c:959 error: while searching for: if (info[i]) return 0; rxm_seg = rte_mbuf_raw_alloc(rxq->mb_pool); if (rxm_seg == NULL) { assert(0); return -ENOMEM; } info[i] = rxm_seg; /* The data_off does not get set to 0 until later */ error: patch failed: drivers/net/ionic/ionic_rxtx.c:975 Applying patch drivers/net/ionic/ionic_lif.h with 1 reject... Hunk #1 applied cleanly. Rejected hunk #2. Applying patch drivers/net/ionic/ionic_rxtx.c with 4 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. Rejected hunk #4. diff a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h (rejected hunks) @@ -86,9 +88,13 @@ struct ionic_rx_qcq { uint16_t hdr_seg_size; /* Length of first segment of RX chain */ uint16_t seg_size; /* Length of all subsequent segments */ uint16_t flags; + uint16_t mb_idx; /* cacheline3 (inside stats) */ struct ionic_rx_stats stats; + + /* cacheline4+ */ + struct rte_mbuf *mbs[IONIC_MBUF_BULK_ALLOC] __rte_cache_aligned; }; struct ionic_tx_qcq { diff a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c (rejected hunks) @@ -77,6 +77,10 @@ ionic_rx_empty(struct ionic_rx_qcq *rxq) * fragments that were left dangling for later reuse */ ionic_empty_array(q->info, q->num_descs * q->num_segs, 0); + + ionic_empty_array((void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC, rxq->mb_idx); + rxq->mb_idx = 0; } /********************************************************************* @@ -950,6 +954,7 @@ ionic_rx_fill_one(struct ionic_rx_qcq *rxq) rte_iova_t data_iova; uint32_t i; void **info; + int ret; info = IONIC_INFO_PTR(q, q->head_idx); desc = &desc_base[q->head_idx]; @@ -959,12 +964,19 @@ ionic_rx_fill_one(struct ionic_rx_qcq *rxq) if (unlikely(info[0])) return 0; - rxm = rte_mbuf_raw_alloc(rxq->mb_pool); - if (unlikely(rxm == NULL)) { - assert(0); - return -ENOMEM; + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; } + rxm = rxq->mbs[--rxq->mb_idx]; info[0] = rxm; data_iova = rte_mbuf_data_iova_default(rxm); @@ -975,12 +987,19 @@ ionic_rx_fill_one(struct ionic_rx_qcq *rxq) if (info[i]) return 0; - rxm_seg = rte_mbuf_raw_alloc(rxq->mb_pool); - if (rxm_seg == NULL) { - assert(0); - return -ENOMEM; + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; } + rxm_seg = rxq->mbs[--rxq->mb_idx]; info[i] = rxm_seg; /* The data_off does not get set to 0 until later */ https://lab.dpdk.org/results/dashboard/patchsets/23891/ UNH-IOL DPDK Community Lab