From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C9265A0C41 for ; Thu, 30 Sep 2021 02:30:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4EF2A40DDA; Thu, 30 Sep 2021 02:30:04 +0200 (CEST) Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by mails.dpdk.org (Postfix) with ESMTP id 81F1A4067E for ; Thu, 30 Sep 2021 02:30:02 +0200 (CEST) Received: by mail-ed1-f49.google.com with SMTP id g8so15426358edt.7 for ; Wed, 29 Sep 2021 17:30:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1nvRc+eRKM01BkA+0JxVVcV66FBHyVznO7TC3n6c/14=; b=N3BcXhHBM6rC82Sdpp9KDVXwBjXBmKqEYi1tsjrih2PnyJsgEQfCNiJzYZ4qO97k4U oLpgTs2KwaMOFceUG8IMr68igU96ymRhsEFO4fLVl7ff9zUHv4B0JUPwu1lb2eT+QPEO cKkBYXjwNaCIq2vWhonOC/aAESB1HVXQJsLy5A64i7+6aGgsbBEyHRPywO/zhy5Vsk8P w9IwWUUPVDiNmaqlVKqW15TMm5tRveFIo4G/ZuDEQVbOTvSJoZ90vxVcQAwFRAp9L//0 F9SGSMJLOUsmPwaR/gxF5NPVtHE0UggiAzHheswcCStdvrbEzOcUJPt8mO2UNkesIQse fcKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1nvRc+eRKM01BkA+0JxVVcV66FBHyVznO7TC3n6c/14=; b=1ja3qCXsKtY+mO8+qACHPokUuNXnYMy9zun9cCE7OdVFtbjzDyPtEVDV6E6Gxy5KvT woiNAyHAYhqz7kr5qAWAc5IiczVHr1tTl8yyQCydCjNZR5/NeEOZvw3MvgujMImNXAyG IoGL45SGqM9Z+88Euc0kxQTSZkTu0lAWV4aygd5HEQpeAUuM+1jEowLRaN/2bmUSN00N 3mEbvS363BN4RCLBGTdYGLiX0mmQ1U5tcG1hOuAiH/KChxP2Te22YQBKyJ1Z2CGE3uKF rVLnImF89anrJFQTINnuC6TyVshAEoHON5f2GIsupGImyjVnQLkShx/uET17zeKC77ex BJtg== X-Gm-Message-State: AOAM531Cr5nn3qc9KzGePIEl/iI9FOvOdQ+U8zKhIx87Pwu8oQvrw5k+ rflbEWJMS5e/GXXNWIYqvk8/lTCQXCedZ/bhKT0= X-Google-Smtp-Source: ABdhPJwLKhfFQ3NxK5WhDAA1A5TO0i6zJmZY49k5wmT9/HbnUi68GgJNXLmyJyptpah7sjyoMmgaH33DzuWZKpKwrQQ= X-Received: by 2002:a17:906:d045:: with SMTP id bo5mr3270058ejb.461.1632961802224; Wed, 29 Sep 2021 17:30:02 -0700 (PDT) MIME-Version: 1.0 References: <1849453.UF46jR8BTF@thomas> In-Reply-To: From: Anna A Date: Wed, 29 Sep 2021 17:29:51 -0700 Message-ID: Subject: Re: Using rte_flow to distribute single flow type among multiple Rx queues using DPDK in Mellanox ConnectX-5 Ex To: Wisam Monther Cc: NBU-Contact-Thomas Monjalon , "users@dpdk.org" , Matan Azrad , Slava Ovsiienko Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org Hi Wisam, I added .rxmode.mq_mode = ETH_MQ_RX_RSS to rte_eth_conf before calling the fn, rte_eth_dev_configure() but still have the packets sent to a single queue. My order of configuration is as follows: 1. Enable .rxmode.mq_mode = ETH_MQ_RX_RSS 2. Initialize port by rte_eth_dev_configure() 3. Setup multiple Rxqueues for a single port by calling rte_eth_rx_queue_setup() on each queueid. 4.setup a single txqueue by rte_eth_tx_queue_setup() 5. start the device with rte_eth_dev_start() 6. Configure rte_flow with pattern -> flow create port0 ingress pattern eth / end / action RSS on multiple queues / end 7. Add Mac address 8. Check the port link status If I try to configure rte_flow before calling rte_eth_dev_start, I get the error message "net_mlx5: port 0 is not started when inserting a flow and rte_flow_create() returns NULL ". Also i enabled debug logging with "--log-level=*:debug", but don't see any errors for flow validation/ flow creation . Please let me know if I'm missing something, or need to add any other configurations? Thanks Anna On Wed, Sep 29, 2021 at 3:09 AM Wisam Monther wrote: > Hi Anna, > > > -----Original Message----- > > From: Thomas Monjalon > > Sent: Wednesday, September 29, 2021 12:54 PM > > To: Anna A > > Cc: users@dpdk.org; Matan Azrad ; Slava Ovsiienko > > > > Subject: Re: Using rte_flow to distribute single flow type among > multiple Rx > > queues using DPDK in Mellanox ConnectX-5 Ex > > > > 29/09/2021 07:26, Anna A: > > > Hi, > > > > > > I'm trying to use rte_flow_action_type_rss to distribute packets all > > > of the same flow type among multiple Rx queues on a single port. > > > Mellanox > > > ConnectX-5 Ex and DPDK version 20.05 is used for this purpose. It > > > doesn't seem to work and all the packets are sent only to a single > queue. > > > > Adding mlx5 maintainers Cc. > > > > > My queries are : > > > 1. What am I missing or doing differently? > > > 2. Should I be doing any other configurations in rte_eth_conf or > > > rte_eth_rxmode? > > Can you please try to add? > .rxmode.mq_mode = ETH_MQ_RX_RSS, > in the rte_eth_conf and try again? > > > > > Do you see any error log? > > For info, you can change log level with --log-level. > > Experiment options with '--log-level help' in recent DPDK. > > > > > My rte_flow configurations: > > > > > > struct rte_flow_item pattern[MAX_RTE_FLOW_PATTERN] = {}; > > > struct rte_flow_action action[MAX_RTE_FLOW_ACTIONS] = {}; > > > struct rte_flow_attr attr; > > > struct rte_flow_item_eth eth; > > > struct rte_flow *flow = NULL; > > > struct rte_flow_error error; > > > int ret; > > > int no_queues =2; > > > uint16_t queues[2]; > > > struct rte_flow_action_rss rss; > > > memset(&error, 0x22, sizeof(error)); > > > memset(&attr, 0, sizeof(attr)); > > > attr.egress = 0; > > > attr.ingress = 1; > > > > > > memset(&pattern, 0, sizeof(pattern)); > > > memset(&action, 0, sizeof(action)); > > > /* setting the eth to pass all packets */ > > > pattern[0].type = RTE_FLOW_ITEM_TYPE_ETH; > > > pattern[0].spec = ð > > > pattern[1].type = RTE_FLOW_ITEM_TYPE_END; > > > > > > rss.types = ETH_RSS_IP; > > > rss.level = 0; > > > rss.func = RTE_ETH_HASH_FUNCTION_TOEPLITZ; > > > rss.key_len =0; > > > rss.key = NULL; > > > rss.queue_num = no_queues; > > > for (int i= 0; i < no_queues; i++){ > > > queues[i] = i; > > > } > > > rss.queue = queues; > > > action[0].type = RTE_FLOW_ACTION_TYPE_RSS; > > > action[0].conf = &rss; > > > > > > action[1].type = RTE_FLOW_ACTION_TYPE_END; > > > > > > ret = rte_flow_validate(portid, &attr, pattern, action, &error); > > > if (ret < 0) { > > > printf( "Flow validation failed %s\n", error.message); > > > return; > > > } > > > flow = rte_flow_create(portid, &attr, pattern, action, &error); > > > > > > if (flow == NULL) > > > printf(" Cannot create Flow create"); > > > > > > And Rx queues configuration: > > > for (int j = 0; j < no_queues; j++) { > > > > > > int ret = rte_eth_rx_queue_setup(portid, j, nb_rxd, > > > rte_eth_dev_socket_id(port_id), > > > NULL,mbuf_pool); > > > if (ret < 0) { > > > printf( "rte_eth_rx_queue_setup:err=%d, port=%u", ret, > > > (unsigned) portid); > > > exit(1); > > > } > > > } > > > > > > Thanks > > > Anna > > > > > > BRs, > Wisam Jaddo >