patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Stephen Hemminger <sthemmin@microsoft.com>
Cc: dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/netvsc: reset mbuf port on VF Rx' has been queued to LTS release 18.11.2
Date: Wed,  8 May 2019 17:02:29 +0100	[thread overview]
Message-ID: <20190508160233.2648-32-ktraynor@redhat.com> (raw)
In-Reply-To: <20190508160233.2648-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/14/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable-queue/commit/676e771920bc5b1d659c7a7b3ea1aa78a24d4610

Thanks.

Kevin Traynor

---
From 676e771920bc5b1d659c7a7b3ea1aa78a24d4610 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <sthemmin@microsoft.com>
Date: Tue, 30 Apr 2019 11:12:16 -0700
Subject: [PATCH] net/netvsc: reset mbuf port on VF Rx

[ upstream commit 05bfd4b49184c33cede032b680436dddb0083016 ]

Redo the receive logic to set m->port on packets received on VF.

When using VF, still need to check for packets and completions
arriving on the VMBus path even if application is not doing bursting
(ie n_rx == 0).

Also, fix comment.

Fixes: dc7680e8597c ("net/netvsc: support integrated VF")

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 drivers/net/netvsc/hn_rxtx.c | 47 +++++++++++++++++++++---------------
 1 file changed, 28 insertions(+), 19 deletions(-)

diff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c
index 6b3768a54..5ffc0ee14 100644
--- a/drivers/net/netvsc/hn_rxtx.c
+++ b/drivers/net/netvsc/hn_rxtx.c
@@ -1386,4 +1386,22 @@ fail:
 }
 
+static uint16_t
+hn_recv_vf(uint16_t vf_port, const struct hn_rx_queue *rxq,
+	   struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
+{
+	uint16_t i, n;
+
+	if (unlikely(nb_pkts == 0))
+		return 0;
+
+	n = rte_eth_rx_burst(vf_port, rxq->queue_id, rx_pkts, nb_pkts);
+
+	/* relabel the received mbufs */
+	for (i = 0; i < n; i++)
+		rx_pkts[i]->port = rxq->port_id;
+
+	return n;
+}
+
 uint16_t
 hn_recv_pkts(void *prxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
@@ -1397,28 +1415,19 @@ hn_recv_pkts(void *prxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 		return 0;
 
-	/* Transmit over VF if present and up */
+	/* Receive from VF if present and up */
 	vf_dev = hn_get_vf_dev(hv);
 
-	if (vf_dev && vf_dev->data->dev_started) {
-		/* Normally, with SR-IOV the ring buffer will be empty */
+	/* Check for new completions */
+	if (likely(rte_ring_count(rxq->rx_ring) < nb_pkts))
 		hn_process_events(hv, rxq->queue_id, 0);
 
-		/* Get mbufs some bufs off of staging ring */
-		nb_rcv = rte_ring_sc_dequeue_burst(rxq->rx_ring,
-						   (void **)rx_pkts,
-						   nb_pkts / 2, NULL);
-		/* And rest off of VF */
-		nb_rcv += rte_eth_rx_burst(vf_dev->data->port_id,
-					   rxq->queue_id,
-					   rx_pkts + nb_rcv, nb_pkts - nb_rcv);
-	} else {
-		/* If receive ring is not full then get more */
-		if (rte_ring_count(rxq->rx_ring) < nb_pkts)
-			hn_process_events(hv, rxq->queue_id, 0);
+	/* Always check the vmbus path for multicast and new flows */
+	nb_rcv = rte_ring_sc_dequeue_burst(rxq->rx_ring,
+					   (void **)rx_pkts, nb_pkts, NULL);
 
-		nb_rcv = rte_ring_sc_dequeue_burst(rxq->rx_ring,
-						   (void **)rx_pkts,
-						   nb_pkts, NULL);
-	}
+	/* If VF is available, check that as well */
+	if (vf_dev && vf_dev->data->dev_started)
+		nb_rcv += hn_recv_vf(vf_dev->data->port_id, rxq,
+				     rx_pkts + nb_rcv, nb_pkts - nb_rcv);
 
 	return nb_rcv;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-05-08 16:33:59.080007632 +0100
+++ 0032-net-netvsc-reset-mbuf-port-on-VF-Rx.patch	2019-05-08 16:33:57.447577046 +0100
@@ -1 +1 @@
-From 05bfd4b49184c33cede032b680436dddb0083016 Mon Sep 17 00:00:00 2001
+From 676e771920bc5b1d659c7a7b3ea1aa78a24d4610 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 05bfd4b49184c33cede032b680436dddb0083016 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index c67e9ae25..7856f7e6e 100644
+index 6b3768a54..5ffc0ee14 100644
@@ -26 +27 @@
-@@ -1394,4 +1394,22 @@ fail:
+@@ -1386,4 +1386,22 @@ fail:
@@ -49 +50 @@
-@@ -1405,28 +1423,19 @@ hn_recv_pkts(void *prxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
+@@ -1397,28 +1415,19 @@ hn_recv_pkts(void *prxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)

  parent reply	other threads:[~2019-05-08 16:03 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-08 16:01 [dpdk-stable] patch 'raw/dpaa2_qdma: fix spin lock release' " Kevin Traynor
2019-05-08 16:01 ` [dpdk-stable] patch 'raw/ifpga: fix file descriptor leak in error path' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix spelling reported by aspell in guides' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix spelling reported by aspell in comments' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'examples/multi_process: fix buffer underrun' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'examples/power: fix buffer overrun' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'examples/power: fix json null termination' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'eal: fix formatting of hotplug error message' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: fix memory leak on request failure' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/tap: fix memory leak on IPC request' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: fix send error handling' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: harden message receive' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: handle more invalid parameter cases' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'event/dsw: fix capability flags' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/mlx5: fix comments mixing Rx and Tx' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix interactive commands in testpmd guide' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'app/testpmd: fix help info for interactive commands' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: fix coding style' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: avoid hard-coded length' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: use calloc style where appropriate' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: check length of ring name' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: fix return value check' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/kni: " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'app/testpmd: fix unintentional integer overflow' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/i40e: fix queue number check' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'test/bonding: fix MAC assignment for re-run' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/i40e: fix link speed for X722' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/mlx5: check Tx queue size overflow' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/mlx5: fix max number of queues for NEON Tx' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/tap: fix potential IPC buffer overrun' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/vmxnet3: add VLAN filter capability' " Kevin Traynor
2019-05-08 16:02 ` Kevin Traynor [this message]
2019-05-08 16:02 ` [dpdk-stable] patch 'test: clean remaining trace of devargs autotest' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'eventdev: update references to removed function' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'hash: fix doc about thread/process safety' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix broken link in LPM guide' " Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190508160233.2648-32-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=stable@dpdk.org \
    --cc=sthemmin@microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).