Because the VF must be capable of configuring RSS, so add RSS configuration for iavf, VFs could add or delete a RSS rule base on the PF's capability. The supported protocol rss input set as below.
l2-src-only/ l2-dst-only/ svlan/ cvlan/ ipv4/ ipv6/ l3_src_only/ l3_dst_only/ l2tpv3/ esp/ ah/ pfcp/ gtpu down/ gtpu up/ udp/ tcp/ sctp/ use tespmd for example: testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-src-only end key_len 0 queues end / end use scapy for example: > sendp(Ether(dst="00:01:23:45:67:01")/IP(src=RandIP())/Raw('x'*20),iface="ens785f1",loop=1,inter=0.3) the expect result: the rss hash works and the packets will go to difference queue for load balance. This patchset depends on below patch sets. (1)http://patches.dpdk.org/project/dpdk/list/?series=8950 add generic filter support for iavf (2)http://patches.dpdk.org/project/dpdk/list/?series=9280 iavf share code update (3)http://patches.dpdk.org/project/dpdk/list/?series=9244 framework for advanced iAVF PMD v7: 1.rebase and add ETH_RSS_VLAN to cover ETH_RSS_S_VLAN and ETH_RSS_C_VLAN 2.add misssing type and add change in doc for port rss configure. v6: 1.rename some struct and type 2.use pattern hint to distingush different layer for hash 3.add some missing part and refine commit log v5: 1.rename ETH_XXX to L2_XXX. 2.NULL checking and commit log refine. v4: 1.refine the rss type checking 2.delete unnecessary pdu type item. v3: 1.refince rss offload types. 2.add doc in release note 3.refine some naming base on virtchnl definition. 4.move gtp pdu index from normal to special. v2: 1.refine some rte eth rss offload types. 2.add NAT T ESP and refine gtpu down/up 3.reference some fixing patch from pf side. Jeff Guo (3): ethdev: add new RSS offload types net/iavf: add RSS configuration for VFs app/testpmd: add new types to RSS hash commands app/test-pmd/cmdline.c | 34 +- app/test-pmd/config.c | 14 +- doc/guides/rel_notes/release_20_05.rst | 2 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 +- drivers/net/iavf/Makefile | 1 + drivers/net/iavf/iavf.h | 2 + drivers/net/iavf/iavf_hash.c | 1053 +++++++++++++++++++ drivers/net/iavf/iavf_vchnl.c | 33 +- drivers/net/iavf/meson.build | 1 + lib/librte_ethdev/rte_ethdev.h | 17 +- 10 files changed, 1141 insertions(+), 18 deletions(-) create mode 100644 drivers/net/iavf/iavf_hash.c -- 2.20.1