These patches mainly support configuring hash functions. In detail, - It can get or set hash functions. - It can configure symmetric hash functions. * Get/set symmetric hash enable per port. * Get/set symmetric hash enable per 'PCTYPE'. * Get/set filter swap configurations. - Six commands have been implemented in testpmd to support testing above. * get_sym_hash_ena_per_port * set_sym_hash_ena_per_port * get_sym_hash_ena_per_pctype * set_sym_hash_ena_per_pctype * get_filter_swap * set_filter_swap * get_hash_function * set_hash_function Note that 'PCTYPE' means 'Packet Classification Type'.
It also uses prepared constant hash keys to replace runtime generating hash keys. Global initialization is added to put global registers to an initial state, as global registers can be reset by global reset only. 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. Helin Zhang (5): i40e: Use constant random hash keys ethdev: add enum type and relevant structures for hash filter control i40e: add hash filter control implementation i40e: add hardware initialization app/testpmd: add commands to support hash filter app/test-pmd/cmdline.c | 566 ++++++++++++++++++++++++++++++++++++++ lib/librte_ether/rte_eth_ctrl.h | 75 +++++ lib/librte_pmd_i40e/i40e_ethdev.c | 467 ++++++++++++++++++++++++++++++- 3 files changed, 1100 insertions(+), 8 deletions(-) -- 1.8.1.4