These patches mainly support configuring hash functions. In detail, - It can get/set global hash configurations. * Get/set symmetric hash enable per flow type. * Get/set hash function type. - It can get/set symmetric hash enable per port. - Four commands have been implemented in testpmd to support testing above. * get_sym_hash_ena_per_port * set_sym_hash_ena_per_port * get_hash_global_config * set_hash_global_config
It also uses constant hash keys to replace runtime generating hash keys. Global initialization is added to correctly put registers to an initial state. v3 changes: * Removed renamings in rte_ethdev.h. * Redesigned filter control API and its relevant structures/enums. * Renamed header file from rte_eth_features.h to rte_eth_ctrol.h. * Remove public header file of rte_i40e.h specific for i40e. * Added hardware initialization function during port init. * Used constant random hash keys in i40e PF. * renamed the commands in testpmd based on the redesigned filter control API. v4 changes: * Fixed a bug in testpmd to support 'set_sym_hash_ena_per_port'. v5 changes: * Integrated with filter API defined recently. * Remove all for filter API definition, as it has already defined and merged recently. v6 changes: * Flow type strings are used to replace Packet Classification Types, to isolate hardware specific things. * Implemented the mapping function to convert RSS offload types to Packet Classification Types, to isolate the real hardware specific things. * Removed initialization of global registers in i40e PMD, as global registers shouldn't be initialized per port. * Added more annotations to get code more understandable. * Corrected annotation format for documenation. v7 changes: * Remove swap configurations, as it is not allowed by hardware design. * Put symmetric hash per flow type and hash function type into 'RTE_ETH_HASH_FILTER_GLOBAL_CONFIG', as they are controlling global registers which will affects all the ports of the same NIC. Helin Zhang (4): ethdev: code style fixes i40e: use constant as the default hash keys i40e: support of controlling hash functions app/testpmd: app/testpmd: add commands to support hash functions app/test-pmd/cmdline.c | 334 ++++++++++++++++++++++++++++++++++++++ lib/librte_ether/rte_eth_ctrl.h | 72 +++++++- lib/librte_pmd_i40e/i40e_ethdev.c | 312 ++++++++++++++++++++++++++++++++++- 3 files changed, 704 insertions(+), 14 deletions(-) -- 1.8.1.4