On Thu, Mar 17, 2022 at 12:01 PM Harold Huang <[email protected]> wrote: > > 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 Ok, let's wait for maintainer comments. > > > > 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
-- Best regards, Tonghao _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
