patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Yuanhan Liu <yliu@fridaylinux.org>
To: Ophir Munk <ophirmu@mellanox.com>
Cc: Pascal Mazon <pascal.mazon@6wind.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/tap: fix flow and port commands' has been queued to stable release 17.08.1
Date: Tue, 21 Nov 2017 21:16:24 +0800	[thread overview]
Message-ID: <1511270333-31002-42-git-send-email-yliu@fridaylinux.org> (raw)
In-Reply-To: <1511270333-31002-1-git-send-email-yliu@fridaylinux.org>

Hi,

FYI, your patch has been queued to stable release 17.08.1

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

Thanks.

	--yliu

---
>From 0539ffdd99aec23f551e844aa6067cd08fb375a2 Mon Sep 17 00:00:00 2001
From: Ophir Munk <ophirmu@mellanox.com>
Date: Sat, 16 Sep 2017 22:32:38 +0000
Subject: [PATCH] net/tap: fix flow and port commands

[ upstream commit f46900d03823aff1cb636a2f889caeee99c721b2 ]

This commit fixes two bugs related to tap devices. The first bug occurs
when executing in testpmd the following flow rule assuming tap device has
4 rx and tx pair queues
"flow create 0 ingress pattern eth / end actions queue index 5 / end"
This command will report on success and will print ""Flow rule #0 created"
although it should have failed as queue index number 5 does not exist

The second bug occurs when executing in testpmd "port start all" following
a port configuration. Assuming 1 pair of rx and tx queues an error is
reported: "Fail to start port 0"

Before this commit a fixed max number (16) of rx and tx queue pairs were
created on startup where the file descriptors (fds) of rx and tx pairs were
identical.  As a result in the first bug queue index 5 existed because the
tap device was created with 16 rx and tx queue pairs regardless of the
configured number of queues. In the second bug when tap device was started
tx fd was closed before opening it and executing ioctl() on it. However
closing the sole fd of the device caused ioctl to fail with "No such
device".

This commit creates the configured number of rx and tx queue pairs (up to
max 16) and assigns a unique fd to each queue. It was written to solve the
first bug and was found as the right fix for the second bug as well.

Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD")
Fixes: bf7b7f437b49 ("net/tap: create netdevice during probing")
Fixes: de96fe68ae95 ("net/tap: add basic flow API patterns and actions")

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
---
 drivers/net/tap/rte_eth_tap.c | 139 +++++++++++++++++++++++++++++++-----------
 drivers/net/tap/rte_eth_tap.h |   2 +-
 drivers/net/tap/tap_flow.c    |   3 +-
 3 files changed, 108 insertions(+), 36 deletions(-)

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 9acea83..d926d4b 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -603,8 +603,31 @@ tap_dev_stop(struct rte_eth_dev *dev)
 }
 
 static int
-tap_dev_configure(struct rte_eth_dev *dev __rte_unused)
+tap_dev_configure(struct rte_eth_dev *dev)
 {
+	if (dev->data->nb_rx_queues > RTE_PMD_TAP_MAX_QUEUES) {
+		RTE_LOG(ERR, PMD,
+			"%s: number of rx queues %d exceeds max num of queues %d\n",
+			dev->device->name,
+			dev->data->nb_rx_queues,
+			RTE_PMD_TAP_MAX_QUEUES);
+		return -1;
+	}
+	if (dev->data->nb_tx_queues > RTE_PMD_TAP_MAX_QUEUES) {
+		RTE_LOG(ERR, PMD,
+			"%s: number of tx queues %d exceeds max num of queues %d\n",
+			dev->device->name,
+			dev->data->nb_tx_queues,
+			RTE_PMD_TAP_MAX_QUEUES);
+		return -1;
+	}
+
+	RTE_LOG(INFO, PMD, "%s: %p: TX configured queues number: %u\n",
+	     dev->device->name, (void *)dev, dev->data->nb_tx_queues);
+
+	RTE_LOG(INFO, PMD, "%s: %p: RX configured queues number: %u\n",
+	     dev->device->name, (void *)dev, dev->data->nb_rx_queues);
+
 	return 0;
 }
 
