Send one packet

Make sure that a packet can be sent correctly

Validate PMD Tx operation in general and various Tx offloads in particular.

  1. Reconcile interdependent test parameters

  2. Prepare TEST_ETHDEV_INITIALIZED state

  3. Conduct environment substitutions in the traffic template

  4. Learn about protocol types present in the traffic template

  5. Learn about offload capabilities supported by the PMD

  6. Spoil outer IP checksum in the traffic template

  7. Set outer L4 checksum to 0 in the traffic template if need be

  8. Spoil inner IP checksum in the traffic template

  9. Spoil inner L4 checksum in the traffic template

  10. Set payload length in the traffic template

  11. Configure tunnel UDP port number in the PMD

  12. Enable VLAN offload in the PMD

  13. Enable outer IP checksum offload in the PMD

  14. Enable outer UDP checksum offload in the PMD

  15. Enable inner IP checksum offload in the PMD

  16. Enable inner L4 checksum offload in the PMD

  17. Enable TSO in the PMD

  18. Enable multisegment mbuf support in the PMD

  19. Prepare TEST_ETHDEV_RX_SETUP_DONE state

  20. Generate mbuf and a packet sample from the traffic template

  21. Add VLAN offload request to the mbuf

  22. Add outer offload flags for the outer frame to the mbuf

  23. Reconcile inner header length fields in the mbuf so that they refer to the outer header and fill zeros in outer header length fields

  24. Add inner offload flags for the outer frame to the mbuf

  25. Add inner offload flags for the inner frame to the mbuf

  26. Add TSO request to the mbuf

  27. Redistribute the packet data across multiple mbuf segments

  28. 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

  29. Prepare TEST_ETHDEV_TX_SETUP_DONE state

  30. Enlarge MTU on both ends to cope with big frame(s)

  31. Prepare TEST_ETHDEV_STARTED state

  32. Check mbuf segmentation vs limits

  33. Validate Tx offloads for the packet

  34. Create an Rx CSAP on the TST host according to the template

  35. Inject VLAN tag to the packet sample

  36. Replace checksums in the outer frame of the packet sample with script values to demand that the checksums in the packet(s) received by peer be correct

  37. Replace checksums in the inner frame of the packet sample with script values to demand that the checksums in the packet(s) received by the peer be correct

  38. Conduct TSO edits for the packet sample

  39. Prepare a traffic pattern from TSO packet samples

  40. Mask TCP flag CWR in the first packet to handle it gracefully

  41. Prepare a traffic pattern from the packet sample

  42. Ensure that interface is UP on Tester side

  43. Start to capture traffic with the pattern prepared

  44. Send the packet

  45. Check that no extra packets are received on Tester

  46. Verify the number of matching packets received

  47. Fail if TCP CWR flag is lost

Parameters:

tmpl

Traffic template

payload_len

Payload length

inner_ip_cksum_offload

Inner or no-tunnel IP checksum offload toggle

l4_cksum_offload

L4 checksum offload toggle

vlan_id

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

tso_segsz

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

segmentation

Mbuf segmentation pattern or an empty line