net/octeontx: support fast mbuf free
[dpdk.git] / drivers / common / cpt / cpt_ucode.h
index 081249c..0d3a01b 100644 (file)
@@ -373,7 +373,7 @@ fill_sg_comp_from_iov(sg_comp_t *list,
 {
        int32_t j;
        uint32_t extra_len = extra_buf ? extra_buf->size : 0;
-       uint32_t size = *psize - extra_len;
+       uint32_t size = *psize;
        buf_ptr_t *bufs;
 
        bufs = from->bufs;
@@ -382,9 +382,6 @@ fill_sg_comp_from_iov(sg_comp_t *list,
                uint32_t e_len;
                sg_comp_t *to = &list[i >> 2];
 
-               if (!bufs[j].size)
-                       continue;
-
                if (unlikely(from_offset)) {
                        if (from_offset >= bufs[j].size) {
                                from_offset -= bufs[j].size;
@@ -416,18 +413,19 @@ fill_sg_comp_from_iov(sg_comp_t *list,
                                to->u.s.len[i % 4] = rte_cpu_to_be_16(e_len);
                        }
 
+                       extra_len = RTE_MIN(extra_len, size);
                        /* Insert extra data ptr */
                        if (extra_len) {
                                i++;
                                to = &list[i >> 2];
                                to->u.s.len[i % 4] =
-                                       rte_cpu_to_be_16(extra_buf->size);
+                                       rte_cpu_to_be_16(extra_len);
                                to->ptr[i % 4] =
                                        rte_cpu_to_be_64(extra_buf->dma_addr);
-
-                               /* size already decremented by extra len */
+                               size -= extra_len;
                        }
 
+                       next_len = RTE_MIN(next_len, size);
                        /* insert the rest of the data */
                        if (next_len) {
                                i++;
@@ -2457,7 +2455,7 @@ cpt_fc_dec_hmac_prep(uint32_t flags,
        return prep_req;
 }
 
-static __rte_always_inline void *__hot
+static __rte_always_inline void *__rte_hot
 cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens,
                     fc_params_t *fc_params, void *op)
 {