Hi, On Wed, Mar 16, 2022 at 4:32 PM Tonghao Zhang <[email protected]> wrote: > > On Wed, Mar 16, 2022 at 4:09 PM Harold Huang <[email protected]> wrote: > > > > When we send parallel flows such as VXLAN to a PF[1] port in OVS-DPDK with > > multiple PMDs. OVS will create a RTE flow with Mark and RSS actions to send > > flows to the software data path. But the RSS action does not work well and > > all the flows are forwarded to a single PMD. This is because RSS hash types > > should be set in RSS action. > > > > [1]: In our testbed, a Mellanox ConnectX-6 is used as a PF port. > One question, did you test this patch on another NIC. e.g. ixgbe, i40e > we hope ovs can run on more NIC.
Thanks for your suggestions. I have tested it in Intel E810, Broadcom NetXtreme-E. All of them could work well without this patch, ie. parallel flows are RSS to different queues. And both of them could work well after adding this patch. But 82599 NIC with IXGBE driver does not support Mark action and the offloaded Mark and RSS action are failed. AFAIK it does not matter because Mark and RSS action is used to accelerate the software datapath with Mark ID lookup. I do not have an I40E testbed at present. But I guess it could also work well because Mark id action is also supported. Last but most important, we should make sure anding RTE_ETH_RSS_IP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_TCP RSS types do not have a negative effect. It seems that most physical network drivers which support mark could also support these RSS hash types. It could be seen at [1] these RSS hash types have been set in the DPDK port initialization. But IMO, it is better to find a solution from the MLX5 dpdk driver. [1]: https://github.com/openvswitch/ovs/blob/master/lib/netdev-dpdk.c#L167 > > Signed-off-by: Harold Huang <[email protected]> > > --- > > lib/netdev-offload-dpdk.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c > > index 94dc6a9b7..1b8fba2e3 100644 > > --- a/lib/netdev-offload-dpdk.c > > +++ b/lib/netdev-offload-dpdk.c > > @@ -18,6 +18,7 @@ > > > > #include <sys/types.h> > > #include <netinet/ip6.h> > > +#include <rte_ethdev.h> > > #include <rte_flow.h> > > #include <rte_gre.h> > > > > @@ -1697,7 +1698,7 @@ add_flow_mark_rss_actions(struct flow_actions > > *actions, > > .conf = (struct rte_flow_action_rss) { > > .func = RTE_ETH_HASH_FUNCTION_DEFAULT, > > .level = 0, > > - .types = 0, > > + .types = RTE_ETH_RSS_IP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_TCP, > > .queue_num = netdev_n_rxq(netdev), > > .queue = rss_data->queue, > > .key_len = 0, > > -- > > 2.27.0 > > > > > -- > Best regards, Tonghao _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
