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

Reply via email to