From patchwork Fri Sep 10 09:17:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Coquelin X-Patchwork-Id: 98580 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8D7FEA0547; Fri, 10 Sep 2021 11:17:46 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4E01040DF4; Fri, 10 Sep 2021 11:17:46 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id E20284067E for ; Fri, 10 Sep 2021 11:17:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1631265464; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5RJ8J/EOnCkATFmln3JI4jyFGGh8wv6zZcah3Y6aIVk=; b=c/zcyHq4Fm/fJOcITW79xyX4avSdWML8D3VEO3vBaZW228vWlKJS51ARBypoi7FK7nR6ll WATONhRCiczkFMwvEJiIXOX44/cWix7bv0PSxb4nteIGr3mTGnrZsc9vfxVxorz6ZpzSKC pvex+f3FxquVy9Dk3VAcQv3fNrliUyk= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-110-j9IbHs9KPVW4TgH3H6rFVg-1; Fri, 10 Sep 2021 05:17:41 -0400 X-MC-Unique: j9IbHs9KPVW4TgH3H6rFVg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 80EAFCF98B; Fri, 10 Sep 2021 09:17:39 +0000 (UTC) Received: from max-t490s.redhat.com (unknown [10.39.208.12]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1751177BE7; Fri, 10 Sep 2021 09:17:36 +0000 (UTC) From: Maxime Coquelin To: dev@dpdk.org, chenbo.xia@intel.com, amorenoz@redhat.com, david.marchand@redhat.com, andrew.rybchenko@oktetlabs.ru, ferruh.yigit@intel.com, michaelba@nvidia.com, viacheslavo@nvidia.com Cc: stable@dpdk.org, nelio.laranjeiro@6wind.com, Maxime Coquelin Date: Fri, 10 Sep 2021 11:17:31 +0200 Message-Id: <20210910091734.7023-1-maxime.coquelin@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 0/3] Virtio PMD RSS support & RSS fixes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This series is mainly adding support for RSS to Virtio PMD driver. The two last patches are fixing an issue in testpmd that prevents to configure the RSS hash types, and fix an issue spotted in the mlx5 driver while looking for inspiration. The first motivation for this series is to eventually support RSS down to the Vhost-user library, so that OVS can benefit from it. But it will be also useful with vDPA devices in the future. Regarding the testing, I have tested it with qemu v5.2 from Fedora 34. Since libvirt does not support yet enabling RSS feature in the Qemu virtio-net device, and this feature is disabled by default, the tester can either rebuild the qemu package to enable it by default or use the qemu cmdline to do the same. The tester can use testpmd in icmpecho mode in the guest and scapy on the host to inject random traffic on the tap interface, e.g.: sendp(Ether(src=RandMAC()) / IP(src=RandIP(), dst='192.168.123.9') / UDP(sport=RandShort(), dport=RandShort()), loop=True, iface='vnet7') Then it can play with RSS config in testpmd to change the reta, or hash type and see traffic being steered accordingly by checking the Rx xstats. Ferruh, Andrew, I have updated the driver feature list, but I have one doubt about whether I should set RSS hash, since the driver don't support hash reporting yet, but the device performs RSS hashing for queue selection. WDYT? Maxime Coquelin (3): net/virtio: add initial RSS support app/testpmd: fix RSS hash type update net/mlx5: Fix RSS RETA update app/test-pmd/config.c | 8 +- doc/guides/nics/features/virtio.ini | 2 + doc/guides/nics/virtio.rst | 3 + doc/guides/rel_notes/release_21_11.rst | 5 + drivers/net/mlx5/mlx5_rss.c | 2 +- drivers/net/virtio/virtio.h | 31 ++- drivers/net/virtio/virtio_ethdev.c | 367 ++++++++++++++++++++++++- drivers/net/virtio/virtio_ethdev.h | 3 +- drivers/net/virtio/virtqueue.h | 21 ++ 9 files changed, 429 insertions(+), 13 deletions(-)