@@ -650,8 +673,8 @@ tap_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	dev_info->if_index = internals->if_index;
 	dev_info->max_mac_addrs = 1;
 	dev_info->max_rx_pktlen = (uint32_t)ETHER_MAX_VLAN_FRAME_LEN;
-	dev_info->max_rx_queues = internals->nb_queues;
-	dev_info->max_tx_queues = internals->nb_queues;
+	dev_info->max_rx_queues = RTE_PMD_TAP_MAX_QUEUES;
+	dev_info->max_tx_queues = RTE_PMD_TAP_MAX_QUEUES;
 	dev_info->min_rx_bufsize = 0;
 	dev_info->pci_dev = NULL;
 	dev_info->speed_capa = tap_dev_speed_capa();
@@ -673,9 +696,9 @@ tap_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *tap_stats)
 	unsigned long rx_nombuf = 0, ierrors = 0;
 	const struct pmd_internals *pmd = dev->data->dev_private;
 
-	imax = (pmd->nb_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS) ?
-		pmd->nb_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS;
-
+	/* rx queue statistics */
+	imax = (dev->data->nb_rx_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS) ?
+		dev->data->nb_rx_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS;
 	for (i = 0; i < imax; i++) {
 		tap_stats->q_ipackets[i] = pmd->rxq[i].stats.ipackets;
 		tap_stats->q_ibytes[i] = pmd->rxq[i].stats.ibytes;
@@ -683,7 +706,13 @@ tap_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *tap_stats)
 		rx_bytes_total += tap_stats->q_ibytes[i];
 		rx_nombuf += pmd->rxq[i].stats.rx_nombuf;
 		ierrors += pmd->rxq[i].stats.ierrors;
+	}
 
