- list->buffers[0].addr = buf_start;
- list->buffers[0].resrvd = 0;
- list->buffers[0].len = first_buf_len;
-
- if (data_len <= first_buf_len) {
- list->num_bufs = nr;
- list->buffers[0].len = data_len;
- goto sgl_end;
- }
-
- buf = buf->next;
- buf_len = first_buf_len;
- while (buf) {
- if (unlikely(nr == max_segs)) {
- QAT_DP_LOG(ERR, "Exceeded max segments in QAT SGL (%u)",
- max_segs);
- return -EINVAL;
+ for (nr = buf_len = 0; buf && nr < max_segs; buf = buf->next) {
+ if (offset >= rte_pktmbuf_data_len(buf)) {
+ offset -= rte_pktmbuf_data_len(buf);
+ continue;