+static __rte_always_inline uint32_t
+ssovf_octeontx_rx_olflags_get(const void * const lookup_mem, const uint64_t in)
+{
+ const uint32_t * const ol_flags = (const uint32_t *)lookup_mem;
+
+ return ol_flags[(in & 0x7ff)];
+}
+
+static __rte_always_inline void
+ssovf_octeontx_wqe_xtract_mseg(octtx_wqe_t *wqe,
+ struct rte_mbuf *mbuf)
+{
+ octtx_pki_buflink_t *buflink;
+ rte_iova_t *iova_list;
+ uint8_t nb_segs;
+ uint64_t bytes_left = wqe->s.w1.len - wqe->s.w5.size;
+
+ nb_segs = wqe->s.w0.bufs;
+
+ buflink = (octtx_pki_buflink_t *)((uintptr_t)wqe->s.w3.addr -
+ sizeof(octtx_pki_buflink_t));
+
+ while (--nb_segs) {
+ iova_list = (rte_iova_t *)(uintptr_t)(buflink->w1.s.addr);
+ mbuf->next = (struct rte_mbuf *)(rte_iova_t *)(iova_list - 2)
+ - (OCTTX_PACKET_LATER_SKIP / 128);
+ mbuf = mbuf->next;
+
+ mbuf->data_off = sizeof(octtx_pki_buflink_t);
+
+ __mempool_check_cookies(mbuf->pool, (void **)&mbuf, 1, 1);
+ if (nb_segs == 1)
+ mbuf->data_len = bytes_left;
+ else
+ mbuf->data_len = buflink->w0.s.size;
+
+ bytes_left = bytes_left - buflink->w0.s.size;
+ buflink = (octtx_pki_buflink_t *)(rte_iova_t *)(iova_list - 2);
+
+ }
+}
+