+	/* tx queue statistics */
+	imax = (dev->data->nb_tx_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS) ?
+		dev->data->nb_tx_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS;
+
+	for (i = 0; i < imax; i++) {
 		tap_stats->q_opackets[i] = pmd->txq[i].stats.opackets;
 		tap_stats->q_errors[i] = pmd->txq[i].stats.errs;
 		tap_stats->q_obytes[i] = pmd->txq[i].stats.obytes;
@@ -707,7 +736,7 @@ tap_stats_reset(struct rte_eth_dev *dev)
 	int i;
 	struct pmd_internals *pmd = dev->data->dev_private;
 
-	for (i = 0; i < pmd->nb_queues; i++) {
+	for (i = 0; i < RTE_PMD_TAP_MAX_QUEUES; i++) {
 		pmd->rxq[i].stats.ipackets = 0;
 		pmd->rxq[i].stats.ibytes = 0;
 		pmd->rxq[i].stats.ierrors = 0;
@@ -729,11 +758,15 @@ tap_dev_close(struct rte_eth_dev *dev)
 	tap_flow_flush(dev, NULL);
 	tap_flow_implicit_flush(internals, NULL);
 
-	for (i = 0; i < internals->nb_queues; i++) {
-		if (internals->rxq[i].fd != -1)
+	for (i = 0; i < RTE_PMD_TAP_MAX_QUEUES; i++) {
+		if (internals->rxq[i].fd != -1) {
 			close(internals->rxq[i].fd);
-		internals->rxq[i].fd = -1;
-		internals->txq[i].fd = -1;
+			internals->rxq[i].fd = -1;
+		}
+		if (internals->txq[i].fd != -1) {
+			close(internals->txq[i].fd);
+			internals->txq[i].fd = -1;
+		}
 	}
 
 	if (internals->remote_if_index) {
@@ -887,30 +920,57 @@ tap_mac_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 static int
 tap_setup_queue(struct rte_eth_dev *dev,
 		struct pmd_internals *internals,
-		uint16_t qid)
+		uint16_t qid,
+		int is_rx)
 {
+	int *fd;
+	int *other_fd;
+	const char *dir;
 	struct pmd_internals *pmd = dev->data->dev_private;
 	struct rx_queue *rx = &internals->rxq[qid];
 	struct tx_queue *tx = &internals->txq[qid];
-	int fd = rx->fd == -1 ? tx->fd : rx->fd;
 
-	if (fd == -1) {
-		RTE_LOG(INFO, PMD, "Add queue to TAP %s for qid %d\n",
-			pmd->name, qid);
-		fd = tun_alloc(pmd);
-		if (fd < 0) {
+	if (is_rx) {
+		fd = &rx->fd;
+		other_fd = &tx->fd;
+		dir = "rx";
+	} else {
+		fd = &tx->fd;
+		other_fd = &rx->fd;
+		dir = "tx";
+	}
+	if (*fd != -1) {
+		/* fd for this queue already exists */
+		RTE_LOG(DEBUG, PMD, "%s: fd %d for %s queue qid %d exists\n",
+			pmd->name, *fd, dir, qid);
+	} else if (*other_fd != -1) {
+		/* Only other_fd exists. dup it */
+		*fd = dup(*other_fd);
+		if (*fd < 0) {
+			*fd = -1;
+			RTE_LOG(ERR, PMD, "%s: dup() failed.\n",
+				pmd->name);
+			return -1;
+		}
+		RTE_LOG(DEBUG, PMD, "%s: dup fd %d for %s queue qid %d (%d)\n",
+			pmd->name, *other_fd, dir, qid, *fd);
+	} else {
+		/* Both RX and TX fds do not exist (equal -1). Create fd */
+		*fd = tun_alloc(pmd);
+		if (*fd < 0) {
+			*fd = -1; /* restore original value */
 			RTE_LOG(ERR, PMD, "%s: tun_alloc() failed.\n",
 				pmd->name);
 			return -1;
 		}
+		RTE_LOG(DEBUG, PMD, "%s: add %s queue for qid %d fd %d\n",
+			pmd->name, dir, qid, *fd);
 	}
 
-	rx->fd = fd;
-	tx->fd = fd;
 	tx->mtu = &dev->data->mtu;
 	rx->rxmode = &dev->data->dev_conf.rxmode;
 
-	return fd;
+	return *fd;
 }
 
 static int
@@ -932,10 +992,10 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,
 	int fd;
 	int i;
 
-	if ((rx_queue_id >= internals->nb_queues) || !mp) {
+	if (rx_queue_id >= dev->data->nb_rx_queues || !mp) {
 		RTE_LOG(WARNING, PMD,
-			"nb_queues %d too small or mempool NULL\n",
-			internals->nb_queues);
+			"nb_rx_queues %d too small or mempool NULL\n",
+			dev->data->nb_rx_queues);
 		return -1;
 	}
 
@@ -954,7 +1014,7 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,
 	rxq->iovecs = iovecs;
 
 	dev->data->rx_queues[rx_queue_id] = rxq;
-	fd = tap_setup_queue(dev, internals, rx_queue_id);
+	fd = tap_setup_queue(dev, internals, rx_queue_id, 1);
 	if (fd == -1) {
 		ret = fd;
 		goto error;
@@ -1002,11 +1062,11 @@ tap_tx_queue_setup(struct rte_eth_dev *dev,
 	struct pmd_internals *internals = dev->data->dev_private;
 	int ret;
 
-	if (tx_queue_id >= internals->nb_queues)
+	if (tx_queue_id >= dev->data->nb_tx_queues)
 		return -1;
 
 	dev->data->tx_queues[tx_queue_id] = &internals->txq[tx_queue_id];
-	ret = tap_setup_queue(dev, internals, tx_queue_id);
+	ret = tap_setup_queue(dev, internals, tx_queue_id, 0);
 	if (ret == -1)
 		return -1;
 
@@ -1166,7 +1226,6 @@ static const struct eth_dev_ops ops = {
 	.filter_ctrl            = tap_dev_filter_ctrl,
 };
 
-
 static int
 eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
 		   char *remote_iface, int fixed_mac_type)
@@ -1193,8 +1252,8 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
 	}
 
 	pmd = dev->data->dev_private;
+	pmd->dev = dev;
 	snprintf(pmd->name, sizeof(pmd->name), "%s", tap_name);
-	pmd->nb_queues = RTE_PMD_TAP_MAX_QUEUES;
 
 	pmd->ioctl_sock = socket(AF_INET, SOCK_DGRAM, 0);
 	if (pmd->ioctl_sock == -1) {
@@ -1212,8 +1271,9 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
 
 	data->dev_link = pmd_link;
 	data->mac_addrs = &pmd->eth_addr;
-	data->nb_rx_queues = pmd->nb_queues;
-	data->nb_tx_queues = pmd->nb_queues;
+	/* Set the number of RX and TX queues */
+	data->nb_rx_queues = 0;
+	data->nb_tx_queues = 0;
 
 	dev->data = data;
 	dev->dev_ops = &ops;
@@ -1241,7 +1301,11 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
 	}
 
 	/* Immediately create the netdevice (this will create the 1st queue). */
-	if (tap_setup_queue(dev, pmd, 0) == -1)
+	/* rx queue */
+	if (tap_setup_queue(dev, pmd, 0, 1) == -1)
+		goto error_exit;
+	/* tx queue */
+	if (tap_setup_queue(dev, pmd, 0, 0) == -1)
 		goto error_exit;
 
 	ifr.ifr_mtu = dev->data->mtu;
@@ -1515,9 +1579,16 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev)
 		tap_flow_implicit_flush(internals, NULL);
 		nl_final(internals->nlsk_fd);
 	}
-	for (i = 0; i < internals->nb_queues; i++)
-		if (internals->rxq[i].fd != -1)
+	for (i = 0; i < RTE_PMD_TAP_MAX_QUEUES; i++) {
+		if (internals->rxq[i].fd != -1) {
 			close(internals->rxq[i].fd);
+			internals->rxq[i].fd = -1;
+		}
+		if (internals->txq[i].fd != -1) {
+			close(internals->txq[i].fd);
+			internals->txq[i].fd = -1;
+		}
+	}
 
 	close(internals->ioctl_sock);
 	rte_free(eth_dev->data->dev_private);
diff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h
index 928a045..829f32f 100644
--- a/drivers/net/tap/rte_eth_tap.h
+++ b/drivers/net/tap/rte_eth_tap.h
@@ -80,9 +80,9 @@ struct tx_queue {
 };
 
 struct pmd_internals {
+	struct rte_eth_dev *dev;          /* Ethernet device. */
 	char remote_iface[RTE_ETH_NAME_MAX_LEN]; /* Remote netdevice name */
 	char name[RTE_ETH_NAME_MAX_LEN];  /* Internal Tap device name */
-	uint16_t nb_queues;               /* Number of queues supported */
 	struct ether_addr eth_addr;       /* Mac address of the device port */
 	struct ifreq remote_initial_flags;   /* Remote netdevice flags on init */
 	int remote_if_index;              /* remote netdevice IF_INDEX */
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index 41f7345..aa33960 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -1092,7 +1092,8 @@ priv_flow_process(struct pmd_internals *pmd,
 			if (action)
 				goto exit_action_not_supported;
 			action = 1;
-			if (!queue || (queue->index >= pmd->nb_queues))
+			if (!queue ||
+			    (queue->index > pmd->dev->data->nb_rx_queues - 1))
 				goto exit_action_not_supported;
 			if (flow)
 				err = add_action_skbedit(flow, queue->index);
-- 
2.7.4

  parent reply	other threads:[~2017-11-21 13:22 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21 13:15 [dpdk-stable] patch 'gro: fix typo in map file' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'service: fix build with gcc 4.9' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'eal: initialize logging before bus' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'ethdev: fix ABI version' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net: fix inner L2 length in packet type parser' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'vfio: fix close unchecked file descriptor' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'eal: fix auxv open check for ARM and PPC' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/ixgbe: fix MAC VLAN filter fail problem' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/i40e: fix flow control watermark mismatch' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/nfp: fix RSS' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/nfp: fix Rx interrupt when multiqueue' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/i40e: fix PF notify issue when VF is not up' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/failsafe: fix Tx sub device deactivating' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/ixgbe: fix mapping of user priority to TC' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/mlx5: fix locking in xstats functions' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/enic: fix possible null pointer dereference' " Yuanhan Liu
2017-11-21 13:15 ` [dpdk-stable] patch 'net/qede: " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/failsafe: fix parameters parsing' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix interrupt throttling setting in PF' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/failsafe: fix failsafe bus uninit return value' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/sfc: specify correct scale table size on Rx start' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix VF device stop issue' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix clang build' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix probe failure report' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/failsafe: fix errno set on command execution' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/sfc: fix unused variable in RSS-agnostic build' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/sfc/base: fix default RSS context check on Siena' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/failsafe: fix adding MAC error report miss' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix tunnel offload detection' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/cxgbe: fix memory leak' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/ixgbe: fix adding a mirror rule' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/vmxnet3: fix MAC address set' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix memory leak if VF init fails' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix i40evf MAC filter table' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix calculating TSO inline size' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix num seg assumption in SSE Tx' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix Tx stats error counter definition' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix Tx stats error counter logic' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix packet count for PF' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bonding: fix slaves capacity check' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'test: fix assignment operation' " Yuanhan Liu
2017-11-21 13:16 ` Yuanhan Liu [this message]
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix TSO segment size verification' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/liquidio: fix uninitialized variable' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/igb: fix memcpy length' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix variable assignment' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/qede/base: fix to use a passed ptt handle' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/tap: fix unregistering callback with invalid fd' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/vmxnet3: fix unintentional integer overflow' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/enic: fix multi-process operation' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix clear xstats bug in VF' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'app/testpmd: fix packet throughput after stats reset' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix assignment of enum values' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/i40e: fix mirror rule reset when port is closed' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix HWRM macros and locking' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: use 64-bits of address for VLAN table' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix an issue with group id calculation' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix calculation of number of pools' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: handle multi queue mode properly' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix Rx handling and buffer allocation logic' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix an issue with broadcast traffic' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix usage of VMDq flags' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: set checksum offload flags correctly' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: update status of Rx IP/L4 CKSUM' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix config RSS update' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: set the hash key size' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix per queue stats display in xstats' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix interrupt handler' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/vmxnet3: fix dereference before null check' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bonding: support bifurcated driver in eal' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix number of MAC addresses for VMDq' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/mlx5: fix overflow of Rx SW ring' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/bnxt: fix compilation with -Og' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/qede: " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'app/test-crypto-perf: fix memory leak' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'app/test-crypto-perf: fix compilation with -Og' " Yuanhan Liu
2017-11-21 13:16 ` [dpdk-stable] patch 'net/dpaa2: fix the Tx handling of non HW pool bufs' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'kni: fix SLE version detection' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'hash: fix eviction counter' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'mem: fix malloc debug config' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'mem: fix malloc element free in debug mode' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'eal: copy raw strings taken from command line' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: revert not claiming LRO support' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: revert not claiming IP checksum offload' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: fix log levels in configure' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: fix mbuf port for simple Rx function' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: fix queue setup consistency' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: fix untrusted scalar value' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'vhost: fix dereferencing invalid pointer after realloc' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio-user: fix TAP name string termination' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'vhost: check poll error code' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'timer: use 64-bit specific code on more platforms' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: fix compilation with -Og' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/ark: fix loop counter' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/qede/base: fix return code to align with FW' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/testpmd: fix DDP package filesize detection' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/testpmd: fix invalid port id parameters' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/testpmd: fix forward port ids setting' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/testpmd: fix quitting in container' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/mlx5: fix SSE Rx support verification' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/mlx5: fix clang compilation error' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/enic: fix assignment' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/i40e: fix uninitialized variable' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/bnxt: fix the association of a MACVLAN per VNIC' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/ixgbe: fix Rx queue interrupt mapping in VF' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/ixgbe: fix VFIO " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'ethdev: revert use port name from device structure' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/ixgbe: fix uninitialized variable' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/l2fwd-crypto: fix uninitialized errno value' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/crypto-perf: " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'crypto/aesni_gcm: fix zero data operation' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'crypto/aesni_mb: fix invalid session error' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'test/crypto: fix dpaa2 sec macros and definitions' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/crypto-perf: fix packet length check' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'app/crypto-perf: parse AEAD data from vectors' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'crypto/openssl: fix AEAD parameters' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'drivers/crypto: use snprintf return value correctly' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/i40e: fix flexible payload configuration' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/i40e: fix mbuf free in vector Tx' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/i40e: fix VF initialization error' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/l2fwd_fork: fix message pool init' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'vfio: fix secondary process initialization' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: flush Rx queues on start' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: check error on setting non block flag' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'net/virtio: fix Tx packet length stats' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'igb_uio: remove device reset in open' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/qos_sched: fix uninitialized config' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/vhost_scsi: fix product id string termination' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'crypto/dpaa2_sec: remove ICV memset on decryption side' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'crypto/dpaa2_sec: add check for segmented buffer' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix IP version check' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'cryptodev: fix build with -Ofast' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix IPv6 payload length' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix crypto device mapping' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix session creation' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix AAD length setting' " Yuanhan Liu
2017-11-21 13:17 ` [dpdk-stable] patch 'examples/l2fwd-crypto: fix physical address " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'crypto/qat: fix HMAC supported digest sizes' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix TM node parameter checking' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix TM level capability getting' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/ixgbe: fix TM node parameter checking' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/ixgbe: fix TM level capability getting' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix not supporting NULL TM profile' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/ixgbe: " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix parent when adding TM node' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/qede: fix supported packet types' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/qede: fix to re-enable LRO during device start' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/failsafe: fix PCI devices init' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'app/testpmd: fix RSS structure initialisation' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/enic: fix packet loss after MTU change' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/ixgbe: fix PF DCB info' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'app/testpmd: fix mapping of user priority to DCB TC' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/mlx5: fix packet type flags for Ethernet only frame' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'app/testpmd: fix build without ixgbe and bnxt PMDs' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix Tx offload capability' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix Rx " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: handle Rx multi queue creation properly' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: remove redundant code parsing pool map' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix a bit shift operation' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix a potential null pointer dereference' " Yuanhan Liu
2017-11-21 13:18 ` Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix a pointer deref before null check' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix an unused value' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: check VLANs from pool map only for VMDq' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bonding: fix check slaves link properties' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'eal/x86: fix atomic cmpset' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'examples/multi_process: fix received message length' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'lpm6: fix compilation with -Og' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/failsafe: fix Rx clean race' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: do not set hash type unnecessarily' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix mirror with firmware 6.0' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bnxt: fix VLAN spoof configuration' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix Rx packets number for NEON' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/bonding: fix default aggregator mode to stable' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/dpaa2: set queues after reconfiguration' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/enic: fix TSO for packets greater than 9208 bytes' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/vmxnet3: fix memory leak when releasing queues' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/ixgbe: fix filter parser for L2 tunnel' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/i40e: fix VFIO interrupt mapping in VF' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/failsafe: fix VLAN stripping configuration' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'examples/l3fwd: fix NEON instructions' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'examples/l3fwd: fix aliasing in port grouping' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/igb: fix Rx interrupt with VFIO and MSI-X' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/kni: remove driver struct forward declaration' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/pcap: fix memory leak in dumper open' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'app/testpmd: fix forwarding between non consecutive ports' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'app/testpmd: fix topology error message' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/mlx5: fix tunneled TCP/UDP packet type' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/qede: remove duplicate includes' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/qede/base: fix division by zero' " Yuanhan Liu
2017-11-21 13:18 ` [dpdk-stable] patch 'net/qede: fix icc build' " Yuanhan Liu

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=1511270333-31002-42-git-send-email-yliu@fridaylinux.org \
    --to=yliu@fridaylinux.org \
    --cc=ophirmu@mellanox.com \
    --cc=pascal.mazon@6wind.com \
    --cc=stable@dpdk.org \
    /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).