DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev]  [PATCH 0/2] net/thunderx: add 83xx SoC support
@ 2016-11-08  6:31 Jerin Jacob
  2016-11-08  6:31 ` [dpdk-dev] [PATCH 1/2] net/thunderx: disable l3 alignment pad feature Jerin Jacob
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Jerin Jacob @ 2016-11-08  6:31 UTC (permalink / raw)
  To: dev; +Cc: thomas.monjalon, bruce.richardson, Jerin Jacob

CN83xx is 24 core version of ThunderX ARMv8 SoC with integrated
octeon style packet and crypto accelerators.

The standard NIC block used in 88xx/81xx also included in 83xx.
This patchset adds support for existing standard NIC block on 83xx by
adding new HW capability flag to select the difference in runtime.

Jerin Jacob (2):
  net/thunderx: disable l3 alignment pad feature
  net/thunderx: add cn83xx support

 doc/guides/nics/thunderx.rst              |  1 +
 drivers/net/thunderx/base/nicvf_hw.c      | 22 ++++++++++++++++++++++
 drivers/net/thunderx/base/nicvf_hw.h      |  5 +++++
 drivers/net/thunderx/base/nicvf_hw_defs.h |  2 ++
 drivers/net/thunderx/nicvf_ethdev.c       | 17 +++++++++++++++++
 5 files changed, 47 insertions(+)

-- 
2.5.5

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH 1/2] net/thunderx: disable l3 alignment pad feature
  2016-11-08  6:31 [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Jerin Jacob
@ 2016-11-08  6:31 ` Jerin Jacob
  2016-11-08  6:31 ` [dpdk-dev] [PATCH 2/2] net/thunderx: add cn83xx support Jerin Jacob
  2016-11-10 23:44 ` [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Thomas Monjalon
  2 siblings, 0 replies; 4+ messages in thread
From: Jerin Jacob @ 2016-11-08  6:31 UTC (permalink / raw)
  To: dev; +Cc: thomas.monjalon, bruce.richardson, Jerin Jacob

Based on the packet type(IPv4 or IPv6), the nicvf HW aligns
L3 data to the 64bit memory address.
The alignment creates a hole in mbuf(between the
end of headroom and packet data start).
The new revision of the HW provides an option to disable
the L3 alignment feature and make mbuf layout looks
more like other NICs. For better application compatibility,
disabling l3 alignment feature on the hardware revisions it supports.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 drivers/net/thunderx/base/nicvf_hw.c      | 18 ++++++++++++++++++
 drivers/net/thunderx/base/nicvf_hw.h      |  4 ++++
 drivers/net/thunderx/base/nicvf_hw_defs.h |  2 ++
 drivers/net/thunderx/nicvf_ethdev.c       | 10 ++++++++++
 4 files changed, 34 insertions(+)

diff --git a/drivers/net/thunderx/base/nicvf_hw.c b/drivers/net/thunderx/base/nicvf_hw.c
index 1f08ef2..a69cd02 100644
--- a/drivers/net/thunderx/base/nicvf_hw.c
+++ b/drivers/net/thunderx/base/nicvf_hw.c
@@ -725,6 +725,24 @@ nicvf_vlan_hw_strip(struct nicvf *nic, bool enable)
 }
 
 void
