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

Function tx_only_begin

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

Source from the content-addressed store, hash-verified

414}
415
416static int
417tx_only_begin(portid_t pi)
418{
419 uint16_t pkt_hdr_len, pkt_data_len;
420 int dynf;
421
422 pkt_hdr_len = (uint16_t)(sizeof(struct rte_ether_hdr) +
423 sizeof(struct rte_ipv4_hdr) +
424 sizeof(struct rte_udp_hdr));
425 pkt_data_len = tx_pkt_length - pkt_hdr_len;
426
427 if ((tx_pkt_split == TX_PKT_SPLIT_RND || txonly_multi_flow) &&
428 tx_pkt_seg_lengths[0] < pkt_hdr_len) {
429 TESTPMD_LOG(ERR,
430 "Random segment number or multiple flow is enabled, "
431 "but tx_pkt_seg_lengths[0] %u < %u (needed)\n",
432 tx_pkt_seg_lengths[0], pkt_hdr_len);
433 return -EINVAL;
434 }
435
436 setup_pkt_udp_ip_headers(&pkt_ip_hdr, &pkt_udp_hdr, pkt_data_len);
437
438 timestamp_enable = false;
439 timestamp_mask = 0;
440 timestamp_off = -1;
441 dynf = rte_mbuf_dynflag_lookup
442 (RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, NULL);
443 if (dynf >= 0)
444 timestamp_mask = 1ULL << dynf;
445 dynf = rte_mbuf_dynfield_lookup
446 (RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL);
447 if (dynf >= 0)
448 timestamp_off = dynf;
449 timestamp_enable = tx_pkt_times_inter &&
450 timestamp_mask &&
451 timestamp_off >= 0 &&
452 !rte_eth_read_clock(pi, &timestamp_initial[pi]);
453
454 if (timestamp_enable) {
455 pkt_hdr_len += sizeof(struct tx_timestamp);
456
457 if (tx_pkt_split == TX_PKT_SPLIT_RND) {
458 if (tx_pkt_seg_lengths[0] < pkt_hdr_len) {
459 TESTPMD_LOG(ERR,
460 "Time stamp and random segment number are enabled, "
461 "but tx_pkt_seg_lengths[0] %u < %u (needed)\n",
462 tx_pkt_seg_lengths[0], pkt_hdr_len);
463 return -EINVAL;
464 }
465 } else {
466 uint16_t total = 0;
467 uint8_t i;
468
469 for (i = 0; i < tx_pkt_nb_segs; i++) {
470 total += tx_pkt_seg_lengths[i];
471 if (total >= pkt_hdr_len)
472 break;
473 }

Callers

nothing calls this directly

Calls 4

rte_mbuf_dynflag_lookupFunction · 0.85
rte_mbuf_dynfield_lookupFunction · 0.85
rte_eth_read_clockFunction · 0.85
setup_pkt_udp_ip_headersFunction · 0.70

Tested by

no test coverage detected