+void
+show_rx_pkt_offsets(void)
+{
+ uint32_t i, n;
+
+ n = rx_pkt_nb_offs;
+ printf("Number of offsets: %u\n", n);
+ if (n) {
+ printf("Segment offsets: ");
+ for (i = 0; i != n - 1; i++)
+ printf("%hu,", rx_pkt_seg_offsets[i]);
+ printf("%hu\n", rx_pkt_seg_lengths[i]);
+ }
+}
+
+void
+set_rx_pkt_offsets(unsigned int *seg_offsets, unsigned int nb_offs)
+{
+ unsigned int i;
+
+ if (nb_offs >= MAX_SEGS_BUFFER_SPLIT) {
+ printf("nb segments per RX packets=%u >= "
+ "MAX_SEGS_BUFFER_SPLIT - ignored\n", nb_offs);
+ return;
+ }
+
+ /*
+ * No extra check here, the segment length will be checked by PMD
+ * in the extended queue setup.
+ */
+ for (i = 0; i < nb_offs; i++) {
+ if (seg_offsets[i] >= UINT16_MAX) {
+ printf("offset[%u]=%u > UINT16_MAX - give up\n",
+ i, seg_offsets[i]);
+ return;
+ }
+ }
+
+ for (i = 0; i < nb_offs; i++)
+ rx_pkt_seg_offsets[i] = (uint16_t) seg_offsets[i];
+
+ rx_pkt_nb_offs = (uint8_t) nb_offs;
+}
+
+void
+show_rx_pkt_segments(void)
+{
+ uint32_t i, n;
+
+ n = rx_pkt_nb_segs;
+ printf("Number of segments: %u\n", n);
+ if (n) {
+ printf("Segment sizes: ");
+ for (i = 0; i != n - 1; i++)
+ printf("%hu,", rx_pkt_seg_lengths[i]);
+ printf("%hu\n", rx_pkt_seg_lengths[i]);
+ }
+}
+
+void
+set_rx_pkt_segments(unsigned int *seg_lengths, unsigned int nb_segs)
+{
+ unsigned int i;
+
+ if (nb_segs >= MAX_SEGS_BUFFER_SPLIT) {
+ printf("nb segments per RX packets=%u >= "
+ "MAX_SEGS_BUFFER_SPLIT - ignored\n", nb_segs);
+ return;
+ }
+
+ /*
+ * No extra check here, the segment length will be checked by PMD
+ * in the extended queue setup.
+ */
+ for (i = 0; i < nb_segs; i++) {
+ if (seg_lengths[i] >= UINT16_MAX) {
+ printf("length[%u]=%u > UINT16_MAX - give up\n",
+ i, seg_lengths[i]);
+ return;
+ }
+ }
+
+ for (i = 0; i < nb_segs; i++)
+ rx_pkt_seg_lengths[i] = (uint16_t) seg_lengths[i];
+
+ rx_pkt_nb_segs = (uint8_t) nb_segs;
+}
+