Lines Matching defs:pkt_stream

258 	if (ifobject->pkt_stream && ifobject->mtu > MAX_ETH_PKT_SIZE)
399 ifobj->pkt_stream = test->tx_pkt_stream_default;
403 ifobj->pkt_stream = test->rx_pkt_stream_default;
432 struct pkt_stream *tx_pkt_stream;
433 struct pkt_stream *rx_pkt_stream;
496 static void pkt_stream_reset(struct pkt_stream *pkt_stream)
498 if (pkt_stream)
499 pkt_stream->current_pkt_nb = 0;
502 static struct pkt *pkt_stream_get_next_tx_pkt(struct pkt_stream *pkt_stream)
504 if (pkt_stream->current_pkt_nb >= pkt_stream->nb_pkts)
507 return &pkt_stream->pkts[pkt_stream->current_pkt_nb++];
510 static struct pkt *pkt_stream_get_next_rx_pkt(struct pkt_stream *pkt_stream, u32 *pkts_sent)
512 while (pkt_stream->current_pkt_nb < pkt_stream->nb_pkts) {
514 if (pkt_stream->pkts[pkt_stream->current_pkt_nb].valid)
515 return &pkt_stream->pkts[pkt_stream->current_pkt_nb++];
516 pkt_stream->current_pkt_nb++;
521 static void pkt_stream_delete(struct pkt_stream *pkt_stream)
523 free(pkt_stream->pkts);
524 free(pkt_stream);
529 struct pkt_stream *tx_pkt_stream = test->ifobj_tx->pkt_stream;
530 struct pkt_stream *rx_pkt_stream = test->ifobj_rx->pkt_stream;
533 pkt_stream_delete(test->ifobj_tx->pkt_stream);
534 test->ifobj_tx->pkt_stream = test->tx_pkt_stream_default;
538 pkt_stream_delete(test->ifobj_rx->pkt_stream);
539 test->ifobj_rx->pkt_stream = test->rx_pkt_stream_default;
543 static struct pkt_stream *__pkt_stream_alloc(u32 nb_pkts)
545 struct pkt_stream *pkt_stream;
547 pkt_stream = calloc(1, sizeof(*pkt_stream));
548 if (!pkt_stream)
551 pkt_stream->pkts = calloc(nb_pkts, sizeof(*pkt_stream->pkts));
552 if (!pkt_stream->pkts) {
553 free(pkt_stream);
557 pkt_stream->nb_pkts = nb_pkts;
558 return pkt_stream;
571 static u32 pkt_nb_frags(u32 frame_size, struct pkt_stream *pkt_stream, struct pkt *pkt)
578 if (!pkt_stream->verbatim) {
588 next_frag = pkt_stream->current_pkt_nb;
590 while (next_frag++ < pkt_stream->nb_pkts) {
614 static struct pkt_stream *pkt_stream_generate(struct xsk_umem_info *umem, u32 nb_pkts, u32 pkt_len)
616 struct pkt_stream *pkt_stream;
619 pkt_stream = __pkt_stream_alloc(nb_pkts);
620 if (!pkt_stream)
623 pkt_stream->nb_pkts = nb_pkts;
624 pkt_stream->max_pkt_len = pkt_len;
626 struct pkt *pkt = &pkt_stream->pkts[i];
632 return pkt_stream;
635 static struct pkt_stream *pkt_stream_clone(struct xsk_umem_info *umem,
636 struct pkt_stream *pkt_stream)
638 return pkt_stream_generate(umem, pkt_stream->nb_pkts, pkt_stream->pkts[0].len);
643 struct pkt_stream *pkt_stream;
645 pkt_stream = pkt_stream_generate(test->ifobj_tx->umem, nb_pkts, pkt_len);
646 test->ifobj_tx->pkt_stream = pkt_stream;
647 pkt_stream = pkt_stream_generate(test->ifobj_rx->umem, nb_pkts, pkt_len);
648 test->ifobj_rx->pkt_stream = pkt_stream;
655 struct pkt_stream *pkt_stream;
658 pkt_stream = pkt_stream_clone(umem, ifobj->pkt_stream);
659 for (i = 1; i < ifobj->pkt_stream->nb_pkts; i += 2)
660 pkt_set(umem, &pkt_stream->pkts[i], offset, pkt_len);
662 ifobj->pkt_stream = pkt_stream;
674 struct pkt_stream *pkt_stream = test->ifobj_tx->pkt_stream;
677 test->ifobj_rx->pkt_stream = pkt_stream_generate(umem, pkt_stream->nb_pkts,
678 pkt_stream->pkts[0].len);
679 pkt_stream = test->ifobj_rx->pkt_stream;
680 for (i = 1; i < pkt_stream->nb_pkts; i += 2)
681 pkt_stream->pkts[i].valid = false;
691 static void pkt_stream_cancel(struct pkt_stream *pkt_stream)
693 pkt_stream->current_pkt_nb--;
716 static struct pkt_stream *__pkt_stream_generate_custom(struct ifobject *ifobj, struct pkt *frames,
720 struct pkt_stream *pkt_stream;
722 pkt_stream = __pkt_stream_alloc(nb_frames);
723 if (!pkt_stream)
727 struct pkt *pkt = &pkt_stream->pkts[pkt_nb];
750 if (pkt->valid && pkt->len > pkt_stream->max_pkt_len)
751 pkt_stream->max_pkt_len = pkt->len;
755 pkt_stream->nb_pkts = pkt_nb;
756 pkt_stream->verbatim = verbatim;
757 return pkt_stream;
762 struct pkt_stream *pkt_stream;
764 pkt_stream = __pkt_stream_generate_custom(test->ifobj_tx, pkts, nb_pkts, true);
765 test->ifobj_tx->pkt_stream = pkt_stream;
767 pkt_stream = __pkt_stream_generate_custom(test->ifobj_rx, pkts, nb_pkts, false);
768 test->ifobj_rx->pkt_stream = pkt_stream;
970 struct pkt_stream *pkt_stream = test->ifobj_rx->pkt_stream;
983 pkt = pkt_stream_get_next_rx_pkt(pkt_stream, &pkts_sent);
1065 pkt = pkt_stream_get_next_rx_pkt(pkt_stream, &pkts_sent);
1098 struct pkt_stream *pkt_stream = ifobject->pkt_stream;
1104 buffer_len = pkt_get_buffer_len(umem, pkt_stream->max_pkt_len);
1135 struct pkt *pkt = pkt_stream_get_next_tx_pkt(pkt_stream);
1141 nb_frags = pkt_nb_frags(umem->frame_size, pkt_stream, pkt);
1143 pkt_stream_cancel(pkt_stream);
1153 if (pkt_stream->verbatim) {
1170 if (pkt_stream->verbatim)
1171 pkt = pkt_stream_get_next_tx_pkt(pkt_stream);
1218 struct pkt_stream *pkt_stream = ifobject->pkt_stream;
1226 while (pkt_stream->current_pkt_nb < pkt_stream->nb_pkts) {
1281 if (stats.rx_dropped == ifobject->pkt_stream->nb_pkts / 2 ||
1282 stats.rx_dropped == ifobject->pkt_stream->nb_pkts / 2 - 1)
1342 if (stats.tx_invalid_descs != ifobject->pkt_stream->nb_pkts / 2) {
1344 __func__, stats.tx_invalid_descs, ifobject->pkt_stream->nb_pkts);
1385 static void xsk_populate_fill_ring(struct xsk_umem_info *umem, struct pkt_stream *pkt_stream,
1402 struct pkt *pkt = pkt_stream_get_next_rx_pkt(pkt_stream, &nb_pkts);
1406 for (i = 0; i < pkt_nb_frags(rx_frame_size, pkt_stream, pkt); i++) {
1425 pkt_stream_reset(pkt_stream);
1458 xsk_populate_fill_ring(ifobject->umem, ifobject->pkt_stream, ifobject->use_fill_ring);
1478 print_verbose("Sending %d packets on interface %s\n", ifobject->pkt_stream->nb_pkts,
1622 pkt_stream_reset(ifobj2->pkt_stream);
1626 pkt_stream_reset(ifobj1->pkt_stream);
1787 test->ifobj_rx->pkt_stream = pkt_stream_generate(test->ifobj_rx->umem,
1800 test->ifobj_rx->pkt_stream = pkt_stream_generate(test->ifobj_rx->umem,
2295 struct pkt_stream *rx_pkt_stream_default;
2296 struct pkt_stream *tx_pkt_stream_default;