[v3,10/14] net/ppfe: add supported packet types and basic statistics

Message ID 20191001110209.6047-11-g.singh@nxp.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series introduces ppfe network PMD |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Gagandeep Singh Oct. 1, 2019, 11:02 a.m. UTC
  This patch add support for supported packet types
by the platform andbasic statistics like
numbers of packets/bytes receive and transmit.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 doc/guides/nics/features/ppfe.ini |  2 ++
 doc/guides/nics/ppfe.rst          |  2 ++
 drivers/net/ppfe/ppfe_ethdev.c    | 43 +++++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+)
  

Patch

diff --git a/doc/guides/nics/features/ppfe.ini b/doc/guides/nics/features/ppfe.ini
index 4e38ffd24..9184539c1 100644
--- a/doc/guides/nics/features/ppfe.ini
+++ b/doc/guides/nics/features/ppfe.ini
@@ -6,6 +6,8 @@ 
 [Features]
 L3 checksum offload  = Y
 L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
 Linux VFIO           = Y
 ARMv8                = Y
 Usage doc            = Y
diff --git a/doc/guides/nics/ppfe.rst b/doc/guides/nics/ppfe.rst
index c95525e5b..a91585112 100644
--- a/doc/guides/nics/ppfe.rst
+++ b/doc/guides/nics/ppfe.rst
@@ -94,6 +94,8 @@  PPFE Features
 ~~~~~~~~~~~~~~
 
 - L3/L4 checksum offload
+- Packet type parsing
+- Basic stats
 - ARMv8
 
 Supported PPFE SoCs
diff --git a/drivers/net/ppfe/ppfe_ethdev.c b/drivers/net/ppfe/ppfe_ethdev.c
index 8ed40c261..bf40ee402 100644
--- a/drivers/net/ppfe/ppfe_ethdev.c
+++ b/drivers/net/ppfe/ppfe_ethdev.c
@@ -518,6 +518,47 @@  pfe_tx_queue_setup(struct rte_eth_dev *dev,
 	return 0;
 }
 
+static const uint32_t *
+pfe_supported_ptypes_get(struct rte_eth_dev *dev)
+{
+	static const uint32_t ptypes[] = {
+		/*todo -= add more types */
+		RTE_PTYPE_L2_ETHER,
+		RTE_PTYPE_L3_IPV4,
+		RTE_PTYPE_L3_IPV4_EXT,
+		RTE_PTYPE_L3_IPV6,
+		RTE_PTYPE_L3_IPV6_EXT,
+		RTE_PTYPE_L4_TCP,
+		RTE_PTYPE_L4_UDP,
+		RTE_PTYPE_L4_SCTP
+	};
+
+	if (dev->rx_pkt_burst == pfe_recv_pkts ||
+			dev->rx_pkt_burst == pfe_recv_pkts_on_intr)
+		return ptypes;
+	return NULL;
+}
+
+static int
+pfe_stats_get(struct rte_eth_dev *dev,
+	      struct rte_eth_stats *stats)
+{
+	struct pfe_eth_priv_s *priv = dev->data->dev_private;
+	struct rte_eth_stats *eth_stats = &priv->stats;
+
+	if (stats == NULL)
+		return -1;
+
+	memset(stats, 0, sizeof(struct rte_eth_stats));
+
+	stats->ipackets = eth_stats->ipackets;
+	stats->ibytes = eth_stats->ibytes;
+	stats->opackets = eth_stats->opackets;
+	stats->obytes = eth_stats->obytes;
+
+	return 0;
+}
+
 static const struct eth_dev_ops ops = {
 	.dev_start = pfe_eth_open,
 	.dev_stop = pfe_eth_stop,
@@ -528,6 +569,8 @@  static const struct eth_dev_ops ops = {
 	.rx_queue_release  = pfe_rx_queue_release,
 	.tx_queue_setup = pfe_tx_queue_setup,
 	.tx_queue_release  = pfe_tx_queue_release,
+	.dev_supported_ptypes_get = pfe_supported_ptypes_get,
+	.stats_get            = pfe_stats_get,
 };
 
 static int