Send one packet and request offloads

Evaluate transmit operation correctness by sending one packet

  1. Learn about protocol types from the traffic template

  2. Prepare state TEST_ETHDEV_INITIALIZED

  3. Attempt to configure tunnel UDP port number in the PMD

  4. Enable VLAN offload in the PMD

  5. Enable outer IP checksum offload in the PMD

  6. Enable outer UDP checksum offload in the PMD

  7. Enable innermost IP checksum offload in the PMD

  8. Enable innermost L4 checksum offload in the PMD

  9. Enable non-tunnel TSO in the PMD

  10. Enable VXLAN TSO in the PMD

  11. Enable Geneve TSO in the PMD

  12. Enable multi-seg mbuf support in the PMD

  13. Prepare state TEST_ETHDEV_CONFIGURED

  14. Prepare state TEST_ETHDEV_RX_SETUP_DONE

  15. Cook the traffic template

  16. Generate and customise a packet mbuf

  17. Add VLAN offload request to the mbuf

  18. Add outer IP checksum offload request to the mbuf

  19. Add outer UDP checksum offload request to the mbuf

  20. Add innermost IP checksum offload request to the mbuf

  21. Add TCP checksum offload request to the mbuf

  22. Add innermost UDP checksum offload request to the mbuf

  23. Add TSO request to the mbuf

  24. Clone the mbuf from IUT RPCS to TST RPCS

  25. Redistribute the packet data across multiple mbuf segments

  26. Evaluate TxQ ring size

  27. Override the number of descriptors by the maximum supported value since the NIC may need additional descriptor room for TSO transaction while being unable to report this in limits

  28. Prepare state TEST_ETHDEV_TX_SETUP_DONE

  29. Prepare state TEST_ETHDEV_STARTED

  30. Check mbuf segmentation vs limits

  31. Sanity check the packet mbuf with Tx prepare API

  32. Derive the maximum packet length and the number of packets to be seen on Rx side

  33. Enlarge MTU on both ends

  34. Deploy RTE af_packet on top of TST network interface

  35. Squeeze out garbage packets possibly captured by RTE af_packet

  36. Send the packet

  37. Receive the packet(s)

  38. Match Rx packet(s) and figure out what offloads took place

Parameters:

tmpl

Traffic template

pld_size

Payload size

vlan

VLAN offload: VLAN ID (ON) or -1 (OFF)

outer_ip_cksum

Outer IP checksum offload toggle

outer_udp_cksum

Outer UDP checksum offload toggle

innermost_ip_cksum

Innermost IP checksum offload toggle

innermost_l4_cksum

Innermost L4 checksum offload toggle

tso

TSO: segment size (ON) or 0 (OFF)

segmentation

Mbuf segmentation pattern or an empty line