+nicvf_apad_config(struct nicvf *nic, bool enable)
+{
+	uint64_t val;
+
+	/* APAD always enabled in this device */
+	if (!(nic->hwcap & NICVF_CAP_DISABLE_APAD))
+		return;
+
+	val = nicvf_reg_read(nic, NIC_VNIC_RQ_GEN_CFG);
+	if (enable)
+		val &= ~(1ULL << NICVF_QS_RQ_DIS_APAD_SHIFT);
+	else
+		val |= (1ULL << NICVF_QS_RQ_DIS_APAD_SHIFT);
+
+	nicvf_reg_write(nic, NIC_VNIC_RQ_GEN_CFG, val);
+}
+
+void
 nicvf_rss_set_key(struct nicvf *nic, uint8_t *key)
 {
 	int idx;
diff --git a/drivers/net/thunderx/base/nicvf_hw.h b/drivers/net/thunderx/base/nicvf_hw.h
index 2b8738b..cf68be9 100644
--- a/drivers/net/thunderx/base/nicvf_hw.h
+++ b/drivers/net/thunderx/base/nicvf_hw.h
@@ -54,6 +54,8 @@
 #define NICVF_CAP_TUNNEL_PARSING	(1ULL << 0)
 /* Additional word in Rx descriptor to hold optional tunneling extension info */
 #define NICVF_CAP_CQE_RX2		(1ULL << 1)
+/* The device capable of setting NIC_CQE_RX_S[APAD] == 0 */
+#define NICVF_CAP_DISABLE_APAD		(1ULL << 2)
 
 enum nicvf_tns_mode {
 	NIC_TNS_BYPASS_MODE,
@@ -217,6 +219,8 @@ uint32_t nicvf_qsize_sq_roundup(uint32_t val);
 
 void nicvf_vlan_hw_strip(struct nicvf *nic, bool enable);
 
+void nicvf_apad_config(struct nicvf *nic, bool enable);
+
 int nicvf_rss_config(struct nicvf *nic, uint32_t  qcnt, uint64_t cfg);
 int nicvf_rss_term(struct nicvf *nic);
 
diff --git a/drivers/net/thunderx/base/nicvf_hw_defs.h b/drivers/net/thunderx/base/nicvf_hw_defs.h
index e144d44..00dd2fe 100644
--- a/drivers/net/thunderx/base/nicvf_hw_defs.h
+++ b/drivers/net/thunderx/base/nicvf_hw_defs.h
@@ -105,6 +105,8 @@
 #define NICVF_INTR_MBOX_SHIFT           22
 #define NICVF_INTR_QS_ERR_SHIFT         23
 
+#define NICVF_QS_RQ_DIS_APAD_SHIFT      22
+
 #define NICVF_INTR_CQ_MASK              (0xFF << NICVF_INTR_CQ_SHIFT)
 #define NICVF_INTR_SQ_MASK              (0xFF << NICVF_INTR_SQ_SHIFT)
 #define NICVF_INTR_RBDR_MASK            (0x03 << NICVF_INTR_RBDR_SHIFT)
diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
index 094c5d5..501c8c2 100644
--- a/drivers/net/thunderx/nicvf_ethdev.c
+++ b/drivers/net/thunderx/nicvf_ethdev.c
@@ -1527,6 +1527,16 @@ nicvf_vf_start(struct rte_eth_dev *dev, struct nicvf *nic, uint32_t rbdrsz)
 	/* Configure VLAN Strip */
 	nicvf_vlan_hw_strip(nic, dev->data->dev_conf.rxmode.hw_vlan_strip);
 
+	/* Based on the packet type(IPv4 or IPv6), the nicvf HW aligns L3 data
+	 * to the 64bit memory address.
+	 * The alignment creates a hole in mbuf(between the end of headroom and
+	 * packet data start). The new revision of the HW provides an option to
+	 * disable the L3 alignment feature and make mbuf layout looks
+	 * more like other NICs. For better application compatibility, disabling
+	 * l3 alignment feature on the hardware revisions it supports
+	 */
+	nicvf_apad_config(nic, false);
+
 	/* Get queue ranges for this VF */
 	nicvf_tx_range(dev, nic, &tx_start, &tx_end);
 
-- 
2.5.5

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dpdk-dev]  [PATCH 2/2] net/thunderx: add cn83xx support
  2016-11-08  6:31 [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Jerin Jacob
  2016-11-08  6:31 ` [dpdk-dev] [PATCH 1/2] net/thunderx: disable l3 alignment pad feature Jerin Jacob
@ 2016-11-08  6:31 ` Jerin Jacob
  2016-11-10 23:44 ` [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Thomas Monjalon
  2 siblings, 0 replies; 4+ messages in thread
From: Jerin Jacob @ 2016-11-08  6:31 UTC (permalink / raw)
  To: dev; +Cc: thomas.monjalon, bruce.richardson, Jerin Jacob

83xx NIC subsystem differs in new PCI subsystem_device_id and
NICVF_CAP_DISABLE_APAD capability.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 doc/guides/nics/thunderx.rst         | 1 +
 drivers/net/thunderx/base/nicvf_hw.c | 4 ++++
 drivers/net/thunderx/base/nicvf_hw.h | 1 +
 drivers/net/thunderx/nicvf_ethdev.c  | 7 +++++++
 4 files changed, 13 insertions(+)

diff --git a/doc/guides/nics/thunderx.rst b/doc/guides/nics/thunderx.rst
index 9763bb6..187c9a4 100644
--- a/doc/guides/nics/thunderx.rst
+++ b/doc/guides/nics/thunderx.rst
@@ -62,6 +62,7 @@ Supported ThunderX SoCs
 -----------------------
 - CN88xx
 - CN81xx
+- CN83xx
 
 Prerequisites
 -------------
diff --git a/drivers/net/thunderx/base/nicvf_hw.c b/drivers/net/thunderx/base/nicvf_hw.c
index a69cd02..04b3b69 100644
--- a/drivers/net/thunderx/base/nicvf_hw.c
+++ b/drivers/net/thunderx/base/nicvf_hw.c
@@ -146,6 +146,10 @@ nicvf_base_init(struct nicvf *nic)
 	if (nicvf_hw_version(nic) == PCI_SUB_DEVICE_ID_CN81XX_NICVF)
 		nic->hwcap |= NICVF_CAP_TUNNEL_PARSING | NICVF_CAP_CQE_RX2;
 
+	if (nicvf_hw_version(nic) == PCI_SUB_DEVICE_ID_CN83XX_NICVF)
+		nic->hwcap |= NICVF_CAP_TUNNEL_PARSING | NICVF_CAP_CQE_RX2 |
+				NICVF_CAP_DISABLE_APAD;
+
 	return NICVF_OK;
 }
 
diff --git a/drivers/net/thunderx/base/nicvf_hw.h b/drivers/net/thunderx/base/nicvf_hw.h
index cf68be9..14fb2fe 100644
--- a/drivers/net/thunderx/base/nicvf_hw.h
+++ b/drivers/net/thunderx/base/nicvf_hw.h
@@ -43,6 +43,7 @@
 #define	PCI_SUB_DEVICE_ID_CN88XX_PASS1_NICVF		0xA11E
 #define	PCI_SUB_DEVICE_ID_CN88XX_PASS2_NICVF		0xA134
 #define	PCI_SUB_DEVICE_ID_CN81XX_NICVF			0xA234
+#define	PCI_SUB_DEVICE_ID_CN83XX_NICVF			0xA334
 
 #define NICVF_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
 
diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
index 501c8c2..466e49c 100644
--- a/drivers/net/thunderx/nicvf_ethdev.c
+++ b/drivers/net/thunderx/nicvf_ethdev.c
@@ -2097,6 +2097,13 @@ static const struct rte_pci_id pci_id_nicvf_map[] = {
 		.subsystem_device_id = PCI_SUB_DEVICE_ID_CN81XX_NICVF,
 	},
 	{
+		.class_id = RTE_CLASS_ANY_ID,
+		.vendor_id = PCI_VENDOR_ID_CAVIUM,
+		.device_id = PCI_DEVICE_ID_THUNDERX_NICVF,
+		.subsystem_vendor_id = PCI_VENDOR_ID_CAVIUM,
+		.subsystem_device_id = PCI_SUB_DEVICE_ID_CN83XX_NICVF,
+	},
+	{
 		.vendor_id = 0,
 	},
 };
-- 
2.5.5

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support
  2016-11-08  6:31 [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Jerin Jacob
  2016-11-08  6:31 ` [dpdk-dev] [PATCH 1/2] net/thunderx: disable l3 alignment pad feature Jerin Jacob
  2016-11-08  6:31 ` [dpdk-dev] [PATCH 2/2] net/thunderx: add cn83xx support Jerin Jacob
@ 2016-11-10 23:44 ` Thomas Monjalon
  2 siblings, 0 replies; 4+ messages in thread
From: Thomas Monjalon @ 2016-11-10 23:44 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, bruce.richardson

2016-11-08 12:01, Jerin Jacob:
> CN83xx is 24 core version of ThunderX ARMv8 SoC with integrated
> octeon style packet and crypto accelerators.
> 
> The standard NIC block used in 88xx/81xx also included in 83xx.
> This patchset adds support for existing standard NIC block on 83xx by
> adding new HW capability flag to select the difference in runtime.
> 
> Jerin Jacob (2):
>   net/thunderx: disable l3 alignment pad feature
>   net/thunderx: add cn83xx support

Applied, thanks

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-10 23:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-08  6:31 [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Jerin Jacob
2016-11-08  6:31 ` [dpdk-dev] [PATCH 1/2] net/thunderx: disable l3 alignment pad feature Jerin Jacob
2016-11-08  6:31 ` [dpdk-dev] [PATCH 2/2] net/thunderx: add cn83xx support Jerin Jacob
2016-11-10 23:44 ` [dpdk-dev] [PATCH 0/2] net/thunderx: add 83xx SoC support Thomas Monjalon

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).