.. _global: .. index:: pair: namespace; global Global Namespace ================ .. toctree:: :hidden: enum_test_op_required.rst enum_test_tmpl_fields.rst enum_test_transceiver_type.rst struct_test_default_tmpl_prepare.rst struct_test_ethdev_config.rst struct_test_param_seg_ptrn.rst struct_test_pkt_addresses.rst struct_test_rx_mq.rst struct_test_rx_mq_rss.rst struct_test_transceiver.rst struct_test_transceiver_dpdk.rst struct_test_transceiver_exchange.rst struct_test_transceiver_net.rst Overview ~~~~~~~~ .. ref-code-block:: cpp :class: doxyrest-overview-code-block // typedefs typedef asn_value* :ref:`test_transceiver_transform_tmpl`( const asn_value *tmpl_tx, void *tmpl_data ); typedef asn_value* :ref:`test_transceiver_transform_ptrn`( const asn_value *ptrn_tx, void *ptrn_data ); // enums enum :ref:`test_op_required`; enum :ref:`test_tmpl_fields`; enum :ref:`test_transceiver_type`; // structs struct :ref:`test_default_tmpl_prepare`; struct :ref:`test_ethdev_config`; struct :ref:`test_param_seg_ptrn`; struct :ref:`test_pkt_addresses`; struct :ref:`test_rx_mq`; struct :ref:`test_rx_mq_rss`; struct :ref:`test_transceiver`; struct :ref:`test_transceiver_dpdk`; struct :ref:`test_transceiver_exchange`; struct :ref:`test_transceiver_net`; // global functions static te_errno :target:`test_eal_init`(tapi_env* env); struct :ref:`test_transceiver`* :ref:`test_transceiver_net_init`(const char* ta, const char* if_name); struct :ref:`test_transceiver`* :ref:`test_transceiver_dpdk_init`(rcf_rpc_server* rpcs, uint16_t port_id, rpc_rte_mempool_p mp); void :ref:`test_transceiver_free`(struct :ref:`test_transceiver`* trsc); struct :ref:`test_transceiver_exchange`* :ref:`test_transceiver_exchange_init`(const asn_value* tmpl_tx, :ref:`test_transceiver_transform_tmpl` transform_tmpl, void* tmpl_data, :ref:`test_transceiver_transform_ptrn` transform_ptrn, void* ptrn_data); void :ref:`test_transceiver_exchange_set_verdicts`(struct :ref:`test_transceiver_exchange`* exchange, const char* verdict_no_pkts, const char* verdict_known_unexp); void :ref:`test_transceiver_exchange_free`(struct :ref:`test_transceiver_exchange`* exchange); void :ref:`test_transceiver_exchange_commit`(const struct :ref:`test_transceiver_exchange`* exchange, struct :ref:`test_transceiver`* tx, unsigned int n_tx_pkts, unsigned int tx_queue, struct :ref:`test_transceiver`* rx, unsigned int n_rx_pkts, unsigned int rx_queue); void :ref:`test_transciever_simple_exchange_commit`(const asn_value* tmpl, struct :ref:`test_transceiver`* tx, unsigned int n_tx_pkts, unsigned int tx_queue, struct :ref:`test_transceiver`* rx, unsigned int n_rx_pkts, unsigned int rx_queue, const char* verdict_no_pkts, const char* verdict_known_unexp); te_errno :ref:`test_rx_burst_match_pattern_custom_verdicts`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* rx_pkts, uint16_t nb_pkts, uint16_t nb_expected, const asn_value* pattern, te_bool seq_strict, const char* verdict_no_pkts, const char* verdict_known_unexp); te_errno :ref:`test_rx_burst_match_pattern`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* rx_pkts, uint16_t nb_pkts, uint16_t nb_expected, const asn_value* pattern, te_bool seq_strict); te_errno :ref:`test_rx_await_pkts`(const char* ta_name, csap_handle_t csap_handle, unsigned int nb_pkts, unsigned int timeount_max_ms); te_errno :ref:`test_rx_await_pkts_exec_cb`(const char* ta_name, csap_handle_t csap_handle, unsigned int nb_pkts, unsigned int timeount_max_ms, tapi_tad_trrecv_cb_data* cb_data); uint16_t :ref:`test_tx_prepare_and_burst`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* tx_pkts, uint16_t nb_pkts); rpc_rte_mempool_p :ref:`test_rte_pktmbuf_pool_create`(rcf_rpc_server* rpcs, const char* name, uint32_t n, uint32_t cache_size, uint16_t priv_size, uint16_t data_room_size, int socket_id); rpc_rte_mempool_p :ref:`test_rte_pktmbuf_rx_pool_create`(rcf_rpc_server* rpcs, uint16_t port_id, struct tarpc_rte_eth_dev_info* dev_info, const char* name, uint32_t n, uint32_t cache_size, uint16_t priv_size, uint16_t data_room_size, int socket_id); struct tarpc_rte_eth_conf* :ref:`test_rpc_rte_eth_make_eth_conf`(rcf_rpc_server* rpcs, uint16_t port_id, struct tarpc_rte_eth_conf* eth_conf); unsigned int :ref:`test_rx_burst_with_retries`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* rx_pkts, unsigned int nb_pkts, unsigned int nb_expected); void :ref:`test_await_link_up`(rcf_rpc_server* rpcs, uint16_t port_id); void :ref:`test_rte_eth_dev_set_mtu_await_link_up`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t mtu, struct :ref:`test_ethdev_config`* ethdev_config); te_errno :ref:`test_tunnel_udp_port_add`(struct :ref:`test_ethdev_config`* test_ethdev_config, struct tarpc_rte_eth_udp_tunnel* tunnel_udp); te_errno :ref:`test_tunnel_udp_port_del`(struct :ref:`test_ethdev_config`* test_ethdev_config, struct tarpc_rte_eth_udp_tunnel* tunnel_udp); te_errno :ref:`test_prepare_ethdev`(struct :ref:`test_ethdev_config`* test_ethdev_config, test_ethdev_state st); te_errno :ref:`test_default_prepare_ethdev`(tapi_env* env, rcf_rpc_server* rpcs, const struct if_nameindex* iut_port, struct :ref:`test_ethdev_config`* test_ethdev_config, test_ethdev_state st); struct :ref:`test_ethdev_config`* :ref:`test_prepare_config_def_mk`(tapi_env* env, rcf_rpc_server* rpcs, const struct if_nameindex* iut_port, struct :ref:`test_ethdev_config`* test_ethdev_config); struct :ref:`test_ethdev_config`* :ref:`test_prepare_config_mk`(tapi_env* env, rcf_rpc_server* rpcs, const char* dev_name, uint16_t port_id, struct :ref:`test_ethdev_config`* test_ethdev_config); te_errno :ref:`test_calc_hash_by_tmpl_and_hf`(tarpc_rss_hash_protos_t hf, uint8_t* rss_key, size_t rss_key_sz, asn_value* tmpl, uint32_t* hash_regular, uint32_t* hash_symmetric); te_errno :ref:`test_rss_get_hash_by_pattern_unit`(tarpc_rss_hash_protos_t rss_hf, uint8_t* rss_key, size_t rss_key_sz, const asn_value* pattern, int pattern_unit_index, uint32_t* hash_regular, uint32_t* hash_symmetric); te_errno :ref:`test_change_src_addr_by_reta_index`(const te_toeplitz_hash_cache* toeplitz_hash_cache, unsigned int hash, uint8_t* src_addr, unsigned int addr_size, uint16_t reta_size, const unsigned int* indexes, unsigned int nb_indexes); tarpc_rss_hash_protos_t :ref:`test_rss_hash_protos_str2bitmask`(const char* rss_hash_protos_str); te_errno :ref:`test_get_rss_hf_by_tmpl`(asn_value* tmpl, tarpc_rss_hash_protos_t* hf); void :ref:`test_parse_mbuf_seg_ptrn`(const char* seg_ptrn_str, struct :ref:`test_param_seg_ptrn`* segmentation); te_errno :ref:`test_check_iut_tst_link_status`(const char* tst_ta, const char* tst_if_name, rcf_rpc_server* iut_rpcs, uint16_t iut_port_id, te_bool expected_status); int :ref:`test_get_xstat_by_name`(const char* xstat_name, struct tarpc_rte_eth_xstat_name* xstats_names, struct tarpc_rte_eth_xstat* xstats, unsigned nb_xstats, uint64_t* value); uint32_t :ref:`test_ptype_from_pattern`(const asn_value* pattern, uint32_t* supp, unsigned int supp_count); te_bool :ref:`test_check_packet_ptype`(uint32_t pt_flag_expected, int pt_value_detected, int pt_flag_offset); te_errno :ref:`test_dev_info_cmp`(struct tarpc_rte_eth_dev_info* dev_info_1, struct tarpc_rte_eth_dev_info* dev_info_2); te_errno :ref:`test_change_tmpl_ip_src_addr_by_queue_nb`(asn_value* tmpl, uint16_t queue, uint64_t reta_size, struct tarpc_rte_eth_rss_reta_entry64* reta_conf, const struct tarpc_rte_eth_rss_conf* rss_conf); te_errno :ref:`test_mk_template_get_match_fields_from_flow_ndn`(const asn_value* flow_ndn, asn_value** tmpl, uint32_t* match_fields); struct sockaddr* :ref:`test_rand_ip_addr`(int af); void :ref:`test_set_pkt_addresses`(struct :ref:`test_pkt_addresses`* addrs, const uint8_t* src_mac, const uint8_t* dst_mac, const struct sockaddr* src_ip, const struct sockaddr* dst_ip); te_errno :ref:`test_fill_in_tmpl_req_fields`(const asn_value* tmpl, struct :ref:`test_pkt_addresses`* addrs, struct :ref:`test_pkt_addresses`* ifrm_addrs); asn_value* :ref:`test_tmpl_copy_with_changed_fields`(const asn_value* tmpl, uint32_t fields, struct :ref:`test_pkt_addresses`* addrs, struct :ref:`test_pkt_addresses`* ifrm_addrs); te_errno :ref:`test_mk_tmpls_with_change_one_field`(const asn_value* tmpl, uint32_t fields, struct :ref:`test_pkt_addresses`* addrs, struct :ref:`test_pkt_addresses`* ifrm_addrs, asn_value**[] tmpls_out, unsigned int* tmpls_nb_out); te_errno :ref:`test_get_rx_info_by_rss_action`(const asn_value* flow_rule_rss, uint16_t** rss_queues_out, uint16_t* nb_rss_queues_out, uint16_t* nb_queues_out, uint64_t* rss_hf, uint8_t** rss_key_out, size_t* rss_key_sz_out); te_errno :ref:`test_add_tunnel_udp_port_from_tmpl`(struct :ref:`test_ethdev_config`* ethdev_config, asn_value* tmpl, te_bool required); te_errno :ref:`test_pdus_detect_and_spoil_cksums`(unsigned int nb_pdus, asn_value** pdus, uint64_t* flags_good_out, uint64_t* flags_bad_out, int* l4_type_out); te_errno :ref:`test_mk_rte_flow_attr_ingress`(rcf_rpc_server* rpcs, rpc_rte_flow_attr_p* attr); te_errno :ref:`test_mk_rte_flow_action_drop`(rcf_rpc_server* rpcs, rpc_rte_flow_action_p* actions); te_errno :ref:`test_mk_rte_flow_action_queue`(rcf_rpc_server* rpcs, uint16_t queue, rpc_rte_flow_action_p* actions); te_errno :ref:`test_mk_txmode_txconf`(struct :ref:`test_ethdev_config`* tecp, uint64_t test_offloads, struct tarpc_rte_eth_txmode* txmodep, struct tarpc_rte_eth_txconf* txconfp); void :ref:`test_get_rss_reta`(rcf_rpc_server* rpcs, uint16_t port_id, uint64_t* reta_size, struct tarpc_rte_eth_rss_reta_entry64** reta_conf); void :ref:`test_start_tx_queue`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id); void :ref:`test_start_rx_queue`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id); void :ref:`test_setup_rss_configuration`(tarpc_rss_hash_protos_t hf, size_t rss_key_sz, te_bool regular, struct tarpc_rte_eth_rss_conf* rss_conf); struct tarpc_rte_eth_rss_conf* :ref:`test_try_get_rss_hash_conf`(rcf_rpc_server* rpcs, size_t rss_key_sz, uint16_t port_id); void :ref:`test_send_and_match_one_packet`(rcf_rpc_server* rpcs, uint16_t port_id, const char* tst_ta, const char* tst_if_name, rpc_rte_mbuf_p* mbufs, asn_value* tmpl, unsigned int queue, unsigned int packet_expected); const char* :ref:`test_get_ethdev_state_name`(test_ethdev_state state); uint32_t :ref:`test_get_template_packet_length`(rcf_rpc_server* rpcs, asn_value* tmpl, rpc_rte_mempool_p mp); unsigned int :ref:`test_get_template_header_length`(rcf_rpc_server* rpcs, asn_value* tmpl, rpc_rte_mempool_p mp); te_bool :ref:`test_conf_tx_offload_supported`(unsigned long long offload_bit); te_bool :ref:`test_conf_rx_offload_supported`(unsigned long long offload_bit); void :ref:`test_add_ndn_action_queue`(asn_value* ndn_actions, int action_index, uint16_t queue); void :ref:`test_add_ndn_action_drop`(asn_value* ndn_actions, int action_index); void :ref:`test_mk_pattern_and_tmpl_by_flow_rule_pattern`(rcf_rpc_server* rpcs, const asn_value* flow_rule_pattern, rpc_rte_flow_item_p* pattern, asn_value** tmpl, uint32_t* match_fields); te_errno :ref:`test_generate_changed_flow_patterns`(const asn_value* flow_rule_pattern, const char* field_path, size_t n_changed_patterns, asn_value** changed_patterns); asn_value* :ref:`test_concatenate_tmpl_ptrn_pdus`(const asn_value* dst, const asn_value* src, const char* label); asn_value* :ref:`test_decap_tmpl_ptrn_pdus`(const asn_value* val, const char* label); void :ref:`test_check_flow_query_data`(const tarpc_rte_flow_query_data* data, te_bool check_hits, uint64_t hits, te_bool check_bytes, uint64_t bytes); void :ref:`test_add_and_mk_rte_flow_action_count`(uint32_t counter_id, int action_id, rcf_rpc_server* rpcs, asn_value* ndn_actions, rpc_rte_flow_action_p* rte_actions); void :ref:`test_check_xstat`(const char* name, uint64_t value, struct tarpc_rte_eth_xstat_name* xstats_names, struct tarpc_rte_eth_xstat* xstats, int nb_xstats, te_string* wrong_xstats, te_string* zero_xstats); te_bool :ref:`test_pdus_dst_mac_is_set`(const asn_value* pdus); void :ref:`test_pdus_set_eth_src_dst`(asn_value* pdus, const char* pdus_path, const uint8_t* src, const uint8_t* dst); void :ref:`test_rte_eth_promiscuous_enable`(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required); void :ref:`test_rte_eth_promiscuous_disable`(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required); void :ref:`test_rte_eth_allmulticast_enable`(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required); void :ref:`test_rte_eth_allmulticast_disable`(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required); asn_value* :ref:`test_mk_pattern_by_unit`(const asn_value* ptrn, int index); void :ref:`test_send_and_match_one_packet_custom_verdicts`(rcf_rpc_server* rpcs, uint16_t port_id, const char* tst_ta, const char* tst_if_name, rpc_rte_mbuf_p* mbufs, asn_value* tmpl, unsigned int queue, unsigned int packet_expected, const char* verdict_no_pkts, const char* verdict_known_unexp); unsigned int :ref:`test_get_extra_tx_descs_per_pkt`(void); unsigned int :ref:`test_get_tso_payload_cutoff_barrier`(unsigned int hdrs_len); void :ref:`test_hotplug_vfs_by_ids`(rcf_rpc_server* rpcs, tapi_env* env, const cfg_net_node_t* node, unsigned int n_vfs, const unsigned int* vf_ids, struct :ref:`test_ethdev_config`** vfs); te_bool :ref:`test_is_vdev`(const char* device_name); void :ref:`test_hotplug_reps`(rcf_rpc_server* rpcs, tapi_env* env, const cfg_net_node_t* node, unsigned int n_rep, const unsigned int* rep_ids, struct :ref:`test_ethdev_config`** reps); void :ref:`test_get_vf_pci_addrs_by_node`(const cfg_net_node_t* node, unsigned int* n_vf_addrs, char*** vf_addrs, unsigned int** vf_ids); te_errno :ref:`test_create_traffic_generator_params`(const char* ta, char* arg_prefix, const char* command_prefix, const char* forward_mode, const char* txpkts, te_bool multi_flow, unsigned int txq, unsigned int txd, unsigned int burst, unsigned int txfreet, te_kvpair_h** params, unsigned int* n_cores); te_errno :ref:`test_create_traffic_receiver_params`(const char* arg_prefix, const char* command_prefix, unsigned int rxq, unsigned int packet_size, te_kvpair_h** params); uint16_t :ref:`test_rte_af_packet_on_tst_if_deploy`(rcf_rpc_server* tst_rpcs, const struct if_nameindex* tst_if, size_t frame_size, unsigned int nb_frames); void :ref:`test_rte_af_packet_on_tst_if_release`(rcf_rpc_server* tst_rpcs, const struct if_nameindex* tst_if); te_errno :ref:`test_clone_mbuf`(rcf_rpc_server* rpcs_src, rpc_rte_mbuf_p m_src, rcf_rpc_server* rpcs_dst, rpc_rte_mempool_p mp_dst, rpc_rte_mbuf_p* m_dstp); te_errno :ref:`test_tx_mbuf_set_random_payload`(rcf_rpc_server* rpcs, size_t size, rpc_rte_mbuf_p m); te_errno :target:`test_get_pci_fn_prop`(rcf_rpc_server* rpcs, const struct if_nameindex* port, char* prop, unsigned int* value); te_errno :target:`test_add_pci_fn_prop`(rcf_rpc_server* rpcs, const struct if_nameindex* port, char* prop, unsigned int value); void :ref:`test_check_mtu`(rcf_rpc_server* rpcs, const struct if_nameindex* port, unsigned int packet_size); void :ref:`test_set_mtu`(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t mtu, struct :ref:`test_ethdev_config`* ethdev_config); void :ref:`test_default_template_prepare`(struct :ref:`test_default_tmpl_prepare`* p); void :ref:`test_wait_stats_update`(); te_bool :ref:`test_desc_nb_violates_limits`(unsigned int desc_nb, const struct tarpc_rte_eth_desc_lim* desc_lim); void :ref:`test_check_rss_queues`(rcf_rpc_server* rpcs, unsigned int port_id, uint16_t nb_rx_queues, uint16_t reta_size, const struct tarpc_rte_eth_rss_reta_entry64* reta_conf, asn_value* ptrn, uint32_t expected_hash, uint16_t expected_queue); void :ref:`test_check_mbuf_rss_hash_value`(rcf_rpc_server* rpcs, rpc_rte_mbuf_p mbuf, uint32_t expected_hash, uint32_t symmetric_hash); void :ref:`test_rx_mq_rss_prepare`(struct :ref:`test_ethdev_config`* ec, tarpc_rss_hash_protos_t hash_protos); const struct tarpc_rte_eth_rss_conf* :ref:`test_rx_mq_rss_establish`(struct :ref:`test_ethdev_config`* ec, te_bool enforce_initial_conf); te_bool :ref:`test_tx_mbuf_segs_good`(rcf_rpc_server* rpcs, rpc_rte_mbuf_p m, struct tarpc_rte_eth_dev_info* dev_info); te_bool :ref:`test_eth_get_vlan_from_bottom_layer_of_template`(const asn_value* tmpl, uint16_t* vlan_id); void :ref:`test_rx_clean_queue`(rcf_rpc_server* rpcs, uint16_t port, uint16_t queue); void :ref:`test_nullify_rte_pktmbuf_array`(rpc_rte_mbuf_p* ptrs, unsigned int n_ptrs); // macros #define :ref:`BURST_SIZE` #define :ref:`CHECK_MATCHED_PACKETS_NUM`(_actual, _expected) #define :ref:`CHECK_PACKETS_NUM`(_actual, _expected) #define :ref:`DPDK_TS_RX_CHECKS` #define :ref:`DPMD_TS_ETHERTYPE_RAND` #define :ref:`DPMD_TS_PAYLOAD_LEN_DEF` #define :ref:`DPMD_TS_RX_ATTEMPT_WAIT_MS` #define :ref:`RECEIVE_TIMEOUT_DEF` #define :ref:`RX_VEC_LIM` #define :ref:`TESTPMD_ARG_MAX_LEN` #define :ref:`TEST_DEF_ETHER_TYPE` #define :ref:`TEST_DEF_GENEVE_UDP_PORT` #define :ref:`TEST_DEF_IP_PROTO` #define :ref:`TEST_DEF_PPPOE_PADI_CODE` #define :ref:`TEST_DEF_PPPOE_TYPE` #define :ref:`TEST_DEF_PPPOE_VER` #define :ref:`TEST_DEF_PROTOCOL_TYPE` #define :ref:`TEST_DEF_VXLAN_UDP_PORT` #define :ref:`TEST_DEV_HEADER_SIZE` #define :ref:`TEST_END_SPECIFIC` #define :ref:`TEST_ENV_IUT_PORT` #define :ref:`TEST_ETHER_ENCAP_PROTO_OPAQUE` #define :target:`TEST_ETH_RSS_FRAG_IPV4` #define :target:`TEST_ETH_RSS_FRAG_IPV6` #define :target:`TEST_ETH_RSS_GENEVE` #define :target:`TEST_ETH_RSS_IP` #define :ref:`TEST_ETH_RSS_IPV4` #define :target:`TEST_ETH_RSS_IPV6` #define :target:`TEST_ETH_RSS_IPV6_EX` #define :target:`TEST_ETH_RSS_IPV6_TCP_EX` #define :target:`TEST_ETH_RSS_IPV6_UDP_EX` #define :target:`TEST_ETH_RSS_L2_PAYLOAD` #define :target:`TEST_ETH_RSS_NONFRAG_IPV4_OTHER` #define :target:`TEST_ETH_RSS_NONFRAG_IPV4_SCTP` #define :target:`TEST_ETH_RSS_NONFRAG_IPV4_TCP` #define :target:`TEST_ETH_RSS_NONFRAG_IPV4_UDP` #define :target:`TEST_ETH_RSS_NONFRAG_IPV6_OTHER` #define :target:`TEST_ETH_RSS_NONFRAG_IPV6_SCTP` #define :target:`TEST_ETH_RSS_NONFRAG_IPV6_TCP` #define :target:`TEST_ETH_RSS_NONFRAG_IPV6_UDP` #define :target:`TEST_ETH_RSS_NVGRE` #define :target:`TEST_ETH_RSS_PORT` #define :target:`TEST_ETH_RSS_PROTO_MASK` #define :target:`TEST_ETH_RSS_SCTP` #define :target:`TEST_ETH_RSS_TCP` #define :target:`TEST_ETH_RSS_TUNNEL` #define :target:`TEST_ETH_RSS_UDP` #define :target:`TEST_ETH_RSS_VXLAN` #define :ref:`TEST_GET_MBUF_SEG_PTRN_PARAM`(_parameter) #define :ref:`TEST_GET_RSS_HASH_PROTOS`(var_name_) #define :ref:`TEST_GET_VLAN_ID_PARAM`(_parameter) #define :ref:`TEST_IP4_ADDR_LEN` #define :ref:`TEST_IP6_ADDR_LEN` #define :ref:`TEST_IP_ENCAP_PROTO_OPAQUE` #define :ref:`TEST_IUT_PORT_MAC_NAME` #define :ref:`TEST_LINK_UP_MAX_CHECKS` #define :ref:`TEST_LINK_UP_WAIT_MS` #define :ref:`TEST_MAX_NB_XSTAT_NAMES` #define :ref:`TEST_MAX_VLAN_ID` #define :target:`TEST_MEAS_ALLOWED_SKIPS` #define :target:`TEST_MEAS_DEVIATION_COEFF` #define :target:`TEST_MEAS_INIT_FLAGS` #define :target:`TEST_MEAS_MAX_NUM_DATAPOINTS` #define :target:`TEST_MEAS_MIN_NUM_DATAPOINTS` #define :target:`TEST_MEAS_REQUIRED_CV` #define :ref:`TEST_MIN_PAGE_SIZE` #define :ref:`TEST_PKTMBUF_HEADROOM` #define :ref:`TEST_PKTS_MEMPOOL_NAME` #define :ref:`TEST_POST_LINK_UP_TIMEOUT` #define :ref:`TEST_RTE_ETHDEV_DEF_NB_RX_DESCS` #define :ref:`TEST_RTE_MEMPOOL_DATA_ROOM_OVERHEAD` #define :ref:`TEST_RTE_MEMPOOL_DEF_CACHE` #define :ref:`TEST_RTE_MEMPOOL_DEF_DATA_ROOM` #define :ref:`TEST_RTE_MEMPOOL_DEF_EXTRA` #define :ref:`TEST_RTE_MEMPOOL_DEF_PRIV_SIZE` #define :ref:`TEST_RTE_MEMPOOL_DEF_SIZE` #define :ref:`TEST_RX_PKTS_WAIT_MAX_MS` #define :ref:`TEST_RX_UNEXP_PKTS_GUARD_TIMEOUT_MS` #define :ref:`TEST_START_SPECIFIC` #define :ref:`TEST_START_VARS` #define :ref:`TEST_STATS_UPDATE_WAIT_MS` #define :ref:`TEST_TUNNEL_UDP_PORT_AWAIT_MC_REBOOT_MS` #define :ref:`TEST_TUNNEL_UDP_PORT_MAX_CHECKS` #define :ref:`TEST_TUNNEL_UDP_PORT_WAIT_MS` .. _details-global: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Typedefs -------- .. index:: pair: typedef; test_transceiver_transform_tmpl .. _doxid-dpdk__pmd__ts_8h_1a71db28fb799a4311ba11d7cce8493fc8: .. ref-code-block:: cpp :class: doxyrest-title-code-block typedef asn_value* test_transceiver_transform_tmpl( const asn_value *tmpl_tx, void *tmpl_data ) Prototype of a function used to transform template for transmittion into template for receiving. Returned ASN.1 value for template must not be dependend on **tmpl_rx** .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl_rx - Template for transmittion * - tmpl_data - User-provided data .. rubric:: Returns: Template for receiving or ``NULL`` on error .. index:: pair: typedef; test_transceiver_transform_ptrn .. _doxid-dpdk__pmd__ts_8h_1ac3400fd133beca4bc2a7e15c85e799fa: .. ref-code-block:: cpp :class: doxyrest-title-code-block typedef asn_value* test_transceiver_transform_ptrn( const asn_value *ptrn_tx, void *ptrn_data ) Prototype of a function used to transform pattern that was sniffed on transmittion into pattern for receiving and matching. Returned ASN.1 value for pattern must not be dependend on **ptrn_rx** .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ptrn_rx - Pattern sniffed on transmittion * - ptrn_data - User-provided data .. rubric:: Returns: Pattern for receiving or ``NULL`` on error Global Functions ---------------- .. index:: pair: function; test_transceiver_net_init .. _doxid-dpdk__pmd__ts_8h_1a4b9d28bb1ad664dab467cea4ccb7f7a7: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct :ref:`test_transceiver`* test_transceiver_net_init(const char* ta, const char* if_name) Create kernel net driver transceiver. Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ta - Test agent name * - if_name - Interface name .. rubric:: Returns: Transceiver entity .. index:: pair: function; test_transceiver_dpdk_init .. _doxid-dpdk__pmd__ts_8h_1a5d8a74efda051697730c33d86884572a: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct :ref:`test_transceiver`* test_transceiver_dpdk_init(rcf_rpc_server* rpcs, uint16_t port_id, rpc_rte_mempool_p mp) Create DPDK transceiver. Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle, only a pointer is stored in transceiver * - port_id - Port identifier * - mp - Mem pool handle .. rubric:: Returns: Transceiver entity .. index:: pair: function; test_transceiver_free .. _doxid-dpdk__pmd__ts_8h_1a126a7cea0cae0b194325ed69bfe2db25: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_transceiver_free(struct :ref:`test_transceiver`* trsc) Destroy transceiver entity. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - trsc - Transceiver entity .. index:: pair: function; test_transceiver_exchange_init .. _doxid-dpdk__pmd__ts_8h_1a5af4dc1f5fe9f53262a930b77d6c66a4: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct :ref:`test_transceiver_exchange`* test_transceiver_exchange_init(const asn_value* tmpl_tx, :ref:`test_transceiver_transform_tmpl` transform_tmpl, void* tmpl_data, :ref:`test_transceiver_transform_ptrn` transform_ptrn, void* ptrn_data) Create exchange between transceivers. Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl_tx - Template for transmittion * - transform_tmpl - Template transformation, may be ``NULL`` not to change the template * - tmpl_data - User-provided data for **transform_tmpl** * - transform_ptrn - Pattern transformation, may be ``NULL`` not to change the pattern * - ptrn_data - User-provided data for **transform_ptrn** .. rubric:: Returns: Exchange entity .. index:: pair: function; test_transceiver_exchange_set_verdicts .. _doxid-dpdk__pmd__ts_8h_1a6316157200479d96dcaee18b092b14c2: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_transceiver_exchange_set_verdicts(struct :ref:`test_transceiver_exchange`* exchange, const char* verdict_no_pkts, const char* verdict_known_unexp) Set verdicts for an exchange object. ``NULL`` means use default verdict. Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - verdict_no_pkts - Verdict to use when no packets are received but at least one was expected * - verdict_known_unexp - Verdict to use when more that expected number of matching packets were received .. index:: pair: function; test_transceiver_exchange_free .. _doxid-dpdk__pmd__ts_8h_1a6dc7a7b2e0150516f295ab8229b015b6: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_transceiver_exchange_free(struct :ref:`test_transceiver_exchange`* exchange) Destroy exchange entity. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - exchange - Exchange entity .. index:: pair: function; test_transceiver_exchange_commit .. _doxid-dpdk__pmd__ts_8h_1a6dddb99bc010f66bd64a7efb0ee004d5: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_transceiver_exchange_commit(const struct :ref:`test_transceiver_exchange`* exchange, struct :ref:`test_transceiver`* tx, unsigned int n_tx_pkts, unsigned int tx_queue, struct :ref:`test_transceiver`* rx, unsigned int n_rx_pkts, unsigned int rx_queue) Commit exchange between transceivers: * send packets from **tx** * sniff the packets pattern * transform transmit template and sniffed pattern into template and pattern for receiving using user-provided callbacks in **exchange** (or leave any of them unchanged if its callback is ``NULL``) * reseive and match packets on **rx** The order of this actions is not strict due to limitations of underlying APIs (CSAP API). Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - exchange - Exchange entity * - tx - Transmitting transceiver * - n_tx_pkts - Number of packets to send * - tx_queue - Transmit queue (or any value if n/a) * - tx - Receiving transceiver * - n_rx_pkts - Number of packets to receive and match * - tx_queue - Receive queue (or any value if n/a) .. index:: pair: function; test_transciever_simple_exchange_commit .. _doxid-dpdk__pmd__ts_8h_1a6d224efe984064dc728d2dd54bcae930: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_transciever_simple_exchange_commit(const asn_value* tmpl, struct :ref:`test_transceiver`* tx, unsigned int n_tx_pkts, unsigned int tx_queue, struct :ref:`test_transceiver`* rx, unsigned int n_rx_pkts, unsigned int rx_queue, const char* verdict_no_pkts, const char* verdict_known_unexp) Wrapper for :ref:`test_transceiver_exchange_commit() ` that takes packet template instead of exchange object - the packet is expected to be unchanged from transmittion to receiving. Verdicts are set according to :ref:`test_transceiver_exchange_set_verdicts() `. .. index:: pair: function; test_rx_burst_match_pattern_custom_verdicts .. _doxid-dpdk__pmd__ts_8h_1a2b4a8d2e967be144dff84e8bcdd87f37: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_rx_burst_match_pattern_custom_verdicts(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* rx_pkts, uint16_t nb_pkts, uint16_t nb_expected, const asn_value* pattern, te_bool seq_strict, const char* verdict_no_pkts, const char* verdict_known_unexp) Encompass Rx burst operation with one-by-one packet matching and custom verdicts instead of generic. .. index:: pair: function; test_rx_burst_match_pattern .. _doxid-dpdk__pmd__ts_8h_1a1cb9f1b52a5dc30435fdebecba193f1a: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_rx_burst_match_pattern(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* rx_pkts, uint16_t nb_pkts, uint16_t nb_expected, const asn_value* pattern, te_bool seq_strict) Encompass Rx burst operation with one-by-one packet matching .. index:: pair: function; test_rx_await_pkts .. _doxid-dpdk__pmd__ts_8h_1ab29c5987022f7c6f2efe150a129f409b: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_rx_await_pkts(const char* ta_name, csap_handle_t csap_handle, unsigned int nb_pkts, unsigned int timeount_max_ms) Wait for a certain amount of packets to be received. The function returns success even if specified number of packets is not received. Caller is responsible for checking the number of received expected and unexpected packets. .. index:: pair: function; test_rx_await_pkts_exec_cb .. _doxid-dpdk__pmd__ts_8h_1a46e06ea9fca19d09c78dbd80e742a7fe: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_rx_await_pkts_exec_cb(const char* ta_name, csap_handle_t csap_handle, unsigned int nb_pkts, unsigned int timeount_max_ms, tapi_tad_trrecv_cb_data* cb_data) Wait for a certain amount of packets to be received and execute specified callback for each of them. See :ref:`test_rx_await_pkts() ` notes .. index:: pair: function; test_tx_prepare_and_burst .. _doxid-dpdk__pmd__ts_8h_1afb59ef959aaeb2f6d579611c0a732623: .. ref-code-block:: cpp :class: doxyrest-title-code-block uint16_t test_tx_prepare_and_burst(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* tx_pkts, uint16_t nb_pkts) Prepare (validate) a burst of packets, then send .. index:: pair: function; test_rte_pktmbuf_pool_create .. _doxid-dpdk__pmd__ts_8h_1aa5f139c1bb98b267336bfe3f0629f991: .. ref-code-block:: cpp :class: doxyrest-title-code-block rpc_rte_mempool_p test_rte_pktmbuf_pool_create(rcf_rpc_server* rpcs, const char* name, uint32_t n, uint32_t cache_size, uint16_t priv_size, uint16_t data_room_size, int socket_id) Wrapper for **rpc_rte_pktmbuf_pool_create()** It enforces minimum value restriction in **data_room_size** for AF_XDP. .. index:: pair: function; test_rte_pktmbuf_rx_pool_create .. _doxid-dpdk__pmd__ts_8h_1adf1870ba2cd9be8106e0bb1ef1827e4b: .. ref-code-block:: cpp :class: doxyrest-title-code-block rpc_rte_mempool_p test_rte_pktmbuf_rx_pool_create(rcf_rpc_server* rpcs, uint16_t port_id, struct tarpc_rte_eth_dev_info* dev_info, const char* name, uint32_t n, uint32_t cache_size, uint16_t priv_size, uint16_t data_room_size, int socket_id) Wrapper for **rpc_rte_pktmbuf_pool_create()** which creates packets mempool taking Rx limitations into account and therefore suitable for Rx queue setup. As well as :ref:`test_rte_pktmbuf_pool_create() ` it enforces minimum value restriction in **data_room_size** for AF_XDP. .. index:: pair: function; test_rpc_rte_eth_make_eth_conf .. _doxid-dpdk__pmd__ts_8h_1a5543084c3c52c56d2451da1bb1bea09e: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct tarpc_rte_eth_conf* test_rpc_rte_eth_make_eth_conf(rcf_rpc_server* rpcs, uint16_t port_id, struct tarpc_rte_eth_conf* eth_conf) Wrapper for **tapi_rpc_rte_eth_make_eth_conf()**, with test workarounds .. index:: pair: function; test_rx_burst_with_retries .. _doxid-dpdk__pmd__ts_8h_1ae5201f3fa08c7514be8a3b0ffa3d347d: .. ref-code-block:: cpp :class: doxyrest-title-code-block unsigned int test_rx_burst_with_retries(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id, rpc_rte_mbuf_p* rx_pkts, unsigned int nb_pkts, unsigned int nb_expected) Perform Rx burst on a queue until expected number of packets are received or a timeout (``TEST_RX_PKTS_WAIT_MAX_MS``) passes. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - queue_id - Queue to receive packets on * - rx_pkts - Array of mbufs to use for received packets * - nb_pkts - Number of avaiable mbufs * - nb_expected - Expected number of packets that should be received .. rubric:: Returns: number of received packets .. index:: pair: function; test_await_link_up .. _doxid-dpdk__pmd__ts_8h_1ac04eca0584a128a5c0cb2df80e41fd07: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_await_link_up(rcf_rpc_server* rpcs, uint16_t port_id) Await link UP after port start/restart .. index:: pair: function; test_rte_eth_dev_set_mtu_await_link_up .. _doxid-dpdk__pmd__ts_8h_1a255b2095ba29736971b2cac69f0599f1: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rte_eth_dev_set_mtu_await_link_up(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t mtu, struct :ref:`test_ethdev_config`* ethdev_config) Set MTU on IUT and await link UP .. index:: pair: function; test_tunnel_udp_port_add .. _doxid-dpdk__pmd__ts_8h_1a5ba0a4cee300a13aa022e897b712a45c: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_tunnel_udp_port_add(struct :ref:`test_ethdev_config`* test_ethdev_config, struct tarpc_rte_eth_udp_tunnel* tunnel_udp) Add tunnel UDP port and, if device state is STARTED, cope with a possible failure caused by port restart .. index:: pair: function; test_tunnel_udp_port_del .. _doxid-dpdk__pmd__ts_8h_1aefe7bc57515dae07d453bfd3b9160caa: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_tunnel_udp_port_del(struct :ref:`test_ethdev_config`* test_ethdev_config, struct tarpc_rte_eth_udp_tunnel* tunnel_udp) Delete tunnel UDP port and, if device state is STARTED, cope with a possible failure caused by port restart .. index:: pair: function; test_prepare_ethdev .. _doxid-dpdk__pmd__ts_8h_1a0d4b70c198da191eba9fc4bf1dcb187c: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_prepare_ethdev(struct :ref:`test_ethdev_config`* test_ethdev_config, test_ethdev_state st) Prepare the required Ethernet device state .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`test_ethdev_config ` - Information about device configuration * - st - The required state of device * - Status - code .. index:: pair: function; test_default_prepare_ethdev .. _doxid-dpdk__pmd__ts_8h_1a6271df881c4586bf84e4bdf9fd8d30b8: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_default_prepare_ethdev(tapi_env* env, rcf_rpc_server* rpcs, const struct if_nameindex* iut_port, struct :ref:`test_ethdev_config`* test_ethdev_config, test_ethdev_state st) Prepare the required Ethernet device state using default configuration .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - env - Environment binding * - rpcs - RPC server handle * - port_id - The port identifier of the device * - :ref:`test_ethdev_config ` - Information about device configuration (out) * - st - The required state of device * - Status - code .. index:: pair: function; test_prepare_config_def_mk .. _doxid-dpdk__pmd__ts_8h_1ad1552c224ff7ff833abfb963bf9e9956: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct :ref:`test_ethdev_config`* test_prepare_config_def_mk(tapi_env* env, rcf_rpc_server* rpcs, const struct if_nameindex* iut_port, struct :ref:`test_ethdev_config`* test_ethdev_config) Prepare the default Etheret device configuration for test .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - env - Environment binding * - rpcs - RPC server handle * - port_id - The port identifier of the device * - :ref:`test_ethdev_config ` - Information about device configuration (out) * - :ref:`test_ethdev_config ` - Information about device configuration .. index:: pair: function; test_prepare_config_mk .. _doxid-dpdk__pmd__ts_8h_1a32c1e481ae2917a367149acc87f882e4: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct :ref:`test_ethdev_config`* test_prepare_config_mk(tapi_env* env, rcf_rpc_server* rpcs, const char* dev_name, uint16_t port_id, struct :ref:`test_ethdev_config`* test_ethdev_config) Variation of :ref:`test_prepare_config_def_mk() ` that accepts port id and device name as separate arguments. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - env - Environment binding * - rpcs - RPC server handle * - device_name - Name of the device * - port_id - The port identifier of the device * - :ref:`test_ethdev_config ` - Information about device configuration (out) * - :ref:`test_ethdev_config ` - Information about device configuration .. index:: pair: function; test_calc_hash_by_tmpl_and_hf .. _doxid-dpdk__pmd__ts_8h_1a2b8f7502954610f9d9a63545ebdae655: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_calc_hash_by_tmpl_and_hf(tarpc_rss_hash_protos_t hf, uint8_t* rss_key, size_t rss_key_sz, asn_value* tmpl, uint32_t* hash_regular, uint32_t* hash_symmetric) Calculate the packet hash by the template taking into account the hash function Symmetric hash implies that IP addresses (or low 4 bytes, for IPv6) get exclusively ORed together to produce the input for Toeplitz hash. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - hf - Bitmask of RSS hash functions * - rss_key - RSS key * - rss_key_sz - RSS key size * - tmpl - Template * - hash_regular - Location for standard RSS hash or ``NULL`` * - hash_symmetric - Location for symmetric IP RSS hash (out) or ``NULL`` * - Status - code .. index:: pair: function; test_rss_get_hash_by_pattern_unit .. _doxid-dpdk__pmd__ts_8h_1aeafdc203739051577285fa903c9a9673: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_rss_get_hash_by_pattern_unit(tarpc_rss_hash_protos_t rss_hf, uint8_t* rss_key, size_t rss_key_sz, const asn_value* pattern, int pattern_unit_index, uint32_t* hash_regular, uint32_t* hash_symmetric) ``:ref:`test_calc_hash_by_tmpl_and_hf() ``` variation to deal with a pattern unit .. index:: pair: function; test_change_src_addr_by_reta_index .. _doxid-dpdk__pmd__ts_8h_1ad875efcd9d62883ec8f7f553a8c3adfb: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_change_src_addr_by_reta_index(const te_toeplitz_hash_cache* toeplitz_hash_cache, unsigned int hash, uint8_t* src_addr, unsigned int addr_size, uint16_t reta_size, const unsigned int* indexes, unsigned int nb_indexes) Change source v4/v6 address by redirection table indexes to be sure that the modified packet will be received on the proper queue calculated using Toeplitz hash function .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - toeplitz_hash_cache - Pre-constructed cache * - hash - RSS hash value * - src_addr - Pointer to source address * - addr_size - Size of **src_addr** in bytes * - reta_size - Redirection table size * - indexes - Array of required RETA indexes * - nb_indexes - Number of RETA indexes * - Status - code .. index:: pair: function; test_rss_hash_protos_str2bitmask .. _doxid-dpdk__pmd__ts_8h_1a283aeb404029a187146cf72875bd4898: .. ref-code-block:: cpp :class: doxyrest-title-code-block tarpc_rss_hash_protos_t test_rss_hash_protos_str2bitmask(const char* rss_hash_protos_str) Convert the string with several RSS hash protocols separated by commas to an tarpc_rss_hash_protos_t protocols bitmask .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rss_hash_protos_str - String with RSS hash protocols * - hash - function bitmask .. index:: pair: function; test_get_rss_hf_by_tmpl .. _doxid-dpdk__pmd__ts_8h_1a231dba3a5cb891144d2c24dd4a3d10ae: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_get_rss_hf_by_tmpl(asn_value* tmpl, tarpc_rss_hash_protos_t* hf) Anticipate RSS HF combination by traffic template. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl - Traffic template * - hf - RSS HF combination (out) * - Status - code .. index:: pair: function; test_parse_mbuf_seg_ptrn .. _doxid-dpdk__pmd__ts_8h_1a22e9ef1c9b4faf73553b5f8caa6e389c: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_parse_mbuf_seg_ptrn(const char* seg_ptrn_str, struct :ref:`test_param_seg_ptrn`* segmentation) Parse mbuf segmentation rules. The function jumps out in the case of parsing faliure. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - seg_ptrn_str - Segmentation rules in string format * - segmentation - Segmentation rules to be filled in .. index:: pair: function; test_check_iut_tst_link_status .. _doxid-dpdk__pmd__ts_8h_1ae85dfb251f97fb82282bfe34c099c32f: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_check_iut_tst_link_status(const char* tst_ta, const char* tst_if_name, rcf_rpc_server* iut_rpcs, uint16_t iut_port_id, te_bool expected_status) Check that tester and IUT link statuses match the expected link status .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tst_ta - Test Agent name * - tst_if_name - Interface name * - iut_rpcs - RPC server handle * - iut_port_id - Port identifier (port number) * - expected_status - Expected link status * - status - code .. index:: pair: function; test_get_xstat_by_name .. _doxid-dpdk__pmd__ts_8h_1a83d2fdac65d0ec75b15b59d3f3f41679: .. ref-code-block:: cpp :class: doxyrest-title-code-block int test_get_xstat_by_name(const char* xstat_name, struct tarpc_rte_eth_xstat_name* xstats_names, struct tarpc_rte_eth_xstat* xstats, unsigned nb_xstats, uint64_t* value) Get xstat value by name .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - xstat_name - Name of extended statistic * - xstats_names - Array of extended statistics names * - xstats - Array of extended statistics values * - nb_xstats - Number of extended statistics * - value - Value of extended statistic (OUT) * - 0 - on success and -1 on error .. index:: pair: function; test_ptype_from_pattern .. _doxid-dpdk__pmd__ts_8h_1a977a2e1f610478a794b62428c3aa6d73: .. ref-code-block:: cpp :class: doxyrest-title-code-block uint32_t test_ptype_from_pattern(const asn_value* pattern, uint32_t* supp, unsigned int supp_count) Get packet type from the pattern and check that it is supported .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - pattern - Traffic pattern * - supp - Packet types supported by the driver * - supp_count - The number of supported packet types * - Packet - type .. index:: pair: function; test_check_packet_ptype .. _doxid-dpdk__pmd__ts_8h_1a4637db23ab24c67922f086bc1931980f: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_check_packet_ptype(uint32_t pt_flag_expected, int pt_value_detected, int pt_flag_offset) Compare expected packet type flag with an actual value and provide a log message on mismatch .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - pt_flag_expected - Expected packet type flag * - pt_value_detected - Detected packet type value * - pt_flag_offset - .. index:: pair: function; test_dev_info_cmp .. _doxid-dpdk__pmd__ts_8h_1ae531c221fbc58af7350b87becb333678: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_dev_info_cmp(struct tarpc_rte_eth_dev_info* dev_info_1, struct tarpc_rte_eth_dev_info* dev_info_2) Compare informations about Ethernet device .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - dev_info_1 - Firts device information * - dev_info_2 - Second device information to compare * - 0 - if they are equal .. index:: pair: function; test_change_tmpl_ip_src_addr_by_queue_nb .. _doxid-dpdk__pmd__ts_8h_1a547869afd137f38c93fcf15dfcc2c637: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_change_tmpl_ip_src_addr_by_queue_nb(asn_value* tmpl, uint16_t queue, uint64_t reta_size, struct tarpc_rte_eth_rss_reta_entry64* reta_conf, const struct tarpc_rte_eth_rss_conf* rss_conf) Change source v4/v6 address to be sure that the modified packet will be received on the proper queue .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl - Pointer to ASN.1 template * - queue - The receive queue number Device redirection table size * - reta_size - Device redirection table size * - reta_conf - RSS RETA configuration * - rss_conf - RSS hash configuration of the Ethernet device * - Status - code .. index:: pair: function; test_mk_template_get_match_fields_from_flow_ndn .. _doxid-dpdk__pmd__ts_8h_1a2b277c5892b78a058e88a8441207525d: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_mk_template_get_match_fields_from_flow_ndn(const asn_value* flow_ndn, asn_value** tmpl, uint32_t* match_fields) Convert an ASN.1 flow rule or pattern to a template containing the same set of PDUs as ones in the flow rule and get flags of template match fields .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - flow_ndn - ASN.1 flow rule or pattern * - tmpl - Pointer to ASN.1 template * - match_fields - Match fields flags if not ``NULL`` * - status - code .. index:: pair: function; test_rand_ip_addr .. _doxid-dpdk__pmd__ts_8h_1a77914d5159cad60919dee6ec8de9ee18: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct sockaddr* test_rand_ip_addr(int af) Get random IPv4/IPv6 address Function allocates memory, which should be freed by the caller. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - af - Address family * - Address - .. index:: pair: function; test_set_pkt_addresses .. _doxid-dpdk__pmd__ts_8h_1aab671f6b09ce77e77805c0b3451fef81: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_set_pkt_addresses(struct :ref:`test_pkt_addresses`* addrs, const uint8_t* src_mac, const uint8_t* dst_mac, const struct sockaddr* src_ip, const struct sockaddr* dst_ip) Set addresses of the packet The function just fills struct :ref:`test_pkt_addresses `, so it must be allocated before function call. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - addrs - Packet addresses * - src_mac - Source MAC address * - dst_mac - Destination MAC address * - src_ip - Source IP address * - dst_ip - Destination IP address .. index:: pair: function; test_fill_in_tmpl_req_fields .. _doxid-dpdk__pmd__ts_8h_1a2bbd3e00b886e0abb650be33f451ac05: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_fill_in_tmpl_req_fields(const asn_value* tmpl, struct :ref:`test_pkt_addresses`* addrs, struct :ref:`test_pkt_addresses`* ifrm_addrs) Fill in ASN.1 template required fields .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl - ASN.1 template * - addrs - Packet outer frame addresses * - ifrm_addrs - Packet inner frame addresses * - status - code .. index:: pair: function; test_tmpl_copy_with_changed_fields .. _doxid-dpdk__pmd__ts_8h_1ac7e3d1e6c74ee067419ea5e5426163c6: .. ref-code-block:: cpp :class: doxyrest-title-code-block asn_value* test_tmpl_copy_with_changed_fields(const asn_value* tmpl, uint32_t fields, struct :ref:`test_pkt_addresses`* addrs, struct :ref:`test_pkt_addresses`* ifrm_addrs) Copy template with changed specific fields. Addresses change to new values, other fields are increased by one. New addresses could not match to values in the template. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl - Pointer to ASN.1 template * - fields - Template fields flags that need to change * - addrs - Packet outer frame addresses * - ifrm_addrs - Packet inner frame addresses * - status - code .. index:: pair: function; test_mk_tmpls_with_change_one_field .. _doxid-dpdk__pmd__ts_8h_1aec4c384f744ff643d36375b118802dd5: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_mk_tmpls_with_change_one_field(const asn_value* tmpl, uint32_t fields, struct :ref:`test_pkt_addresses`* addrs, struct :ref:`test_pkt_addresses`* ifrm_addrs, asn_value**[] tmpls_out, unsigned int* tmpls_nb_out) Make copies of ASN.1 template with change only one field. Each copy corresponds to a change of the one of fields. Function allocates memory for array of templates, which should be freed by the caller. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl - Pointer to ASN.1 template * - fields - Template fields flags that need to change * - addrs - Basic packet outer frame addresses * - ifrm_addrs - Basic packet inner frame addresses * - tmpls_out - Pointer to array of changed ASN.1 template copies * - tmpls_nb_out - Number of tempaltes in the array * - status - code .. index:: pair: function; test_get_rx_info_by_rss_action .. _doxid-dpdk__pmd__ts_8h_1a9b17bb6d9dc3e07b71a1936a5ef1b9e9: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_get_rx_info_by_rss_action(const asn_value* flow_rule_rss, uint16_t** rss_queues_out, uint16_t* nb_rss_queues_out, uint16_t* nb_queues_out, uint64_t* rss_hf, uint8_t** rss_key_out, size_t* rss_key_sz_out) Pull out Rx information from an RSS flow rule .. index:: pair: function; test_add_tunnel_udp_port_from_tmpl .. _doxid-dpdk__pmd__ts_8h_1a480c1d06f8dd8e9ee81a219a8a162d37: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_add_tunnel_udp_port_from_tmpl(struct :ref:`test_ethdev_config`* ethdev_config, asn_value* tmpl, te_bool required) Add the appropriate tunnel UDP port if VXLAN/GENEVE protocols are in the template .. index:: pair: function; test_pdus_detect_and_spoil_cksums .. _doxid-dpdk__pmd__ts_8h_1acf66835ea51743d680b6bac9bc03514c: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_pdus_detect_and_spoil_cksums(unsigned int nb_pdus, asn_value** pdus, uint64_t* flags_good_out, uint64_t* flags_bad_out, int* l4_type_out) Spoil checksums across the PDUs and make notes on GOOD and BAD checksum offload flags which _could be expected, respectively, for the original packet and for the spoiled packet .. index:: pair: function; test_mk_rte_flow_attr_ingress .. _doxid-dpdk__pmd__ts_8h_1ae2f7fcc624cc2c9571c725db544968b8: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_mk_rte_flow_attr_ingress(rcf_rpc_server* rpcs, rpc_rte_flow_attr_p* attr) Make RTE flow attributes with only one "ingress" attribute .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - attr - RTE flow attr pointer .. index:: pair: function; test_mk_rte_flow_action_drop .. _doxid-dpdk__pmd__ts_8h_1a217c5dcc6eaa93875ea798647e9d8ff6: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_mk_rte_flow_action_drop(rcf_rpc_server* rpcs, rpc_rte_flow_action_p* actions) Make RTE flow actions with only one "drop" action .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - actions - RTE flow actions pointer .. index:: pair: function; test_mk_rte_flow_action_queue .. _doxid-dpdk__pmd__ts_8h_1aac62df693a463dd14873f74a0273b39f: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_mk_rte_flow_action_queue(rcf_rpc_server* rpcs, uint16_t queue, rpc_rte_flow_action_p* actions) Make RTE flow actions with only one "queue" action .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - queue - Queue number * - actions - RTE flow actions pointer .. index:: pair: function; test_mk_txmode_txconf .. _doxid-dpdk__pmd__ts_8h_1a7b822e349d3cac63ba5d23b4e92bfae1: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_mk_txmode_txconf(struct :ref:`test_ethdev_config`* tecp, uint64_t test_offloads, struct tarpc_rte_eth_txmode* txmodep, struct tarpc_rte_eth_txconf* txconfp) Validate Tx offload request and generate Tx mode and Tx queue configuration based on DPDK version. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tecp - Test ethdev configuration * - test_offloads - Offload request in terms of Tx offload capability flags supported by TAPI RPC * - txmodep - Tx mode configuration to be filled in, or ``NULL`` * - txconfp - Tx queue configuration to be filled in, or ``NULL`` .. rubric:: Returns: ``0`` on success, ``TE_EINVAL`` in the case of verdict, other non-zero value in the case of techical problem. .. index:: pair: function; test_get_rss_reta .. _doxid-dpdk__pmd__ts_8h_1a9f98f1acae8dc271345ed336621d9437: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_get_rss_reta(rcf_rpc_server* rpcs, uint16_t port_id, uint64_t* reta_size, struct tarpc_rte_eth_rss_reta_entry64** reta_conf) Get RSS RETA configuration using rss_reta_query() RPC. Fill RETA with default values and generate warning if the RPC is not supported. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - reta_size - Location for length of RETA table * - reta_conf - Location for RETA configuration .. index:: pair: function; test_start_tx_queue .. _doxid-dpdk__pmd__ts_8h_1a753d4a2f17587dcd58a1f1d325e52e4b: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_start_tx_queue(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id) Start Tx queue with specified **queue_id** using rx_queue_start() RPC Stop test with warning if the RPC is not supported .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - queue_id - The index of queue to start .. index:: pair: function; test_start_rx_queue .. _doxid-dpdk__pmd__ts_8h_1a66421060d84b0adcb680edbf50f8351e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_start_rx_queue(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t queue_id) Start Rx queue with specified **queue_id** using rx_queue_start() RPC Stop test with warning if the RPC is not supported .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - queue_id - The index of queue to start .. index:: pair: function; test_setup_rss_configuration .. _doxid-dpdk__pmd__ts_8h_1a7ae0cab164f83f604d2d2286d8f90f3e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_setup_rss_configuration(tarpc_rss_hash_protos_t hf, size_t rss_key_sz, te_bool regular, struct tarpc_rte_eth_rss_conf* rss_conf) Fill RSS with provided **hf** and regular or random RSS key .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - hf - Hash functions to include into RSS configuration * - rss_key_size - RSS key size * - regular - If ``TRUE`` - setup predefined regular RSS key, setup random key otherwise * - rss_conf - RSS configuration to setup .. index:: pair: function; test_try_get_rss_hash_conf .. _doxid-dpdk__pmd__ts_8h_1a9aca9afa7628e54dce11a74fb6759b8d: .. ref-code-block:: cpp :class: doxyrest-title-code-block struct tarpc_rte_eth_rss_conf* test_try_get_rss_hash_conf(rcf_rpc_server* rpcs, size_t rss_key_sz, uint16_t port_id) Try to get RSS configuration using rss_hash_conf_get() RPC .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - rss_key_sz - Expected MAX RSS key size * - port_id - The port identifier of the device .. rubric:: Returns: Pointer to allocated RSS configuration on heap on success ``NULL`` if the RPC is not supported .. index:: pair: function; test_send_and_match_one_packet .. _doxid-dpdk__pmd__ts_8h_1a55e2072471093ce1a0b0423f7a677c77: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_send_and_match_one_packet(rcf_rpc_server* rpcs, uint16_t port_id, const char* tst_ta, const char* tst_if_name, rpc_rte_mbuf_p* mbufs, asn_value* tmpl, unsigned int queue, unsigned int packet_expected) Send one packet with **tmpl**, receive it on **queue** and match it .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - tst_ta - Test Agent name * - tst_if_name - Interface name * - mbufs - Array of mbufs to use for received packets * - tmpl - Traffic template * - queue - Queue to receive packets on * - packets_expected - Number of expected received packets .. index:: pair: function; test_get_ethdev_state_name .. _doxid-dpdk__pmd__ts_8h_1a80e20ed5b16a510be478d1b691fb7201: .. ref-code-block:: cpp :class: doxyrest-title-code-block const char* test_get_ethdev_state_name(test_ethdev_state state) Get string representation of a test_ethdev_state enum value .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - state - Device state .. index:: pair: function; test_get_template_packet_length .. _doxid-dpdk__pmd__ts_8h_1ab70c71bc6bccb786dffddb4ba63b482f: .. ref-code-block:: cpp :class: doxyrest-title-code-block uint32_t test_get_template_packet_length(rcf_rpc_server* rpcs, asn_value* tmpl, rpc_rte_mempool_p mp) Get length of a single packet generated from a traffic template .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - tmpl - Traffic template * - mp - RTE mempool pointer .. index:: pair: function; test_get_template_header_length .. _doxid-dpdk__pmd__ts_8h_1af971d36e545af5c66fc4fa218913f567: .. ref-code-block:: cpp :class: doxyrest-title-code-block unsigned int test_get_template_header_length(rcf_rpc_server* rpcs, asn_value* tmpl, rpc_rte_mempool_p mp) Get header length of a traffic template .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - tmpl - Traffic template * - mp - RTE mempool pointer .. index:: pair: function; test_conf_tx_offload_supported .. _doxid-dpdk__pmd__ts_8h_1ac3eac85f4ae99f8e00cc43d3a3988c19: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_conf_tx_offload_supported(unsigned long long offload_bit) Find out if a requested Tx offload is supported by looking into configuration tree .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - offload_bit - Bit of the offload to query .. index:: pair: function; test_conf_rx_offload_supported .. _doxid-dpdk__pmd__ts_8h_1a55570214b93a4abef60ad7acce5a2c34: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_conf_rx_offload_supported(unsigned long long offload_bit) Find out if a requested Rx offload is supported by looking into configuration tree .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - offload_bit - Bit of the offload to query .. index:: pair: function; test_add_ndn_action_queue .. _doxid-dpdk__pmd__ts_8h_1a4f36eb77cfc643f7726c1ab75eadcb1e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_add_ndn_action_queue(asn_value* ndn_actions, int action_index, uint16_t queue) Add a QUEUE action to an action list at specified index. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ndn_actions - Action list * - action_index - Index at which QUEUE action is put to list * - queue - Queue index of QUEUE action .. index:: pair: function; test_add_ndn_action_drop .. _doxid-dpdk__pmd__ts_8h_1a97ed526e994510b83771c607755e318a: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_add_ndn_action_drop(asn_value* ndn_actions, int action_index) Add a DROP action to an action list at specified index. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ndn_actions - Action list * - action_index - Index at which DROP action is put to list .. index:: pair: function; test_mk_pattern_and_tmpl_by_flow_rule_pattern .. _doxid-dpdk__pmd__ts_8h_1a3c355a6d02c286dc117b96dea0154787: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_mk_pattern_and_tmpl_by_flow_rule_pattern(rcf_rpc_server* rpcs, const asn_value* flow_rule_pattern, rpc_rte_flow_item_p* pattern, asn_value** tmpl, uint32_t* match_fields) Convert an ASN value representing a flow rule pattern into RTE flow rule pattern and a template that matches the pattern. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - flow_rule_pattern - ASN.1 representation of a flow rule pattern * - pattern - RTE pattern * - tmpl - Matching ASN.1 template * - match_fields - Match fields flags if not ``NULL`` .. index:: pair: function; test_generate_changed_flow_patterns .. _doxid-dpdk__pmd__ts_8h_1a75b92a29a07f7c4c205f0e15fdd61556: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_generate_changed_flow_patterns(const asn_value* flow_rule_pattern, const char* field_path, size_t n_changed_patterns, asn_value** changed_patterns) Generate flow rule patterns with a changed field. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - flow_rule_pattern - Flow rule pattern to build other patterns upon * - field_path - ASN.1 path to a field that needs to be changed * - n_changed_patterns - Size of an array of changed patterns * - changed_patterns - Pointer to an array of changed patterns .. rubric:: Returns: RTE flow pointer on success; jumps out on failure .. index:: pair: function; test_concatenate_tmpl_ptrn_pdus .. _doxid-dpdk__pmd__ts_8h_1a46818e8a02d17e065fad443d4f211259: .. ref-code-block:: cpp :class: doxyrest-title-code-block asn_value* test_concatenate_tmpl_ptrn_pdus(const asn_value* dst, const asn_value* src, const char* label) Concatenate PDU sequences in two packet templates/patterns. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - dst - Pattern or template to which PDUs are appended * - src - Pattern or template from which PDUs are retrieved .. rubric:: Returns: ASN.1 value with concatenated PDUs on success; jumps out on failure .. index:: pair: function; test_decap_tmpl_ptrn_pdus .. _doxid-dpdk__pmd__ts_8h_1a775a0b570c84f2ea78347671dc8276d3: .. ref-code-block:: cpp :class: doxyrest-title-code-block asn_value* test_decap_tmpl_ptrn_pdus(const asn_value* val, const char* label) Remove outer frame from a PDU sequence in a template/pattern. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - val - Encapsulated pattern or template * - label - Path to PDU sequence in **val** .. rubric:: Returns: Decapsulated ASN.1 value on success; jumps out on failure .. index:: pair: function; test_check_flow_query_data .. _doxid-dpdk__pmd__ts_8h_1aa2dd7f95b80f168858841071a9cf0f25: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_check_flow_query_data(const tarpc_rte_flow_query_data* data, te_bool check_hits, uint64_t hits, te_bool check_bytes, uint64_t bytes) Check that query data for COUNT action meets provided expectations. Jumps out on check fail .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - data - RTE flow query counter data * - check_hits - Check number of hits if ``TRUE`` * - hits - Expected number of hits * - check_bytes - Check number of bytes if ``TRUE`` * - bytes - Expected nymber of bytes .. index:: pair: function; test_add_and_mk_rte_flow_action_count .. _doxid-dpdk__pmd__ts_8h_1ac730bedccd8240b15a69ebab466d5b71: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_add_and_mk_rte_flow_action_count(uint32_t counter_id, int action_id, rcf_rpc_server* rpcs, asn_value* ndn_actions, rpc_rte_flow_action_p* rte_actions) Add an ASN.1 flow rule action "count" to action list at specified index and make RTE flow actions with only this action. Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - counter_id - Counter index * - action_id - Index at which the action is put to list * - rpcs - RPC server handle * - ndn_actions - ASN.1 flow rule action list * - rte_actions - RTE flow actions pointer .. index:: pair: function; test_check_xstat .. _doxid-dpdk__pmd__ts_8h_1a2da15581d0e4d42866943843aa83e86e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_check_xstat(const char* name, uint64_t value, struct tarpc_rte_eth_xstat_name* xstats_names, struct tarpc_rte_eth_xstat* xstats, int nb_xstats, te_string* wrong_xstats, te_string* zero_xstats) Check that extended statistic is correct .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - name - String with extended statistic name * - value - Correct value * - xstats_names - Name of array of extended statistics names * - xstats - Name of array of extended statistics values * - nb_xstats - Name of variable with the number of extended statistics * - wrong_xstats - String with wrong extended statistics names * - zero_xstats - String with always zero extended statistics names .. index:: pair: function; test_pdus_dst_mac_is_set .. _doxid-dpdk__pmd__ts_8h_1ac5848f9c530ea9ee2d742cb306696016: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_pdus_dst_mac_is_set(const asn_value* pdus) Check that PDU sequence has destination MAC set. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - pdus - PDU sequence .. rubric:: Returns: ``TRUE`` if destination MAC is set .. index:: pair: function; test_pdus_set_eth_src_dst .. _doxid-dpdk__pmd__ts_8h_1a453e224770aaf8cf2f194d50e9928b20: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_pdus_set_eth_src_dst(asn_value* pdus, const char* pdus_path, const uint8_t* src, const uint8_t* dst) Set source and destination MAC addresses of outer frame in a PDU sequence. PDU sequence must contain outer Ethernet PDU The function jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - container - ASN.1 container in which PDU sequence is changed * - pdus_path - Path to PDU sequence in the **container** * - src - Source MAC address to set (ignore if ``NULL``) * - dst - Destination MAC address to set (ignore if ``NULL``) .. index:: pair: function; test_rte_eth_promiscuous_enable .. _doxid-dpdk__pmd__ts_8h_1a95ab05918b9da75519343ea4ef3608e0: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rte_eth_promiscuous_enable(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required) Enable promiscuous mode and check that rte_eth_promiscuous_get() reports enabled promiscuous mode. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - required - Is operation required? .. index:: pair: function; test_rte_eth_promiscuous_disable .. _doxid-dpdk__pmd__ts_8h_1a99250742e851ed7da538fb171d1d41aa: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rte_eth_promiscuous_disable(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required) Disable promiscuous mode and check that rte_eth_promiscuous_get() reports disabled promiscuous mode. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - required - Is operation required? .. index:: pair: function; test_rte_eth_allmulticast_enable .. _doxid-dpdk__pmd__ts_8h_1a2e899c01df2fe7be5f8a7b86714ce3d5: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rte_eth_allmulticast_enable(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required) Enable all-multicast mode and check that rte_eth_allmulticast_get() reports enabled all-multicast mode. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - required - Is operation required? .. index:: pair: function; test_rte_eth_allmulticast_disable .. _doxid-dpdk__pmd__ts_8h_1a0418fcfd934b7c8596a6f309bff416ba: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rte_eth_allmulticast_disable(rcf_rpc_server* rpcs, uint16_t port_id, enum test_op_required required) Disable all-multicast mode and check that rte_eth_allmulticast_get() reports disabled all-multicast mode. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - required - Is operation required? .. index:: pair: function; test_mk_pattern_by_unit .. _doxid-dpdk__pmd__ts_8h_1ae6273a4fea2298ad77af8e0aef7ffa51: .. ref-code-block:: cpp :class: doxyrest-title-code-block asn_value* test_mk_pattern_by_unit(const asn_value* ptrn, int index) Create a new traffic pattern with only one unit, that is get from **ptrn** by index. Jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ptrn - Traffic pattern @paran[in] index Index of needed pattern unit .. rubric:: Returns: New pattern that contains only one unit .. index:: pair: function; test_send_and_match_one_packet_custom_verdicts .. _doxid-dpdk__pmd__ts_8h_1a3a54e6e9f6238a942f73fd2e47986b26: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_send_and_match_one_packet_custom_verdicts(rcf_rpc_server* rpcs, uint16_t port_id, const char* tst_ta, const char* tst_if_name, rpc_rte_mbuf_p* mbufs, asn_value* tmpl, unsigned int queue, unsigned int packet_expected, const char* verdict_no_pkts, const char* verdict_known_unexp) Send one packet with **tmpl**, receive it on **queue** and match it. Report custom verdicts. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - The port identifier of the device * - tst_ta - Test Agent name * - tst_if_name - Interface name * - mbufs - Array of mbufs to use for received packets * - tmpl - Traffic template * - queue - Queue to receive packets on * - packets_expected - Number of expected received packets .. index:: pair: function; test_get_extra_tx_descs_per_pkt .. _doxid-dpdk__pmd__ts_8h_1a34123d093790c5fcfa986dcda8174db7: .. ref-code-block:: cpp :class: doxyrest-title-code-block unsigned int test_get_extra_tx_descs_per_pkt(void) Get number of Tx descriptors which could be required per packet. .. index:: pair: function; test_get_tso_payload_cutoff_barrier .. _doxid-dpdk__pmd__ts_8h_1ae4ad49267edac0788f4895dd75bc1733: .. ref-code-block:: cpp :class: doxyrest-title-code-block unsigned int test_get_tso_payload_cutoff_barrier(unsigned int hdrs_len) Get TSO payload cutoff barrier (i.e. without net headers length). .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - hdrs_len - Net headers length. .. index:: pair: function; test_hotplug_vfs_by_ids .. _doxid-dpdk__pmd__ts_8h_1af29715f2e6578988e98c6dd7d67e6da8: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_hotplug_vfs_by_ids(rcf_rpc_server* rpcs, tapi_env* env, const cfg_net_node_t* node, unsigned int n_vfs, const unsigned int* vf_ids, struct :ref:`test_ethdev_config`** vfs) Hotplug VFs with indices specified by **vf_ids**. The function jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - env - Environment binding * - node - Network node of the device (PF) * - n_vfs - The number of VFs to hotplug * - vf_ids - Indices of the VFs to hotplug * - vfs - Configurations of the added VFs .. index:: pair: function; test_is_vdev .. _doxid-dpdk__pmd__ts_8h_1aa51855d539dc66f32494cae97ba58824: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_is_vdev(const char* device_name) Determine if a device is virtual by its name. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - device_name - Name of a device .. rubric:: Returns: ``TRUE`` if device is virtual, ``FALSE`` otherwise .. index:: pair: function; test_hotplug_reps .. _doxid-dpdk__pmd__ts_8h_1ad402ed23c5eed5604a8acf82a53f0ec4: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_hotplug_reps(rcf_rpc_server* rpcs, tapi_env* env, const cfg_net_node_t* node, unsigned int n_rep, const unsigned int* rep_ids, struct :ref:`test_ethdev_config`** reps) Add port representors of the device of a network **node** using hotplug and create ethdev configurations for each of the representor. A port representor is created for each index in **rep_ids** The function jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - node - Network node of the device (PF) * - n_rep - Size of **rep_ids** * - rep_ids - Array of representor indexes to add * - reps - Configurations of the added port representors .. index:: pair: function; test_get_vf_pci_addrs_by_node .. _doxid-dpdk__pmd__ts_8h_1accf86a30aca0ff909744240f651f88bb: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_get_vf_pci_addrs_by_node(const cfg_net_node_t* node, unsigned int* n_vf_addrs, char*** vf_addrs, unsigned int** vf_ids) Get VF PCI addresses of a PF associated with network node. The function jumps out on failure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - node - Network node of the device (PF) * - n_vf_addrs - Number of VFs * - vf_addrs - VF PCI addresses * - vf_ids - Indices of the VFs .. index:: pair: function; test_create_traffic_generator_params .. _doxid-dpdk__pmd__ts_8h_1a3605acee202e5031f38584ba0eb6918d: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_create_traffic_generator_params(const char* ta, char* arg_prefix, const char* command_prefix, const char* forward_mode, const char* txpkts, te_bool multi_flow, unsigned int txq, unsigned int txd, unsigned int burst, unsigned int txfreet, te_kvpair_h** params, unsigned int* n_cores) Create parameters for traffic generation .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ta - Test agent to run generator on * - arg_prefix - App-specific prefix for arguments * - command_prefix - App-specific prefix for commands * - txpkts - TX segment size * - multi_flow - Generate many flow to use RSS on Rx side * - txq - Number of Tx queues (0 for default number) * - txd - Number of Tx descriptors * - burst - Number of packets per burst * - txfreet - Number of transmit free threshold of TX rings * - params - List of kvpairs to store parameters * - n_cores - Location to put required number of testpmd data cores .. index:: pair: function; test_create_traffic_receiver_params .. _doxid-dpdk__pmd__ts_8h_1a20a308ffd81f144ac8a03038e31efba7: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_create_traffic_receiver_params(const char* arg_prefix, const char* command_prefix, unsigned int rxq, unsigned int packet_size, te_kvpair_h** params) Create parameters for traffic reception .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - arg_prefix - App-specific prefix for arguments * - command_prefix - App-specific prefix for commands * - rxq - Number of Rx queues * - packet_size - Packet size in bytes (without l1 and FCS) * - params - List of kvpairs to store parameters .. index:: pair: function; test_rte_af_packet_on_tst_if_deploy .. _doxid-dpdk__pmd__ts_8h_1af3f772cfdae04da66f4383b4ff866e79: .. ref-code-block:: cpp :class: doxyrest-title-code-block uint16_t test_rte_af_packet_on_tst_if_deploy(rcf_rpc_server* tst_rpcs, const struct if_nameindex* tst_if, size_t frame_size, unsigned int nb_frames) Deploy RTE af_packet on top of a tester's regular network interface. One must invoke ``:ref:`test_rte_af_packet_on_tst_if_release() ``` on cleanup. The function jumps out on failure. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tst_rpcs - RPC server handle * - tst_if - Network interface description * - frame_size - The biggest packet's size * - nb_frames - The number of packets which need to be received .. rubric:: Returns: RTE port ID which can be used to invoke ``rpc_rte_eth_rx_burst()``. .. index:: pair: function; test_rte_af_packet_on_tst_if_release .. _doxid-dpdk__pmd__ts_8h_1ae4785f2dd9ee228c5e4516b28759c1cb: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rte_af_packet_on_tst_if_release(rcf_rpc_server* tst_rpcs, const struct if_nameindex* tst_if) Release RTE af_packet which has been previously deployed on top of a tester's regular network interface. The function jumps out on failure. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tst_rpcs - RPC server handle * - tst_if - Network interface description .. index:: pair: function; test_clone_mbuf .. _doxid-dpdk__pmd__ts_8h_1a88ea218ac07937336dede69117acca1f: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_clone_mbuf(rcf_rpc_server* rpcs_src, rpc_rte_mbuf_p m_src, rcf_rpc_server* rpcs_dst, rpc_rte_mempool_p mp_dst, rpc_rte_mbuf_p* m_dstp) Clone the given mbuf and preserve its flags + Tx offload meta information. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs_src - Source RPC server handle * - m_src - The mbuf to be cloned * - rpcs_dst - Destination RPC server handle * - mp_dst - Destination mempool handle * - m_dstp - Location for the new mbuf pointer .. rubric:: Returns: Status code .. index:: pair: function; test_tx_mbuf_set_random_payload .. _doxid-dpdk__pmd__ts_8h_1a253edad6aea5746c1b070c915d52bec9: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_errno test_tx_mbuf_set_random_payload(rcf_rpc_server* rpcs, size_t size, rpc_rte_mbuf_p m) Append randomised payload to the given mbuf. The function will trim existing non-header data. The header will not be updated. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - size - Payload size * - m - The mbuf .. rubric:: Returns: Status code .. index:: pair: function; test_check_mtu .. _doxid-dpdk__pmd__ts_8h_1a9f1b441710110946a374f801fab2b6ab: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_check_mtu(rcf_rpc_server* rpcs, const struct if_nameindex* port, unsigned int packet_size) Skip the test if required packet size is out of MTU limitations reported by the device and saved in local configuration tree. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port - Network interface description * - packet_size - Maximum packet size required for the test .. index:: pair: function; test_set_mtu .. _doxid-dpdk__pmd__ts_8h_1acff2d4d08ac6de4212fcc56987154499: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_set_mtu(rcf_rpc_server* rpcs, uint16_t port_id, uint16_t mtu, struct :ref:`test_ethdev_config`* ethdev_config) Set requested MTU to the device considering maximum/minimum reported MTU. Errors are reported as verdicts. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - Port identifier * - mtu - MTU to set * - ethdev_config - Information about device configuration .. index:: pair: function; test_default_template_prepare .. _doxid-dpdk__pmd__ts_8h_1a38549cff8677832c00b147c5ba6e75db: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_default_template_prepare(struct :ref:`test_default_tmpl_prepare`* p) Do default template prepare procedure that essentially sets MAC, packets number and payload and substitutes "#env" units. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - p - Holds template to prepare with auxiliary data. .. index:: pair: function; test_wait_stats_update .. _doxid-dpdk__pmd__ts_8h_1afb7005251b25b838956aa0b18acfcc7a: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_wait_stats_update() Wait default time for statistics update with motivation logging. .. index:: pair: function; test_desc_nb_violates_limits .. _doxid-dpdk__pmd__ts_8h_1ae57ceae2dcbeb632ba305e3c5f29dd7a: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_desc_nb_violates_limits(unsigned int desc_nb, const struct tarpc_rte_eth_desc_lim* desc_lim) Check given descriptors number against descriptors limits. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - desc_nb - Descriptors number * - desc_lim - Descriptors limits .. rubric:: Returns: Boolean if descriptors number violates reported limits .. index:: pair: function; test_check_rss_queues .. _doxid-dpdk__pmd__ts_8h_1a449811eebff2c0a9e504619d212880f6: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_check_rss_queues(rcf_rpc_server* rpcs, unsigned int port_id, uint16_t nb_rx_queues, uint16_t reta_size, const struct tarpc_rte_eth_rss_reta_entry64* reta_conf, asn_value* ptrn, uint32_t expected_hash, uint16_t expected_queue) Collect diagnostcs in the case of no packet delivery to the expected queue in accordance with RSS settings. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - port_id - Port identifier * - nb_rx_queues - Number of Rx queues * - reta_size - Redirection table size * - reta_conf - Redirection table * - ptrn - Expected packet * - expected_hash - Expected RSS hash value * - expected_queue - Expected Rx queues .. index:: pair: function; test_check_mbuf_rss_hash_value .. _doxid-dpdk__pmd__ts_8h_1a2fe21bbe9a0989709fe948c76afad4be: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_check_mbuf_rss_hash_value(rcf_rpc_server* rpcs, rpc_rte_mbuf_p mbuf, uint32_t expected_hash, uint32_t symmetric_hash) Check RSS hash value provided in mbuf if available. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - mbuf - Packet buffer handle * - expected_hash - Expected RSS hash value * - symmetric_hash - Symmetric RSS hash value .. index:: pair: function; test_rx_mq_rss_prepare .. _doxid-dpdk__pmd__ts_8h_1a3399a4c581d4d2e2c37e130f9c5ae927: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rx_mq_rss_prepare(struct :ref:`test_ethdev_config`* ec, tarpc_rss_hash_protos_t hash_protos) Prepare custom RSS configuration (random RSS key + given hash proto mask) to be programmed into the ethdev either during transition to CONFIGURED state or at a later invocation of :ref:`test_rx_mq_rss_establish() ` .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ec - Ethdev configuration handle * - hash_protos - Hash proto mask to be applied .. index:: pair: function; test_rx_mq_rss_establish .. _doxid-dpdk__pmd__ts_8h_1a011adf5df534201cae9a1c2496c89921: .. ref-code-block:: cpp :class: doxyrest-title-code-block const struct tarpc_rte_eth_rss_conf* test_rx_mq_rss_establish(struct :ref:`test_ethdev_config`* ec, te_bool enforce_initial_conf) Establish effective RSS configuration to be used for building expectations The API first invokes **rte_eth_dev_rss_hash_conf_get()** to check whether early setup during transition to CONFIGURED state has been successful. If the current RSS configuration contradicts the initial one or if it cannot be retrieved at all, **rte_eth_dev_rss_hash_update()** will be invoked to retry setup before checking the result one more time. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ec - Ethdev configuration handle * - enforce_initial_conf - Toggle for strict verification mode .. rubric:: Returns: Established (effective) RSS configuration .. index:: pair: function; test_tx_mbuf_segs_good .. _doxid-dpdk__pmd__ts_8h_1a4dbeab26f3646566f259d09bd5e8e5f3: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_tx_mbuf_segs_good(rcf_rpc_server* rpcs, rpc_rte_mbuf_p m, struct tarpc_rte_eth_dev_info* dev_info) Check segmentation of the mbuf to be sent to comply with Tx segmentation limits reported by the driver in device information. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - RPC server handle * - m - mbuf RPC pointer * - dev_info - Device information .. rubric:: Returns: Is mbuf segmentation good vs limits? .. index:: pair: function; test_eth_get_vlan_from_bottom_layer_of_template .. _doxid-dpdk__pmd__ts_8h_1a61cde3f4bae487064930a8f21c1e3caf: .. ref-code-block:: cpp :class: doxyrest-title-code-block te_bool test_eth_get_vlan_from_bottom_layer_of_template(const asn_value* tmpl, uint16_t* vlan_id) Get the VLAN identifier from the bottom layer of a traffic template. The VLAN protocol, IEEE 802.1Q, is considered only. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - tmpl - A traffic template. * - vlan_id - The VLAN identifier if provided or UINT16_MAX otherwise. .. rubric:: Returns: ``TRUE`` if the VLAN identifier is provided or ``FALSE`` otherwise. .. index:: pair: function; test_rx_clean_queue .. _doxid-dpdk__pmd__ts_8h_1a9a3775ff43aa7a36b2bb7d56e17bacac: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_rx_clean_queue(rcf_rpc_server* rpcs, uint16_t port, uint16_t queue) Read out packets from an interface queue. At leasts one mpool buffer is available for the queue. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - rpcs - The RCP server. * - port - The DPDK interface. * - queue - The queue index. .. index:: pair: function; test_nullify_rte_pktmbuf_array .. _doxid-dpdk__pmd__ts_8h_1a039ce890ad0f0717bf44cf0e311b59f6: .. ref-code-block:: cpp :class: doxyrest-title-code-block void test_nullify_rte_pktmbuf_array(rpc_rte_mbuf_p* ptrs, unsigned int n_ptrs) Nullify an array of RPC mempool buffers. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ptrs - An array of RPC mempool buffers. * - n_ptrs - The length of the **ptrs** array. Macros ------ .. index:: pair: define; BURST_SIZE .. _doxid-dpdk__pmd__ts_8h_1a703e079cb598d615c750d24ec7432617: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define BURST_SIZE Default size of rx/tx burst .. index:: pair: define; CHECK_MATCHED_PACKETS_NUM .. _doxid-dpdk__pmd__test_8h_1a1e61110cffddf7627df867991e1aaa2b: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define CHECK_MATCHED_PACKETS_NUM(_actual, _expected) Check that the number of matched packets is expected .. index:: pair: define; CHECK_PACKETS_NUM .. _doxid-dpdk__pmd__test_8h_1a896f9677bcddfb43af16d4977aa5c20b: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define CHECK_PACKETS_NUM(_actual, _expected) Check that the number of packets is expected .. index:: pair: define; DPDK_TS_RX_CHECKS .. _doxid-dpdk__pmd__test_8h_1a80b97c3a8cf0b17b3f413e67839d7ebf: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define DPDK_TS_RX_CHECKS Number of attempts to receive the packets .. index:: pair: define; DPMD_TS_ETHERTYPE_RAND .. _doxid-dpdk__pmd__test_8h_1a2ebf58aa2162cf640a29a52e09cee57c: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define DPMD_TS_ETHERTYPE_RAND Ethertype for tests .. index:: pair: define; DPMD_TS_PAYLOAD_LEN_DEF .. _doxid-dpdk__pmd__test_8h_1a83aa034d997b1eeaa2024523217d9454: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define DPMD_TS_PAYLOAD_LEN_DEF Default length of payload .. index:: pair: define; DPMD_TS_RX_ATTEMPT_WAIT_MS .. _doxid-dpdk__pmd__test_8h_1a2a3e4bed971cd8f0ddf54b219ddafd15: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define DPMD_TS_RX_ATTEMPT_WAIT_MS Waiting times of receiving in milliseconds .. index:: pair: define; RECEIVE_TIMEOUT_DEF .. _doxid-dpdk__pmd__ts_8h_1a91527fd1701d569511d5c03c010cc4b3: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define RECEIVE_TIMEOUT_DEF Infinitive timeout for traffic receive operation by default .. index:: pair: define; RX_VEC_LIM .. _doxid-dpdk__pmd__ts_8h_1aac515a797643c00d49f7661c9db3a465: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define RX_VEC_LIM Vector RX limitation .. index:: pair: define; TESTPMD_ARG_MAX_LEN .. _doxid-dpdk__pmd__ts_8h_1aa7d3d292e46d696b1349ceda5d23d995: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TESTPMD_ARG_MAX_LEN Maximum length of test-pmd arguments .. index:: pair: define; TEST_DEF_ETHER_TYPE .. _doxid-dpdk__pmd__ts_8h_1a900a4cba91e3f9be10d86bf41f65e7ab: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_ETHER_TYPE Default Ether-Type in Ethernet header .. index:: pair: define; TEST_DEF_GENEVE_UDP_PORT .. _doxid-dpdk__pmd__ts_8h_1ab5613a748e1e139d45b74da13407a9d2: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_GENEVE_UDP_PORT Default UDP destination port for GENEVE protocol .. index:: pair: define; TEST_DEF_IP_PROTO .. _doxid-dpdk__pmd__ts_8h_1a2773cc5f84ca4d449d7433a0d9bc53eb: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_IP_PROTO Default IP Protocol number in IPv4/IPv6 header .. index:: pair: define; TEST_DEF_PPPOE_PADI_CODE .. _doxid-dpdk__pmd__ts_8h_1abc48ea8f7e6cd9e3a8e403c51f13614f: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_PPPOE_PADI_CODE Default code for PPPOE protocol (PADI packet) .. index:: pair: define; TEST_DEF_PPPOE_TYPE .. _doxid-dpdk__pmd__ts_8h_1a25972626e36c88a9ccfec9c083301765: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_PPPOE_TYPE Default type for PPPOE protocol .. index:: pair: define; TEST_DEF_PPPOE_VER .. _doxid-dpdk__pmd__ts_8h_1a6089f6d77a7ed3f4fe5276334da3e531: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_PPPOE_VER Default version for PPPOE protocol .. index:: pair: define; TEST_DEF_PROTOCOL_TYPE .. _doxid-dpdk__pmd__ts_8h_1a313c6259ed6476b0fad4b90122ba62ac: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_PROTOCOL_TYPE Default protocol type for GENEVE/GRE protocols .. index:: pair: define; TEST_DEF_VXLAN_UDP_PORT .. _doxid-dpdk__pmd__ts_8h_1ab8fb3cddb69caca3f49cf5e501702082: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEF_VXLAN_UDP_PORT Default UDP destination port for VXLAN protocol .. index:: pair: define; TEST_DEV_HEADER_SIZE .. _doxid-dpdk__pmd__ts_8h_1ae44de7491248fe890c85c7cf0f7c8f0f: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_DEV_HEADER_SIZE Maximum header size .. index:: pair: define; TEST_END_SPECIFIC .. _doxid-dpdk__pmd__test_8h_1a284a6c22db44ada281550c6b6beba2c1: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_END_SPECIFIC Test suite specific part of the last action of the test **main()** function. .. index:: pair: define; TEST_ENV_IUT_PORT .. _doxid-dpdk__pmd__test_8h_1a01758767f665e3c93c32b9e568eee23b: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_ENV_IUT_PORT Name of the IUT DPDK port in the environment. .. index:: pair: define; TEST_ETHER_ENCAP_PROTO_OPAQUE .. _doxid-dpdk__pmd__ts_8h_1a6c723442340798a3eedcf035448a1088: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_ETHER_ENCAP_PROTO_OPAQUE Ethernet encapsulated protocol opaque ID .. index:: pair: define; TEST_ETH_RSS_IPV4 .. _doxid-dpdk__pmd__ts_8h_1afe0b9409f25b932cf72c83d6604f1338: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_ETH_RSS_IPV4 RSS hash protocols .. index:: pair: define; TEST_GET_MBUF_SEG_PTRN_PARAM .. _doxid-dpdk__pmd__test_8h_1a2acd507d40d265f0a3d0edfa6b046938: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_GET_MBUF_SEG_PTRN_PARAM(_parameter) Obtain mbuf segmentation pattern from a string representation .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - _parameter - The name to denote both the target variable of 'struct :ref:`test_param_seg_ptrn ` ' type and the string parameter of interest .. index:: pair: define; TEST_GET_RSS_HASH_PROTOS .. _doxid-dpdk__pmd__test_8h_1aefb518ca80d5e3bc5e898405ee64f1b8: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_GET_RSS_HASH_PROTOS(var_name_) Get the value of parameter of type 'tarpc_rss_hash_protos_t' .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - var_name\_ - Name of the variable used to get the value of "var_name\_" parameter (OUT) .. index:: pair: define; TEST_GET_VLAN_ID_PARAM .. _doxid-dpdk__pmd__test_8h_1ab1ee3f0e7197e706165e164244d01059: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_GET_VLAN_ID_PARAM(_parameter) Obtain the value of a VLAN ID parameter .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - _parameter - The name to denote both the target 'int' variable and the VLAN ID parameter of interest .. index:: pair: define; TEST_IP4_ADDR_LEN .. _doxid-dpdk__pmd__ts_8h_1ac049113e5414df41c9d84cb7f451bb1d: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_IP4_ADDR_LEN IPv4 address length .. index:: pair: define; TEST_IP6_ADDR_LEN .. _doxid-dpdk__pmd__ts_8h_1a4818e9986537f3fae89eb676b32a7840: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_IP6_ADDR_LEN IPv6 address length .. index:: pair: define; TEST_IP_ENCAP_PROTO_OPAQUE .. _doxid-dpdk__pmd__ts_8h_1a6fd74e6687f4de3e0bf5920d15d964c2: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_IP_ENCAP_PROTO_OPAQUE IP encapsulated protocol opaque ID .. index:: pair: define; TEST_IUT_PORT_MAC_NAME .. _doxid-dpdk__pmd__ts_8h_1a40732d3a08187ed2e5a37f47fca11a71: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_IUT_PORT_MAC_NAME Name of iut_port MAC .. index:: pair: define; TEST_LINK_UP_MAX_CHECKS .. _doxid-dpdk__pmd__ts_8h_1a2dc873fbadde4f19b2ce9a2ced6ba4e9: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_LINK_UP_MAX_CHECKS The number of attempts to check link status .. index:: pair: define; TEST_LINK_UP_WAIT_MS .. _doxid-dpdk__pmd__ts_8h_1a60d1cc0008c87ed2abb19a64fd63b9c3: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_LINK_UP_WAIT_MS The number of milliseconds to wait for link status change (link status check is done on port start and after MTU changes) .. index:: pair: define; TEST_MAX_NB_XSTAT_NAMES .. _doxid-dpdk__pmd__ts_8h_1ab7f5e269b171cede854173d0d6f063ed: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_MAX_NB_XSTAT_NAMES Maximum number of different names of one extended statistic .. index:: pair: define; TEST_MAX_VLAN_ID .. _doxid-dpdk__pmd__ts_8h_1a412016d1d630508e5a3186d525f55722: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_MAX_VLAN_ID Maximum VLAN ID value .. index:: pair: define; TEST_MIN_PAGE_SIZE .. _doxid-dpdk__pmd__ts_8h_1a91dc314a065ff05f71c4df24be80aee8: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_MIN_PAGE_SIZE Minimum page size in bytes on most architectures .. index:: pair: define; TEST_PKTMBUF_HEADROOM .. _doxid-dpdk__pmd__ts_8h_1aeb5e4f2c2c069d17ce387b6e811a39fa: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_PKTMBUF_HEADROOM Size of headroom reserved in packet mbuf. Todo Get it from RPC server. .. index:: pair: define; TEST_PKTS_MEMPOOL_NAME .. _doxid-dpdk__pmd__ts_8h_1a2649bffebb354d6a35968b1b440811f2: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_PKTS_MEMPOOL_NAME Name of mempool for packets .. index:: pair: define; TEST_POST_LINK_UP_TIMEOUT .. _doxid-dpdk__pmd__ts_8h_1ac15488bbea945a92077ae07f94ce153d: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_POST_LINK_UP_TIMEOUT A timeout which is required to elapse in certain cases after link is established before the HW becomes ready .. index:: pair: define; TEST_RTE_ETHDEV_DEF_NB_RX_DESCS .. _doxid-dpdk__pmd__ts_8h_1a54ab95a5c017a388827b3860a48cc646: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_ETHDEV_DEF_NB_RX_DESCS Default number of Rx descriptors to be taken into account when mempool is sized if driver does not provide the minimum. It matches RTE_ETH_DEV_FALLBACK_RX_RINGSIZE. .. index:: pair: define; TEST_RTE_MEMPOOL_DATA_ROOM_OVERHEAD .. _doxid-dpdk__pmd__ts_8h_1afcc358db6509cc6c2841a9464e3b47e8: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_MEMPOOL_DATA_ROOM_OVERHEAD Overhead of RTE mbuf data buffer sufficient to cover unused part of the buffer .. index:: pair: define; TEST_RTE_MEMPOOL_DEF_CACHE .. _doxid-dpdk__pmd__ts_8h_1a7bfa0415bddc963f39d72f5a4653e15b: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_MEMPOOL_DEF_CACHE Default cache size of RTE mempool to be used by tests (TEST_RTE_MEMPOOL_DEF_SIZE % TEST_RTE_MEMPOOL_DEF_CACHE = 0) .. index:: pair: define; TEST_RTE_MEMPOOL_DEF_DATA_ROOM .. _doxid-dpdk__pmd__ts_8h_1ab9963cac46e2e4d181a416cfc3ccfd95: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_MEMPOOL_DEF_DATA_ROOM Default size of RTE mbuf data buffer, including RTE_PKTMBUF_HEADROOM .. index:: pair: define; TEST_RTE_MEMPOOL_DEF_EXTRA .. _doxid-dpdk__pmd__ts_8h_1a4b5fa77b651d5d248c12a5f15848d6ea: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_MEMPOOL_DEF_EXTRA Extra elements in default RTE mempool for Tx mbufs. Tests which allocate more mbufs for Tx should care about mempool size itself. .. index:: pair: define; TEST_RTE_MEMPOOL_DEF_PRIV_SIZE .. _doxid-dpdk__pmd__ts_8h_1a6cf1127b26ec93f87bbdac63d950331d: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_MEMPOOL_DEF_PRIV_SIZE Default size of RTE mbuf private area .. index:: pair: define; TEST_RTE_MEMPOOL_DEF_SIZE .. _doxid-dpdk__pmd__ts_8h_1a87bb90cbe7bbe5e6c130308c5d013af6: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RTE_MEMPOOL_DEF_SIZE Default number of elements in RTE mempool to be used by tests .. index:: pair: define; TEST_RX_PKTS_WAIT_MAX_MS .. _doxid-dpdk__pmd__ts_8h_1a6b35ea81f260327ded6f21bf03a5e766: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RX_PKTS_WAIT_MAX_MS Maximum timeout on packet reception .. index:: pair: define; TEST_RX_UNEXP_PKTS_GUARD_TIMEOUT_MS .. _doxid-dpdk__pmd__ts_8h_1a79ecffa6209aeb07de590604f8cf1eff: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_RX_UNEXP_PKTS_GUARD_TIMEOUT_MS Guard timeout to make sure that no unexpected packets arrive .. index:: pair: define; TEST_START_SPECIFIC .. _doxid-dpdk__pmd__test_8h_1a106f7918149b46740422f65372c2b371: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_START_SPECIFIC Test suite specific the first actions of the test. .. index:: pair: define; TEST_START_VARS .. _doxid-dpdk__pmd__test_8h_1a14d89dddc84e50e922723dcf865ca7ed: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_START_VARS Test suite specific variables of the test **main()** function. .. index:: pair: define; TEST_STATS_UPDATE_WAIT_MS .. _doxid-dpdk__pmd__ts_8h_1a8e4b30fd2528055bd295e845dc7b87b7: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_STATS_UPDATE_WAIT_MS The number of milliseconds to wait for statistics update .. index:: pair: define; TEST_TUNNEL_UDP_PORT_AWAIT_MC_REBOOT_MS .. _doxid-dpdk__pmd__ts_8h_1a4127b3866564d665d5d737711131c459: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_TUNNEL_UDP_PORT_AWAIT_MC_REBOOT_MS The number of milliseconds to wait for MC REBOOT after adding/deleting the tunnel UDP port .. index:: pair: define; TEST_TUNNEL_UDP_PORT_MAX_CHECKS .. _doxid-dpdk__pmd__ts_8h_1ad2ecfeed7c2065548d36512a9078e2a4: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_TUNNEL_UDP_PORT_MAX_CHECKS The number of attempts to configure tunnel UDP port .. index:: pair: define; TEST_TUNNEL_UDP_PORT_WAIT_MS .. _doxid-dpdk__pmd__ts_8h_1ae3c649685726edd00d3ff0684feafd70: .. ref-code-block:: cpp :class: doxyrest-title-code-block #define TEST_TUNNEL_UDP_PORT_WAIT_MS The number of milliseconds to wait on each attempt of tunnel UDP port configuration