MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pkt_burst_transmit

Function pkt_burst_transmit

dpdk/app/test-pmd/txonly.c:332–414  ·  view source on GitHub ↗

* Transmit a burst of multi-segments packets. */

Source from the content-addressed store, hash-verified

330 * Transmit a burst of multi-segments packets.
331 */
332static bool
333pkt_burst_transmit(struct fwd_stream *fs)
334{
335 struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
336 struct rte_port *txp;
337 struct rte_mbuf *pkt;
338 struct rte_mempool *mbp;
339 struct rte_ether_hdr eth_hdr;
340 uint16_t nb_tx;
341 uint16_t nb_pkt;
342 uint16_t vlan_tci, vlan_tci_outer;
343 uint64_t ol_flags = 0;
344 uint64_t tx_offloads;
345
346 mbp = current_fwd_lcore()->mbp;
347 txp = &ports[fs->tx_port];
348 tx_offloads = txp->dev_conf.txmode.offloads;
349 vlan_tci = txp->tx_vlan_id;
350 vlan_tci_outer = txp->tx_vlan_id_outer;
351 if (tx_offloads & RTE_ETH_TX_OFFLOAD_VLAN_INSERT)
352 ol_flags = RTE_MBUF_F_TX_VLAN;
353 if (tx_offloads & RTE_ETH_TX_OFFLOAD_QINQ_INSERT)
354 ol_flags |= RTE_MBUF_F_TX_QINQ;
355 if (tx_offloads & RTE_ETH_TX_OFFLOAD_MACSEC_INSERT)
356 ol_flags |= RTE_MBUF_F_TX_MACSEC;
357
358 /*
359 * Initialize Ethernet header.
360 */
361 rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr], &eth_hdr.dst_addr);
362 rte_ether_addr_copy(&ports[fs->tx_port].eth_addr, &eth_hdr.src_addr);
363 eth_hdr.ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4);
364
365 if (rte_mempool_get_bulk(mbp, (void **)pkts_burst,
366 nb_pkt_per_burst) == 0) {
367 for (nb_pkt = 0; nb_pkt < nb_pkt_per_burst; nb_pkt++) {
368 if (unlikely(!pkt_burst_prepare(pkts_burst[nb_pkt], mbp,
369 &eth_hdr, vlan_tci,
370 vlan_tci_outer,
371 ol_flags,
372 nb_pkt, fs))) {
373 rte_mempool_put_bulk(mbp,
374 (void **)&pkts_burst[nb_pkt],
375 nb_pkt_per_burst - nb_pkt);
376 break;
377 }
378 }
379 } else {
380 for (nb_pkt = 0; nb_pkt < nb_pkt_per_burst; nb_pkt++) {
381 pkt = rte_mbuf_raw_alloc(mbp);
382 if (pkt == NULL)
383 break;
384 if (unlikely(!pkt_burst_prepare(pkt, mbp, &eth_hdr,
385 vlan_tci,
386 vlan_tci_outer,
387 ol_flags,
388 nb_pkt, fs))) {
389 rte_pktmbuf_free(pkt);

Callers

nothing calls this directly

Calls 9

current_fwd_lcoreFunction · 0.85
rte_ether_addr_copyFunction · 0.85
rte_mempool_get_bulkFunction · 0.85
pkt_burst_prepareFunction · 0.85
rte_mempool_put_bulkFunction · 0.85
rte_mbuf_raw_allocFunction · 0.85
rte_pktmbuf_freeFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected