DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH 00/13] improve the modularization of NFP PMD
@ 2023-09-20 11:34 Chaoyong He
  2023-09-20 11:34 ` [PATCH 01/13] net/nfp: make sure header file is self-containing Chaoyong He
                   ` (13 more replies)
  0 siblings, 14 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

This patch series aims to improve the modularization of NFP PMD through:
* Make the header files self-containing by adding the correct include
  statement.
* Try to keep the interface of modules as small as possible.
* Remove the unneeded include statements to make sure a clean dependent
  relations among modules.

Chaoyong He (13):
  net/nfp: make sure header file is self-containing
  net/nfp: improve modularazation of rxtx module
  net/nfp: improve modularazation of nfd3 module
  net/nfp: improve modularazation of nfdk module
  net/nfp: improve modularazation of common module
  net/nfp: improve modularazation of flower module
  net/nfp: improve modularazation of flower representor module
  net/nfp: improve modularazation of flower ctrl module
  net/nfp: improve modularazation of flower cmsg module
  net/nfp: improve modularazation of flow module
  net/nfp: improve modularazation of meter module
  net/nfp: improve modularazation of CPP bridge module
  net/nfp: cleanup the include statement of PMD

 drivers/net/nfp/flower/nfp_flower.c           |  22 +--
 drivers/net/nfp/flower/nfp_flower.h           |   2 +
 drivers/net/nfp/flower/nfp_flower_cmsg.c      |  11 +-
 drivers/net/nfp/flower/nfp_flower_cmsg.h      |  77 +++++++-
 drivers/net/nfp/flower/nfp_flower_ctrl.c      |  13 +-
 drivers/net/nfp/flower/nfp_flower_ctrl.h      |   2 +
 .../net/nfp/flower/nfp_flower_representor.c   |  29 +--
 .../net/nfp/flower/nfp_flower_representor.h   |  14 --
 drivers/net/nfp/nfd3/nfp_nfd3.h               |  89 +--------
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c            |  96 +++++++++-
 drivers/net/nfp/nfdk/nfp_nfdk.h               |  71 +------
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c            |  81 +++++++-
 drivers/net/nfp/nfp_common.c                  |  51 ++---
 drivers/net/nfp/nfp_common.h                  |  34 +---
 drivers/net/nfp/nfp_cpp_bridge.c              |  14 +-
 drivers/net/nfp/nfp_cpp_bridge.h              |   8 -
 drivers/net/nfp/nfp_ctrl.h                    |   2 +
 drivers/net/nfp/nfp_ethdev.c                  |  25 +--
 drivers/net/nfp/nfp_ethdev_vf.c               |   9 +-
 drivers/net/nfp/nfp_flow.c                    |  88 ++++++++-
 drivers/net/nfp/nfp_flow.h                    |  78 +-------
 drivers/net/nfp/nfp_mtr.c                     |  16 +-
 drivers/net/nfp/nfp_mtr.h                     |  70 +------
 drivers/net/nfp/nfp_rxtx.c                    | 174 +++++++++++++++++-
 drivers/net/nfp/nfp_rxtx.h                    | 168 +----------------
 drivers/net/nfp/nfpcore/nfp_platform.h        |   2 +
 26 files changed, 579 insertions(+), 667 deletions(-)

-- 
2.39.1


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

* [PATCH 01/13] net/nfp: make sure header file is self-containing
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 02/13] net/nfp: improve modularazation of rxtx module Chaoyong He
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make sure the header file 'nfp_ctrl.h' is self-containing by including
'stdint.h' header files to access the size specific integer types.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfp_ctrl.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h
index 7007548447..53727992a9 100644
--- a/drivers/net/nfp/nfp_ctrl.h
+++ b/drivers/net/nfp/nfp_ctrl.h
@@ -6,6 +6,8 @@
 #ifndef _NFP_CTRL_H_
 #define _NFP_CTRL_H_
 
+#include <stdint.h>
+
 /*
  * Configuration BAR size.
  *
-- 
2.39.1


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

* [PATCH 02/13] net/nfp: improve modularazation of rxtx module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
  2023-09-20 11:34 ` [PATCH 01/13] net/nfp: make sure header file is self-containing Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 03/13] net/nfp: improve modularazation of nfd3 module Chaoyong He
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Try to keep the API small by move the logic which need not expose from
header file to source file verbatim and move the macro to the right
header file.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c     |   1 +
 drivers/net/nfp/nfp_rxtx.c             | 173 ++++++++++++++++++++++++-
 drivers/net/nfp/nfp_rxtx.h             | 168 +-----------------------
 drivers/net/nfp/nfpcore/nfp_platform.h |   2 +
 4 files changed, 173 insertions(+), 171 deletions(-)

diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index 48a74d109a..97002eed23 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -11,6 +11,7 @@
 #include "../nfp_common.h"
 #include "../nfp_rxtx.h"
 #include "../nfpcore/nfp_mip.h"
+#include "../nfpcore/nfp_platform.h"
 #include "../nfpcore/nfp_rtsym.h"
 #include "../flower/nfp_flower.h"
 #include "../flower/nfp_flower_cmsg.h"
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 1b8bb3471d..eeca193d14 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -5,19 +5,180 @@
  * Small portions derived from code Copyright(c) 2010-2015 Intel Corporation.
  */
 
-#include <ethdev_driver.h>
+#include "nfp_rxtx.h"
+
 #include <ethdev_pci.h>
 
 #include "nfp_common.h"
-#include "nfp_ctrl.h"
-#include "nfp_rxtx.h"
-#include "nfp_logs.h"
 #include "nfd3/nfp_nfd3.h"
 #include "nfdk/nfp_nfdk.h"
-#include "nfpcore/nfp_mip.h"
-#include "nfpcore/nfp_rtsym.h"
 #include "flower/nfp_flower.h"
 
+#include "nfp_logs.h"
+
+/* Maximum number of supported VLANs in parsed form packet metadata. */
+#define NFP_META_MAX_VLANS       2
+
+/*
+ * struct nfp_meta_parsed - Record metadata parsed from packet
+ *
+ * Parsed NFP packet metadata are recorded in this struct. The content is
+ * read-only after it have been recorded during parsing by nfp_net_parse_meta().
+ *
+ * @port_id: Port id value
+ * @hash: RSS hash value
+ * @hash_type: RSS hash type
+ * @vlan_layer: The layers of VLAN info which are passed from nic.
+ *              Only this number of entries of the @vlan array are valid.
+ *
+ * @vlan: Holds information parses from NFP_NET_META_VLAN. The inner most vlan
+ *        starts at position 0 and only @vlan_layer entries contain valid
+ *        information.
+ *
+ *        Currently only 2 layers of vlan are supported,
+ *        vlan[0] - vlan strip info
+ *        vlan[1] - qinq strip info
+ *
+ * @vlan.offload:  Flag indicates whether VLAN is offloaded
+ * @vlan.tpid: Vlan TPID
+ * @vlan.tci: Vlan TCI including PCP + Priority + VID
+ */
+struct nfp_meta_parsed {
+	uint32_t port_id;
+	uint32_t hash;
+	uint8_t hash_type;
+	uint8_t vlan_layer;
+	struct {
+		uint8_t offload;
+		uint8_t tpid;
+		uint16_t tci;
+	} vlan[NFP_META_MAX_VLANS];
+};
+
+/*
+ * The bit format and map of nfp packet type for rxd.offload_info in Rx descriptor.
+ *
+ * Bit format about nfp packet type refers to the following:
+ * ---------------------------------
+ *            1                   0
+ *  5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |       |ol3|tunnel |  l3 |  l4 |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *
+ * Bit map about nfp packet type refers to the following:
+ *
+ * L4: bit 0~2, used for layer 4 or inner layer 4.
+ * 000: NFP_NET_PTYPE_L4_NONE
+ * 001: NFP_NET_PTYPE_L4_TCP
+ * 010: NFP_NET_PTYPE_L4_UDP
+ * 011: NFP_NET_PTYPE_L4_FRAG
+ * 100: NFP_NET_PTYPE_L4_NONFRAG
+ * 101: NFP_NET_PTYPE_L4_ICMP
+ * 110: NFP_NET_PTYPE_L4_SCTP
+ * 111: reserved
+ *
+ * L3: bit 3~5, used for layer 3 or inner layer 3.
+ * 000: NFP_NET_PTYPE_L3_NONE
+ * 001: NFP_NET_PTYPE_L3_IPV6
+ * 010: NFP_NET_PTYPE_L3_IPV4
+ * 011: NFP_NET_PTYPE_L3_IPV4_EXT
+ * 100: NFP_NET_PTYPE_L3_IPV6_EXT
+ * 101: NFP_NET_PTYPE_L3_IPV4_EXT_UNKNOWN
+ * 110: NFP_NET_PTYPE_L3_IPV6_EXT_UNKNOWN
+ * 111: reserved
+ *
+ * Tunnel: bit 6~9, used for tunnel.
+ * 0000: NFP_NET_PTYPE_TUNNEL_NONE
+ * 0001: NFP_NET_PTYPE_TUNNEL_VXLAN
+ * 0100: NFP_NET_PTYPE_TUNNEL_NVGRE
+ * 0101: NFP_NET_PTYPE_TUNNEL_GENEVE
+ * 0010, 0011, 0110~1111: reserved
+ *
+ * Outer L3: bit 10~11, used for outer layer 3.
+ * 00: NFP_NET_PTYPE_OUTER_L3_NONE
+ * 01: NFP_NET_PTYPE_OUTER_L3_IPV6
+ * 10: NFP_NET_PTYPE_OUTER_L3_IPV4
+ * 11: reserved
+ *
+ * Reserved: bit 10~15, used for extension.
+ */
+
+/* Mask and offset about nfp packet type based on the bit map above. */
+#define NFP_NET_PTYPE_L4_MASK                  0x0007
+#define NFP_NET_PTYPE_L3_MASK                  0x0038
+#define NFP_NET_PTYPE_TUNNEL_MASK              0x03c0
+#define NFP_NET_PTYPE_OUTER_L3_MASK            0x0c00
+
+#define NFP_NET_PTYPE_L4_OFFSET                0
+#define NFP_NET_PTYPE_L3_OFFSET                3
+#define NFP_NET_PTYPE_TUNNEL_OFFSET            6
+#define NFP_NET_PTYPE_OUTER_L3_OFFSET          10
+
+/* Case about nfp packet type based on the bit map above. */
+#define NFP_NET_PTYPE_L4_NONE                  0
+#define NFP_NET_PTYPE_L4_TCP                   1
+#define NFP_NET_PTYPE_L4_UDP                   2
+#define NFP_NET_PTYPE_L4_FRAG                  3
+#define NFP_NET_PTYPE_L4_NONFRAG               4
+#define NFP_NET_PTYPE_L4_ICMP                  5
+#define NFP_NET_PTYPE_L4_SCTP                  6
+
+#define NFP_NET_PTYPE_L3_NONE                  0
+#define NFP_NET_PTYPE_L3_IPV6                  1
+#define NFP_NET_PTYPE_L3_IPV4                  2
+#define NFP_NET_PTYPE_L3_IPV4_EXT              3
+#define NFP_NET_PTYPE_L3_IPV6_EXT              4
+#define NFP_NET_PTYPE_L3_IPV4_EXT_UNKNOWN      5
+#define NFP_NET_PTYPE_L3_IPV6_EXT_UNKNOWN      6
+
+#define NFP_NET_PTYPE_TUNNEL_NONE              0
+#define NFP_NET_PTYPE_TUNNEL_VXLAN             1
+#define NFP_NET_PTYPE_TUNNEL_NVGRE             4
+#define NFP_NET_PTYPE_TUNNEL_GENEVE            5
+
+#define NFP_NET_PTYPE_OUTER_L3_NONE            0
+#define NFP_NET_PTYPE_OUTER_L3_IPV6            1
+#define NFP_NET_PTYPE_OUTER_L3_IPV4            2
+
+#define NFP_PTYPE2RTE(tunnel, type) ((tunnel) ? RTE_PTYPE_INNER_##type : RTE_PTYPE_##type)
+
+/* Record NFP packet type parsed from rxd.offload_info. */
+struct nfp_ptype_parsed {
+	uint8_t l4_ptype;       /**< Packet type of layer 4, or inner layer 4. */
+	uint8_t l3_ptype;       /**< Packet type of layer 3, or inner layer 3. */
+	uint8_t tunnel_ptype;   /**< Packet type of tunnel. */
+	uint8_t outer_l3_ptype; /**< Packet type of outer layer 3. */
+};
+
+/* set mbuf checksum flags based on RX descriptor flags */
+void
+nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
+		 struct rte_mbuf *mb)
+{
+	struct nfp_net_hw *hw = rxq->hw;
+
+	if (!(hw->ctrl & NFP_NET_CFG_CTRL_RXCSUM))
+		return;
+
+	/* If IPv4 and IP checksum error, fail */
+	if (unlikely((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) &&
+			!(rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK)))
+		mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
+	else
+		mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
+
+	/* If neither UDP nor TCP return */
+	if (!(rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) &&
+			!(rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM))
+		return;
+
+	if (likely(rxd->rxd.flags & PCIE_DESC_RX_L4_CSUM_OK))
+		mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
+	else
+		mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
+}
+
 static int
 nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
 {
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index 6d1c8e4605..ddbf97e46c 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -6,7 +6,7 @@
 #ifndef _NFP_RXTX_H_
 #define _NFP_RXTX_H_
 
-#include <rte_io.h>
+#include <ethdev_driver.h>
 
 #define NFP_DESC_META_LEN(d) ((d)->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK)
 
@@ -16,8 +16,6 @@
 #define RTE_MBUF_DMA_ADDR_DEFAULT(mb) \
 	((uint64_t)((mb)->buf_iova + RTE_PKTMBUF_HEADROOM))
 
-/* Maximum number of supported VLANs in parsed form packet metadata. */
-#define NFP_META_MAX_VLANS       2
 /* Maximum number of NFP packet metadata fields. */
 #define NFP_META_MAX_FIELDS      8
 
@@ -38,47 +36,9 @@ struct nfp_net_meta_raw {
 	uint8_t length;
 };
 
-/*
- * struct nfp_meta_parsed - Record metadata parsed from packet
- *
- * Parsed NFP packet metadata are recorded in this struct. The content is
- * read-only after it have been recorded during parsing by nfp_net_parse_meta().
- *
- * @port_id: Port id value
- * @hash: RSS hash value
- * @hash_type: RSS hash type
- * @vlan_layer: The layers of VLAN info which are passed from nic.
- *              Only this number of entries of the @vlan array are valid.
- *
- * @vlan: Holds information parses from NFP_NET_META_VLAN. The inner most vlan
- *        starts at position 0 and only @vlan_layer entries contain valid
- *        information.
- *
- *        Currently only 2 layers of vlan are supported,
- *        vlan[0] - vlan strip info
- *        vlan[1] - qinq strip info
- *
- * @vlan.offload:  Flag indicates whether VLAN is offloaded
- * @vlan.tpid: Vlan TPID
- * @vlan.tci: Vlan TCI including PCP + Priority + VID
- */
-struct nfp_meta_parsed {
-	uint32_t port_id;
-	uint32_t hash;
-	uint8_t hash_type;
-	uint8_t vlan_layer;
-	struct {
-		uint8_t offload;
-		uint8_t tpid;
-		uint16_t tci;
-	} vlan[NFP_META_MAX_VLANS];
-};
-
 /* Descriptor alignment */
 #define NFP_ALIGN_RING_DESC 128
 
-#define DIV_ROUND_UP(n, d)             (((n) + (d) - 1) / (d))
-
 struct nfp_net_dp_buf {
 	struct rte_mbuf *mbuf;
 };
@@ -160,102 +120,6 @@ struct nfp_net_txq {
 #define PCIE_DESC_RX_L4_CSUM_OK         (PCIE_DESC_RX_TCP_CSUM_OK | \
 					 PCIE_DESC_RX_UDP_CSUM_OK)
 
-/*
- * The bit format and map of nfp packet type for rxd.offload_info in Rx descriptor.
- *
- * Bit format about nfp packet type refers to the following:
- * ---------------------------------
- *            1                   0
- *  5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |       |ol3|tunnel |  l3 |  l4 |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * Bit map about nfp packet type refers to the following:
- *
- * L4: bit 0~2, used for layer 4 or inner layer 4.
- * 000: NFP_NET_PTYPE_L4_NONE
- * 001: NFP_NET_PTYPE_L4_TCP
- * 010: NFP_NET_PTYPE_L4_UDP
- * 011: NFP_NET_PTYPE_L4_FRAG
- * 100: NFP_NET_PTYPE_L4_NONFRAG
- * 101: NFP_NET_PTYPE_L4_ICMP
- * 110: NFP_NET_PTYPE_L4_SCTP
- * 111: reserved
- *
- * L3: bit 3~5, used for layer 3 or inner layer 3.
- * 000: NFP_NET_PTYPE_L3_NONE
- * 001: NFP_NET_PTYPE_L3_IPV6
- * 010: NFP_NET_PTYPE_L3_IPV4
- * 011: NFP_NET_PTYPE_L3_IPV4_EXT
- * 100: NFP_NET_PTYPE_L3_IPV6_EXT
- * 101: NFP_NET_PTYPE_L3_IPV4_EXT_UNKNOWN
- * 110: NFP_NET_PTYPE_L3_IPV6_EXT_UNKNOWN
- * 111: reserved
- *
- * Tunnel: bit 6~9, used for tunnel.
- * 0000: NFP_NET_PTYPE_TUNNEL_NONE
- * 0001: NFP_NET_PTYPE_TUNNEL_VXLAN
- * 0100: NFP_NET_PTYPE_TUNNEL_NVGRE
- * 0101: NFP_NET_PTYPE_TUNNEL_GENEVE
- * 0010, 0011, 0110~1111: reserved
- *
- * Outer L3: bit 10~11, used for outer layer 3.
- * 00: NFP_NET_PTYPE_OUTER_L3_NONE
- * 01: NFP_NET_PTYPE_OUTER_L3_IPV6
- * 10: NFP_NET_PTYPE_OUTER_L3_IPV4
- * 11: reserved
- *
- * Reserved: bit 10~15, used for extension.
- */
-
-/* Mask and offset about nfp packet type based on the bit map above. */
-#define NFP_NET_PTYPE_L4_MASK                  0x0007
-#define NFP_NET_PTYPE_L3_MASK                  0x0038
-#define NFP_NET_PTYPE_TUNNEL_MASK              0x03c0
-#define NFP_NET_PTYPE_OUTER_L3_MASK            0x0c00
-
-#define NFP_NET_PTYPE_L4_OFFSET                0
-#define NFP_NET_PTYPE_L3_OFFSET                3
-#define NFP_NET_PTYPE_TUNNEL_OFFSET            6
-#define NFP_NET_PTYPE_OUTER_L3_OFFSET          10
-
-/* Case about nfp packet type based on the bit map above. */
-#define NFP_NET_PTYPE_L4_NONE                  0
-#define NFP_NET_PTYPE_L4_TCP                   1
-#define NFP_NET_PTYPE_L4_UDP                   2
-#define NFP_NET_PTYPE_L4_FRAG                  3
-#define NFP_NET_PTYPE_L4_NONFRAG               4
-#define NFP_NET_PTYPE_L4_ICMP                  5
-#define NFP_NET_PTYPE_L4_SCTP                  6
-
-#define NFP_NET_PTYPE_L3_NONE                  0
-#define NFP_NET_PTYPE_L3_IPV6                  1
-#define NFP_NET_PTYPE_L3_IPV4                  2
-#define NFP_NET_PTYPE_L3_IPV4_EXT              3
-#define NFP_NET_PTYPE_L3_IPV6_EXT              4
-#define NFP_NET_PTYPE_L3_IPV4_EXT_UNKNOWN      5
-#define NFP_NET_PTYPE_L3_IPV6_EXT_UNKNOWN      6
-
-#define NFP_NET_PTYPE_TUNNEL_NONE              0
-#define NFP_NET_PTYPE_TUNNEL_VXLAN             1
-#define NFP_NET_PTYPE_TUNNEL_NVGRE             4
-#define NFP_NET_PTYPE_TUNNEL_GENEVE            5
-
-#define NFP_NET_PTYPE_OUTER_L3_NONE            0
-#define NFP_NET_PTYPE_OUTER_L3_IPV6            1
-#define NFP_NET_PTYPE_OUTER_L3_IPV4            2
-
-#define NFP_PTYPE2RTE(tunnel, type) ((tunnel) ? RTE_PTYPE_INNER_##type : RTE_PTYPE_##type)
-
-/* Record NFP packet type parsed from rxd.offload_info. */
-struct nfp_ptype_parsed {
-	uint8_t l4_ptype;       /**< Packet type of layer 4, or inner layer 4. */
-	uint8_t l3_ptype;       /**< Packet type of layer 3, or inner layer 3. */
-	uint8_t tunnel_ptype;   /**< Packet type of tunnel. */
-	uint8_t outer_l3_ptype; /**< Packet type of outer layer 3. */
-};
-
 struct nfp_net_rx_desc {
 	union {
 		/** Freelist descriptor. */
@@ -357,34 +221,8 @@ nfp_net_mbuf_alloc_failed(struct nfp_net_rxq *rxq)
 	rte_eth_devices[rxq->port_id].data->rx_mbuf_alloc_failed++;
 }
 
-/* set mbuf checksum flags based on RX descriptor flags */
-static inline void
-nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
-		 struct rte_mbuf *mb)
-{
-	struct nfp_net_hw *hw = rxq->hw;
-
-	if (!(hw->ctrl & NFP_NET_CFG_CTRL_RXCSUM))
-		return;
-
-	/* If IPv4 and IP checksum error, fail */
-	if (unlikely((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) &&
-			!(rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK)))
-		mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
-	else
-		mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
-
-	/* If neither UDP nor TCP return */
-	if (!(rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) &&
-			!(rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM))
-		return;
-
-	if (likely(rxd->rxd.flags & PCIE_DESC_RX_L4_CSUM_OK))
-		mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
-	else
-		mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
-}
-
+void nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
+		 struct rte_mbuf *mb);
 int nfp_net_rx_freelist_setup(struct rte_eth_dev *dev);
 uint32_t nfp_net_rx_queue_count(void *rx_queue);
 uint16_t nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
diff --git a/drivers/net/nfp/nfpcore/nfp_platform.h b/drivers/net/nfp/nfpcore/nfp_platform.h
index fcac6b05ff..1687942e41 100644
--- a/drivers/net/nfp/nfpcore/nfp_platform.h
+++ b/drivers/net/nfp/nfpcore/nfp_platform.h
@@ -8,6 +8,8 @@
 
 #include <stdint.h>
 
+#define DIV_ROUND_UP(n, d)             (((n) + (d) - 1) / (d))
+
 #define DMA_BIT_MASK(n)    ((1ULL << (n)) - 1)
 
 #define BITS_PER_LONG      (__SIZEOF_LONG__ * 8)
-- 
2.39.1


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

* [PATCH 03/13] net/nfp: improve modularazation of nfd3 module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
  2023-09-20 11:34 ` [PATCH 01/13] net/nfp: make sure header file is self-containing Chaoyong He
  2023-09-20 11:34 ` [PATCH 02/13] net/nfp: improve modularazation of rxtx module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 04/13] net/nfp: improve modularazation of nfdk module Chaoyong He
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Try to keep the API small by move the logic which need not expose from
header file to source file verbatim.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfd3/nfp_nfd3.h    | 89 +--------------------------
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 96 ++++++++++++++++++++++++++++--
 2 files changed, 92 insertions(+), 93 deletions(-)

diff --git a/drivers/net/nfp/nfd3/nfp_nfd3.h b/drivers/net/nfp/nfd3/nfp_nfd3.h
index 910e622fa2..7c56ca4908 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3.h
+++ b/drivers/net/nfp/nfd3/nfp_nfd3.h
@@ -6,20 +6,12 @@
 #ifndef _NFP_NFD3_H_
 #define _NFP_NFD3_H_
 
+#include "../nfp_rxtx.h"
+
 /* TX descriptor format */
 #define NFD3_DESC_TX_EOP                RTE_BIT32(7)
 #define NFD3_DESC_TX_OFFSET_MASK        (0x7F)        /* [0,6] */
 
-/* Flags in the host TX descriptor */
-#define NFD3_DESC_TX_CSUM               RTE_BIT32(7)
-#define NFD3_DESC_TX_IP4_CSUM           RTE_BIT32(6)
-#define NFD3_DESC_TX_TCP_CSUM           RTE_BIT32(5)
-#define NFD3_DESC_TX_UDP_CSUM           RTE_BIT32(4)
-#define NFD3_DESC_TX_VLAN               RTE_BIT32(3)
-#define NFD3_DESC_TX_LSO                RTE_BIT32(2)
-#define NFD3_DESC_TX_ENCAP              RTE_BIT32(1)
-#define NFD3_DESC_TX_O_IP4_CSUM         RTE_BIT32(0)
-
 #define NFD3_TX_DESC_PER_PKT     1
 
 struct nfp_net_nfd3_tx_desc {
@@ -76,83 +68,6 @@ nfp_net_nfd3_txq_full(struct nfp_net_txq *txq)
 	return (nfp_net_nfd3_free_tx_desc(txq) < txq->tx_free_thresh);
 }
 
-/* nfp_net_nfd3_tx_tso() - Set NFD3 TX descriptor for TSO */
-static inline void
-nfp_net_nfd3_tx_tso(struct nfp_net_txq *txq,
-		struct nfp_net_nfd3_tx_desc *txd,
-		struct rte_mbuf *mb)
-{
-	uint64_t ol_flags;
-	struct nfp_net_hw *hw = txq->hw;
-
-	if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0)
-		goto clean_txd;
-
-	ol_flags = mb->ol_flags;
-	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) == 0)
-		goto clean_txd;
-
-	txd->l3_offset = mb->l2_len;
-	txd->l4_offset = mb->l2_len + mb->l3_len;
-	txd->lso_hdrlen = mb->l2_len + mb->l3_len + mb->l4_len;
-
-	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0) {
-		txd->l3_offset += mb->outer_l2_len + mb->outer_l3_len;
-		txd->l4_offset += mb->outer_l2_len + mb->outer_l3_len;
-		txd->lso_hdrlen += mb->outer_l2_len + mb->outer_l3_len;
-	}
-
-	txd->mss = rte_cpu_to_le_16(mb->tso_segsz);
-	txd->flags = NFD3_DESC_TX_LSO;
-
-	return;
-
-clean_txd:
-	txd->flags = 0;
-	txd->l3_offset = 0;
-	txd->l4_offset = 0;
-	txd->lso_hdrlen = 0;
-	txd->mss = 0;
-}
-
-/* nfp_net_nfd3_tx_cksum() - Set TX CSUM offload flags in NFD3 TX descriptor */
-static inline void
-nfp_net_nfd3_tx_cksum(struct nfp_net_txq *txq,
-		struct nfp_net_nfd3_tx_desc *txd,
-		struct rte_mbuf *mb)
-{
-	uint64_t ol_flags;
-	struct nfp_net_hw *hw = txq->hw;
-
-	if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) == 0)
-		return;
-
-	ol_flags = mb->ol_flags;
-
-	/* Set TCP csum offload if TSO enabled. */
-	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0)
-		txd->flags |= NFD3_DESC_TX_TCP_CSUM;
-
-	/* IPv6 does not need checksum */
-	if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) != 0)
-		txd->flags |= NFD3_DESC_TX_IP4_CSUM;
-
-	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0)
-		txd->flags |= NFD3_DESC_TX_ENCAP;
-
-	switch (ol_flags & RTE_MBUF_F_TX_L4_MASK) {
-	case RTE_MBUF_F_TX_UDP_CKSUM:
-		txd->flags |= NFD3_DESC_TX_UDP_CSUM;
-		break;
-	case RTE_MBUF_F_TX_TCP_CKSUM:
-		txd->flags |= NFD3_DESC_TX_TCP_CSUM;
-		break;
-	}
-
-	if ((ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_L4_MASK)) != 0)
-		txd->flags |= NFD3_DESC_TX_CSUM;
-}
-
 uint32_t nfp_flower_nfd3_pkt_add_metadata(struct rte_mbuf *mbuf,
 		uint32_t port_id);
 uint16_t nfp_net_nfd3_xmit_pkts_common(void *tx_queue,
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index 79e1e1041c..ab0747fc16 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -3,16 +3,100 @@
  * All rights reserved.
  */
 
-#include <ethdev_driver.h>
+#include "nfp_nfd3.h"
+
 #include <bus_pci_driver.h>
 #include <rte_malloc.h>
 
-#include "../nfp_logs.h"
-#include "../nfp_common.h"
-#include "../nfp_rxtx.h"
 #include "../flower/nfp_flower.h"
-#include "../flower/nfp_flower_cmsg.h"
-#include "nfp_nfd3.h"
+#include "../nfp_logs.h"
+
+/* Flags in the host TX descriptor */
+#define NFD3_DESC_TX_CSUM               RTE_BIT32(7)
+#define NFD3_DESC_TX_IP4_CSUM           RTE_BIT32(6)
+#define NFD3_DESC_TX_TCP_CSUM           RTE_BIT32(5)
+#define NFD3_DESC_TX_UDP_CSUM           RTE_BIT32(4)
+#define NFD3_DESC_TX_VLAN               RTE_BIT32(3)
+#define NFD3_DESC_TX_LSO                RTE_BIT32(2)
+#define NFD3_DESC_TX_ENCAP              RTE_BIT32(1)
+#define NFD3_DESC_TX_O_IP4_CSUM         RTE_BIT32(0)
+
+/* Set NFD3 TX descriptor for TSO */
+static void
+nfp_net_nfd3_tx_tso(struct nfp_net_txq *txq,
+		struct nfp_net_nfd3_tx_desc *txd,
+		struct rte_mbuf *mb)
+{
+	uint64_t ol_flags;
+	struct nfp_net_hw *hw = txq->hw;
+
+	if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0)
+		goto clean_txd;
+
+	ol_flags = mb->ol_flags;
+	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) == 0)
+		goto clean_txd;
+
+	txd->l3_offset = mb->l2_len;
+	txd->l4_offset = mb->l2_len + mb->l3_len;
+	txd->lso_hdrlen = mb->l2_len + mb->l3_len + mb->l4_len;
+
+	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0) {
+		txd->l3_offset += mb->outer_l2_len + mb->outer_l3_len;
+		txd->l4_offset += mb->outer_l2_len + mb->outer_l3_len;
+		txd->lso_hdrlen += mb->outer_l2_len + mb->outer_l3_len;
+	}
+
+	txd->mss = rte_cpu_to_le_16(mb->tso_segsz);
+	txd->flags = NFD3_DESC_TX_LSO;
+
+	return;
+
+clean_txd:
+	txd->flags = 0;
+	txd->l3_offset = 0;
+	txd->l4_offset = 0;
+	txd->lso_hdrlen = 0;
+	txd->mss = 0;
+}
+
+/* Set TX CSUM offload flags in NFD3 TX descriptor */
+static void
+nfp_net_nfd3_tx_cksum(struct nfp_net_txq *txq,
+		struct nfp_net_nfd3_tx_desc *txd,
+		struct rte_mbuf *mb)
+{
+	uint64_t ol_flags;
+	struct nfp_net_hw *hw = txq->hw;
+
+	if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) == 0)
+		return;
+
+	ol_flags = mb->ol_flags;
+
+	/* Set TCP csum offload if TSO enabled. */
+	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0)
+		txd->flags |= NFD3_DESC_TX_TCP_CSUM;
+
+	/* IPv6 does not need checksum */
+	if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) != 0)
+		txd->flags |= NFD3_DESC_TX_IP4_CSUM;
+
+	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0)
+		txd->flags |= NFD3_DESC_TX_ENCAP;
+
+	switch (ol_flags & RTE_MBUF_F_TX_L4_MASK) {
+	case RTE_MBUF_F_TX_UDP_CKSUM:
+		txd->flags |= NFD3_DESC_TX_UDP_CSUM;
+		break;
+	case RTE_MBUF_F_TX_TCP_CKSUM:
+		txd->flags |= NFD3_DESC_TX_TCP_CSUM;
+		break;
+	}
+
+	if ((ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_L4_MASK)) != 0)
+		txd->flags |= NFD3_DESC_TX_CSUM;
+}
 
 uint32_t
 nfp_flower_nfd3_pkt_add_metadata(struct rte_mbuf *mbuf,
-- 
2.39.1


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

* [PATCH 04/13] net/nfp: improve modularazation of nfdk module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (2 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 03/13] net/nfp: improve modularazation of nfd3 module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 05/13] net/nfp: improve modularazation of common module Chaoyong He
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Try to keep the API small by move the logic which need not expose from
header file to source file verbatim.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfdk/nfp_nfdk.h    | 71 +-------------------------
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 82 ++++++++++++++++++++++++++----
 2 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/drivers/net/nfp/nfdk/nfp_nfdk.h b/drivers/net/nfp/nfdk/nfp_nfdk.h
index 66f020efb0..75ecb361ee 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk.h
+++ b/drivers/net/nfp/nfdk/nfp_nfdk.h
@@ -6,8 +6,9 @@
 #ifndef _NFP_NFDK_H_
 #define _NFP_NFDK_H_
 
+#include "../nfp_rxtx.h"
+
 #define NFDK_TX_DESC_PER_SIMPLE_PKT     2
-#define NFDK_TX_DESC_GATHER_MAX         17
 
 #define NFDK_TX_MAX_DATA_PER_HEAD       0x00001000    /* 4K */
 #define NFDK_TX_MAX_DATA_PER_DESC       0x00004000    /* 16K */
@@ -16,7 +17,6 @@
 /* The mask of 'dma_len_xx' of address descriptor */
 #define NFDK_DESC_TX_DMA_LEN_HEAD       0x0FFF        /* [0,11] */
 #define NFDK_DESC_TX_DMA_LEN            0x3FFF        /* [0,13] */
-#define NFDK_DESC_TX_TYPE_HEAD          0xF000        /* [12,15] */
 
 /* The mask of upper 4 bit of first address descriptor */
 #define NFDK_DESC_TX_TYPE_HEAD          0xF000        /* [12,15] */
@@ -160,73 +160,6 @@ nfp_net_nfdk_txq_full(struct nfp_net_txq *txq)
 	return (nfp_net_nfdk_free_tx_desc(txq) < txq->tx_free_thresh);
 }
 
-/* nfp_net_nfdk_tx_cksum() - Set TX CSUM offload flags in TX descriptor of nfdk */
-static inline uint64_t
-nfp_net_nfdk_tx_cksum(struct nfp_net_txq *txq,
-		struct rte_mbuf *mb,
-		uint64_t flags)
-{
-	uint64_t ol_flags;
-	struct nfp_net_hw *hw = txq->hw;
-
-	if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) == 0)
-		return flags;
-
-	ol_flags = mb->ol_flags;
-
-	/* Set TCP csum offload if TSO enabled. */
-	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0)
-		flags |= NFDK_DESC_TX_L4_CSUM;
-
-	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0)
-		flags |= NFDK_DESC_TX_ENCAP;
-
-	/* IPv6 does not need checksum */
-	if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) != 0)
-		flags |= NFDK_DESC_TX_L3_CSUM;
-
-	if ((ol_flags & RTE_MBUF_F_TX_L4_MASK) != 0)
-		flags |= NFDK_DESC_TX_L4_CSUM;
-
-	return flags;
-}
-
-/* nfp_net_nfdk_tx_tso() - Set TX descriptor for TSO of nfdk */
-static inline uint64_t
-nfp_net_nfdk_tx_tso(struct nfp_net_txq *txq,
-		struct rte_mbuf *mb)
-{
-	uint8_t outer_len;
-	uint64_t ol_flags;
-	struct nfp_net_nfdk_tx_desc txd;
-	struct nfp_net_hw *hw = txq->hw;
-
-	txd.raw = 0;
-
-	if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0)
-		return txd.raw;
-
-	ol_flags = mb->ol_flags;
-	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) == 0)
-		return txd.raw;
-
-	txd.l3_offset = mb->l2_len;
-	txd.l4_offset = mb->l2_len + mb->l3_len;
-	txd.lso_meta_res = 0;
-	txd.mss = rte_cpu_to_le_16(mb->tso_segsz);
-	txd.lso_hdrlen = mb->l2_len + mb->l3_len + mb->l4_len;
-	txd.lso_totsegs = (mb->pkt_len + mb->tso_segsz) / mb->tso_segsz;
-
-	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0) {
-		outer_len = mb->outer_l2_len + mb->outer_l3_len;
-		txd.l3_offset += outer_len;
-		txd.l4_offset += outer_len;
-		txd.lso_hdrlen += outer_len;
-	}
-
-	return txd.raw;
-}
-
 uint32_t nfp_flower_nfdk_pkt_add_metadata(struct rte_mbuf *mbuf,
 		uint32_t port_id);
 uint16_t nfp_net_nfdk_xmit_pkts_common(void *tx_queue,
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index 97002eed23..a85734f121 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -3,19 +3,83 @@
  * All rights reserved.
  */
 
-#include <ethdev_driver.h>
+#include "nfp_nfdk.h"
+
 #include <bus_pci_driver.h>
 #include <rte_malloc.h>
 
-#include "../nfp_logs.h"
-#include "../nfp_common.h"
-#include "../nfp_rxtx.h"
-#include "../nfpcore/nfp_mip.h"
-#include "../nfpcore/nfp_platform.h"
-#include "../nfpcore/nfp_rtsym.h"
 #include "../flower/nfp_flower.h"
-#include "../flower/nfp_flower_cmsg.h"
-#include "nfp_nfdk.h"
+#include "../nfpcore/nfp_platform.h"
+#include "../nfp_logs.h"
+
+#define NFDK_TX_DESC_GATHER_MAX         17
+
+/* Set TX CSUM offload flags in TX descriptor of nfdk */
+static uint64_t
+nfp_net_nfdk_tx_cksum(struct nfp_net_txq *txq,
+		struct rte_mbuf *mb,
+		uint64_t flags)
+{
+	uint64_t ol_flags;
+	struct nfp_net_hw *hw = txq->hw;
+
+	if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) == 0)
+		return flags;
+
+	ol_flags = mb->ol_flags;
+
+	/* Set TCP csum offload if TSO enabled. */
+	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0)
+		flags |= NFDK_DESC_TX_L4_CSUM;
+
+	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0)
+		flags |= NFDK_DESC_TX_ENCAP;
+
+	/* IPv6 does not need checksum */
+	if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) != 0)
+		flags |= NFDK_DESC_TX_L3_CSUM;
+
+	if ((ol_flags & RTE_MBUF_F_TX_L4_MASK) != 0)
+		flags |= NFDK_DESC_TX_L4_CSUM;
+
+	return flags;
+}
+
+/* Set TX descriptor for TSO of nfdk */
+static uint64_t
+nfp_net_nfdk_tx_tso(struct nfp_net_txq *txq,
+		struct rte_mbuf *mb)
+{
+	uint8_t outer_len;
+	uint64_t ol_flags;
+	struct nfp_net_nfdk_tx_desc txd;
+	struct nfp_net_hw *hw = txq->hw;
+
+	txd.raw = 0;
+
+	if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0)
+		return txd.raw;
+
+	ol_flags = mb->ol_flags;
+	if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) == 0)
+		return txd.raw;
+
+	txd.l3_offset = mb->l2_len;
+	txd.l4_offset = mb->l2_len + mb->l3_len;
+	txd.lso_meta_res = 0;
+	txd.mss = rte_cpu_to_le_16(mb->tso_segsz);
+	txd.lso_hdrlen = mb->l2_len + mb->l3_len + mb->l4_len;
+	txd.lso_totsegs = (mb->pkt_len + mb->tso_segsz) / mb->tso_segsz;
+
+	if ((ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) != 0) {
+		outer_len = mb->outer_l2_len + mb->outer_l3_len;
+		txd.l3_offset += outer_len;
+		txd.l4_offset += outer_len;
+		txd.lso_hdrlen += outer_len;
+	}
+
+	return txd.raw;
+}
 
 uint32_t
 nfp_flower_nfdk_pkt_add_metadata(struct rte_mbuf *mbuf,
-- 
2.39.1


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

* [PATCH 05/13] net/nfp: improve modularazation of common module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (3 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 04/13] net/nfp: improve modularazation of nfdk module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 06/13] net/nfp: improve modularazation of flower module Chaoyong He
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Try to keep the API small by move the logic which need not expose from
header file to source file verbatim and remove the unused macro.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfp_common.c | 51 +++++++++++++-----------------------
 drivers/net/nfp/nfp_common.h | 34 ++++--------------------
 2 files changed, 23 insertions(+), 62 deletions(-)

diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c
index 160df27c94..40027dbdfc 100644
--- a/drivers/net/nfp/nfp_common.c
+++ b/drivers/net/nfp/nfp_common.c
@@ -5,47 +5,32 @@
  * Small portions derived from code Copyright(c) 2010-2015 Intel Corporation.
  */
 
-#include <rte_byteorder.h>
-#include <rte_common.h>
-#include <rte_log.h>
-#include <rte_debug.h>
-#include <ethdev_driver.h>
-#include <ethdev_pci.h>
-#include <dev_driver.h>
-#include <rte_ether.h>
-#include <rte_malloc.h>
-#include <rte_memzone.h>
-#include <rte_mempool.h>
-#include <rte_version.h>
+#include "nfp_common.h"
+
 #include <rte_alarm.h>
-#include <rte_spinlock.h>
-#include <rte_service_component.h>
 
-#include "nfpcore/nfp_cpp.h"
-#include "nfpcore/nfp_nffw.h"
-#include "nfpcore/nfp_hwinfo.h"
+#include "flower/nfp_flower_representor.h"
+#include "nfd3/nfp_nfd3.h"
+#include "nfdk/nfp_nfdk.h"
 #include "nfpcore/nfp_mip.h"
-#include "nfpcore/nfp_rtsym.h"
 #include "nfpcore/nfp_nsp.h"
+#include "nfp_logs.h"
 
-#include "flower/nfp_flower_representor.h"
+#define NFP_TX_MAX_SEG       UINT8_MAX
+#define NFP_TX_MAX_MTU_SEG   8
 
-#include "nfp_common.h"
-#include "nfp_ctrl.h"
-#include "nfp_rxtx.h"
-#include "nfp_logs.h"
-#include "nfp_cpp_bridge.h"
+/*
+ * This is used by the reconfig protocol. It sets the maximum time waiting in
+ * milliseconds before a reconfig timeout happens.
+ */
+#define NFP_NET_POLL_TIMEOUT    5000
 
-#include "nfd3/nfp_nfd3.h"
-#include "nfdk/nfp_nfdk.h"
+#define NFP_NET_LINK_DOWN_CHECK_TIMEOUT 4000 /* ms */
+#define NFP_NET_LINK_UP_CHECK_TIMEOUT   1000 /* ms */
 
-#include <stdint.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
+/* Maximum supported NFP frame size (MTU + layer 2 headers) */
+#define NFP_FRAME_SIZE_MAX        10048
+#define DEFAULT_FLBUF_SIZE        9216
 
 enum nfp_xstat_group {
 	NFP_XSTAT_GROUP_NET,
diff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_common.h
index 36ad4e1d32..b0372c3dc6 100644
--- a/drivers/net/nfp/nfp_common.h
+++ b/drivers/net/nfp/nfp_common.h
@@ -6,22 +6,14 @@
 #ifndef _NFP_COMMON_H_
 #define _NFP_COMMON_H_
 
+#include <bus_pci_driver.h>
+#include <ethdev_driver.h>
+#include <rte_io.h>
+#include <rte_spinlock.h>
+
 #include "nfp_ctrl.h"
 #include "nfpcore/nfp_dev.h"
 
-#define NFP_NET_PMD_VERSION "0.1"
-
-/* Forward declaration */
-struct nfp_net_adapter;
-
-#define NFP_TX_MAX_SEG     UINT8_MAX
-#define NFP_TX_MAX_MTU_SEG 8
-
-/* Bar allocation */
-#define NFP_NET_CRTL_BAR        0
-#define NFP_NET_TX_BAR          2
-#define NFP_NET_RX_BAR          2
-
 /* Macros for accessing the Queue Controller Peripheral 'CSRs' */
 #define NFP_QCP_QUEUE_OFF(_x)                 ((_x) * 0x800)
 #define NFP_QCP_QUEUE_ADD_RPTR                  0x0000
@@ -50,27 +42,11 @@ struct nfp_net_adapter;
 /* Alignment for dma zones */
 #define NFP_MEMZONE_ALIGN	128
 
-/*
- * This is used by the reconfig protocol. It sets the maximum time waiting in
- * milliseconds before a reconfig timeout happens.
- */
-#define NFP_NET_POLL_TIMEOUT    5000
-
 #define NFP_QCP_QUEUE_ADDR_SZ   (0x800)
 
-#define NFP_NET_LINK_DOWN_CHECK_TIMEOUT 4000 /* ms */
-#define NFP_NET_LINK_UP_CHECK_TIMEOUT   1000 /* ms */
-
 /* Number of supported physical ports */
 #define NFP_MAX_PHYPORTS	12
 
-/* Maximum supported NFP frame size (MTU + layer 2 headers) */
-#define NFP_FRAME_SIZE_MAX	10048
-#define DEFAULT_FLBUF_SIZE        9216
-
-#include <linux/types.h>
-#include <rte_io.h>
-
 /* Firmware application ID's */
 enum nfp_app_fw_id {
 	NFP_APP_FW_CORE_NIC               = 0x1,
-- 
2.39.1


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

* [PATCH 06/13] net/nfp: improve modularazation of flower module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (4 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 05/13] net/nfp: improve modularazation of common module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 07/13] net/nfp: improve modularazation of flower representor module Chaoyong He
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c | 24 ++++++++++--------------
 drivers/net/nfp/flower/nfp_flower.h |  2 ++
 2 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index bbcfa6e66a..bbcbb0060b 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -3,27 +3,23 @@
  * All rights reserved.
  */
 
-#include <rte_common.h>
-#include <rte_service_component.h>
-#include <rte_malloc.h>
+#include "nfp_flower.h"
+
 #include <rte_alarm.h>
-#include <ethdev_pci.h>
-#include <ethdev_driver.h>
+#include <rte_malloc.h>
+#include <rte_service_component.h>
 
-#include "../nfp_common.h"
-#include "../nfp_logs.h"
-#include "../nfp_ctrl.h"
-#include "../nfp_cpp_bridge.h"
-#include "../nfp_rxtx.h"
 #include "../nfd3/nfp_nfd3.h"
 #include "../nfdk/nfp_nfdk.h"
-#include "../nfpcore/nfp_mip.h"
-#include "../nfpcore/nfp_rtsym.h"
 #include "../nfpcore/nfp_nsp.h"
-#include "nfp_flower.h"
+#include "../nfpcore/nfp_rtsym.h"
+#include "../nfp_cpp_bridge.h"
+#include "../nfp_flow.h"
+#include "../nfp_logs.h"
+#include "../nfp_mtr.h"
+#include "nfp_flower_cmsg.h"
 #include "nfp_flower_ctrl.h"
 #include "nfp_flower_representor.h"
-#include "nfp_flower_cmsg.h"
 
 #define CTRL_VNIC_NB_DESC 512
 
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index e8df8b1769..244b6daa37 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -34,7 +34,9 @@
 #define MAX_FLOWER_PHYPORTS 8
 #define MAX_FLOWER_VFS 64
 
+/* Forward declaration */
 struct nfp_app_fw_flower;
+struct nfp_flower_representor;
 
 /* The function pointers for different NFD version */
 struct nfp_flower_nfd_func {
-- 
2.39.1


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

* [PATCH 07/13] net/nfp: improve modularazation of flower representor module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (5 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 06/13] net/nfp: improve modularazation of flower module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 08/13] net/nfp: improve modularazation of flower ctrl module Chaoyong He
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Try to keep the API small by move the logic which need not expose from
header file to source file verbatim.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 .../net/nfp/flower/nfp_flower_representor.c   | 29 ++++++++++++-------
 .../net/nfp/flower/nfp_flower_representor.h   | 14 ---------
 2 files changed, 18 insertions(+), 25 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index 48c3b3f844..d4df88fb73 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -3,22 +3,29 @@
  * All rights reserved.
  */
 
-#include <rte_common.h>
-#include <ethdev_pci.h>
+#include "nfp_flower_representor.h"
 
-#include "../nfp_common.h"
-#include "../nfp_logs.h"
-#include "../nfp_ctrl.h"
-#include "../nfp_rxtx.h"
 #include "../nfd3/nfp_nfd3.h"
-#include "../nfpcore/nfp_mip.h"
-#include "../nfpcore/nfp_rtsym.h"
 #include "../nfpcore/nfp_nsp.h"
-#include "nfp_flower.h"
-#include "nfp_flower_representor.h"
-#include "nfp_flower_ctrl.h"
+#include "../nfp_flow.h"
+#include "../nfp_logs.h"
+#include "../nfp_mtr.h"
 #include "nfp_flower_cmsg.h"
 
+/*
+ * enum nfp_repr_type - type of representor
+ * @NFP_REPR_TYPE_PHYS_PORT:   external NIC port
+ * @NFP_REPR_TYPE_PF:          physical function
+ * @NFP_REPR_TYPE_VF:          virtual function
+ * @NFP_REPR_TYPE_MAX:         number of representor types
+ */
+enum nfp_repr_type {
+	NFP_REPR_TYPE_PHYS_PORT,
+	NFP_REPR_TYPE_PF,
+	NFP_REPR_TYPE_VF,
+	NFP_REPR_TYPE_MAX,
+};
+
 static int
 nfp_pf_repr_rx_queue_setup(struct rte_eth_dev *dev,
 		uint16_t queue_idx,
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h
index 685cbe46b4..5ac5e38186 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.h
+++ b/drivers/net/nfp/flower/nfp_flower_representor.h
@@ -8,20 +8,6 @@
 
 #include "nfp_flower.h"
 
-/*
- * enum nfp_repr_type - type of representor
- * @NFP_REPR_TYPE_PHYS_PORT:   external NIC port
- * @NFP_REPR_TYPE_PF:          physical function
- * @NFP_REPR_TYPE_VF:          virtual function
- * @NFP_REPR_TYPE_MAX:         number of representor types
- */
-enum nfp_repr_type {
-	NFP_REPR_TYPE_PHYS_PORT = 0,
-	NFP_REPR_TYPE_PF,
-	NFP_REPR_TYPE_VF,
-	NFP_REPR_TYPE_MAX,
-};
-
 struct nfp_flower_representor {
 	uint16_t vf_id;
 	uint16_t switch_domain_id;
-- 
2.39.1


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

* [PATCH 08/13] net/nfp: improve modularazation of flower ctrl module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (6 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 07/13] net/nfp: improve modularazation of flower representor module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 09/13] net/nfp: improve modularazation of flower cmsg module Chaoyong He
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_ctrl.c | 13 +++++--------
 drivers/net/nfp/flower/nfp_flower_ctrl.h |  2 ++
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index 4cb2c2f99e..bdb042142a 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -3,20 +3,17 @@
  * All rights reserved.
  */
 
-#include <rte_common.h>
+#include "nfp_flower_ctrl.h"
+
 #include <rte_service.h>
-#include <ethdev_pci.h>
 
-#include "../nfp_common.h"
-#include "../nfp_logs.h"
-#include "../nfp_ctrl.h"
-#include "../nfp_rxtx.h"
 #include "../nfd3/nfp_nfd3.h"
 #include "../nfdk/nfp_nfdk.h"
-#include "nfp_flower.h"
-#include "nfp_flower_ctrl.h"
+#include "../nfp_flow.h"
+#include "../nfp_logs.h"
 #include "nfp_flower_cmsg.h"
 #include "nfp_flower_representor.h"
+#include "nfp_mtr.h"
 
 #define MAX_PKT_BURST 32
 
diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.h b/drivers/net/nfp/flower/nfp_flower_ctrl.h
index b7e836cf7e..f73a024266 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.h
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.h
@@ -6,6 +6,8 @@
 #ifndef _NFP_FLOWER_CTRL_H_
 #define _NFP_FLOWER_CTRL_H_
 
+#include "nfp_flower.h"
+
 void nfp_flower_ctrl_vnic_poll(struct nfp_app_fw_flower *app_fw_flower);
 uint16_t nfp_flower_ctrl_vnic_xmit(struct nfp_app_fw_flower *app_fw_flower,
 		struct rte_mbuf *mbuf);
-- 
2.39.1


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

* [PATCH 09/13] net/nfp: improve modularazation of flower cmsg module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (7 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 08/13] net/nfp: improve modularazation of flower ctrl module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 10/13] net/nfp: improve modularazation of flow module Chaoyong He
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Try to keep the API small by move the logic which need not expose from
header file to source file verbatim and remove the unused macro.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_cmsg.c | 12 +++-
 drivers/net/nfp/flower/nfp_flower_cmsg.h | 81 ++++++++++++++++++++----
 drivers/net/nfp/nfp_flow.c               |  1 +
 drivers/net/nfp/nfp_mtr.h                | 68 +-------------------
 4 files changed, 82 insertions(+), 80 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 00f94c7492..0b8feec05b 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -3,14 +3,20 @@
  * All rights reserved.
  */
 
+#include "nfp_flower_cmsg.h"
+
 #include "../nfpcore/nfp_nsp.h"
+#include "../nfp_flow.h"
 #include "../nfp_logs.h"
-#include "../nfp_common.h"
-#include "nfp_flower.h"
-#include "nfp_flower_cmsg.h"
 #include "nfp_flower_ctrl.h"
 #include "nfp_flower_representor.h"
 
+static char*
+nfp_flower_cmsg_get_data(struct rte_mbuf *m)
+{
+	return rte_pktmbuf_mtod(m, char *) + 4 + 4 + NFP_FLOWER_CMSG_HLEN;
+}
+
 static void *
 nfp_flower_cmsg_init(struct nfp_app_fw_flower *app_fw_flower,
 		struct rte_mbuf *m,
diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h
index f643d54d39..3c2b279f40 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.h
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h
@@ -6,11 +6,7 @@
 #ifndef _NFP_CMSG_H_
 #define _NFP_CMSG_H_
 
-#include <rte_byteorder.h>
-#include <rte_ether.h>
-
-#include "../nfp_mtr.h"
-#include "../nfp_flow.h"
+#include "nfp_flower.h"
 
 struct nfp_flower_cmsg_hdr {
 	rte_be16_t pad;
@@ -351,6 +347,72 @@ struct nfp_flower_stats_frame {
 	rte_be64_t stats_cookie;
 };
 
+/**
+ * See RFC 2698 for more details.
+ * Word[0](Flag options):
+ * [15] p(pps) 1 for pps, 0 for bps
+ *
+ * Meter control message
+ *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+ * +-------------------------------+-+---+-----+-+---------+-+---+-+
+ * |            Reserved           |p| Y |TYPE |E|  TSHFV  |P| PC|R|
+ * +-------------------------------+-+---+-----+-+---------+-+---+-+
+ * |                           Profile ID                          |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                        Token Bucket Peak                      |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                     Token Bucket Committed                    |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                         Peak Burst Size                       |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                      Committed Burst Size                     |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                      Peak Information Rate                    |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                    Committed Information Rate                 |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
+struct nfp_cfg_head {
+	rte_be32_t flags_opts;
+	rte_be32_t profile_id;
+};
+
+/**
+ * Struct nfp_profile_conf - profile config, offload to NIC
+ * @head:        config head information
+ * @bkt_tkn_p:   token bucket peak
+ * @bkt_tkn_c:   token bucket committed
+ * @pbs:         peak burst size
+ * @cbs:         committed burst size
+ * @pir:         peak information rate
+ * @cir:         committed information rate
+ */
+struct nfp_profile_conf {
+	struct nfp_cfg_head head;
+	rte_be32_t bkt_tkn_p;
+	rte_be32_t bkt_tkn_c;
+	rte_be32_t pbs;
+	rte_be32_t cbs;
+	rte_be32_t pir;
+	rte_be32_t cir;
+};
+
+/**
+ * Struct nfp_mtr_stats_reply - meter stats, read from firmware
+ * @head:          config head information
+ * @pass_bytes:    count of passed bytes
+ * @pass_pkts:     count of passed packets
+ * @drop_bytes:    count of dropped bytes
+ * @drop_pkts:     count of dropped packets
+ */
+struct nfp_mtr_stats_reply {
+	struct nfp_cfg_head head;
+	rte_be64_t pass_bytes;
+	rte_be64_t pass_pkts;
+	rte_be64_t drop_bytes;
+	rte_be64_t drop_pkts;
+};
+
 enum nfp_flower_cmsg_port_type {
 	NFP_FLOWER_CMSG_PORT_TYPE_UNSPEC,
 	NFP_FLOWER_CMSG_PORT_TYPE_PHYS_PORT,
@@ -378,12 +440,6 @@ enum nfp_flower_cmsg_port_vnic_type {
 #define NFP_FLOWER_CMSG_PORT_PCIE_Q(x)          ((x) & 0x3f)         /* [0,5] */
 #define NFP_FLOWER_CMSG_PORT_PHYS_PORT_NUM(x)   ((x) & 0xff)         /* [0,7] */
 
-static inline char*
-nfp_flower_cmsg_get_data(struct rte_mbuf *m)
-{
-	return rte_pktmbuf_mtod(m, char *) + 4 + 4 + NFP_FLOWER_CMSG_HLEN;
-}
-
 /*
  * Metadata with L2 (1W/4B)
  * ----------------------------------------------------------------
@@ -918,6 +974,9 @@ struct nfp_fl_act_meter {
 	rte_be32_t profile_id;
 };
 
+/* Forward declaration */
+struct nfp_fl_rule_metadata;
+
 int nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower);
 int nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower,
 		struct nfp_flower_representor *repr);
diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c
index 3ed78eab57..9847eb0615 100644
--- a/drivers/net/nfp/nfp_flow.c
+++ b/drivers/net/nfp/nfp_flow.c
@@ -14,6 +14,7 @@
 #include "nfp_flow.h"
 #include "nfp_logs.h"
 #include "nfp_rxtx.h"
+#include "nfp_mtr.h"
 #include "flower/nfp_flower.h"
 #include "flower/nfp_flower_cmsg.h"
 #include "flower/nfp_flower_ctrl.h"
diff --git a/drivers/net/nfp/nfp_mtr.h b/drivers/net/nfp/nfp_mtr.h
index f5406381ab..4b1360cad8 100644
--- a/drivers/net/nfp/nfp_mtr.h
+++ b/drivers/net/nfp/nfp_mtr.h
@@ -8,6 +8,8 @@
 
 #include <rte_mtr.h>
 
+#include "flower/nfp_flower_cmsg.h"
+
 /**
  * The max meter count is determined by firmware.
  * The max count is 65536 defined by OF_METER_COUNT.
@@ -16,72 +18,6 @@
 #define NFP_MAX_POLICY_CNT             NFP_MAX_MTR_CNT
 #define NFP_MAX_PROFILE_CNT            NFP_MAX_MTR_CNT
 
-/**
- * See RFC 2698 for more details.
- * Word[0](Flag options):
- * [15] p(pps) 1 for pps, 0 for bps
- *
- * Meter control message
- *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- * +-------------------------------+-+---+-----+-+---------+-+---+-+
- * |            Reserved           |p| Y |TYPE |E|  TSHFV  |P| PC|R|
- * +-------------------------------+-+---+-----+-+---------+-+---+-+
- * |                           Profile ID                          |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                        Token Bucket Peak                      |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                     Token Bucket Committed                    |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                         Peak Burst Size                       |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                      Committed Burst Size                     |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                      Peak Information Rate                    |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                    Committed Information Rate                 |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-struct nfp_cfg_head {
-	rte_be32_t flags_opts;
-	rte_be32_t profile_id;
-};
-
-/**
- * Struct nfp_profile_conf - profile config, offload to NIC
- * @head:        config head information
- * @bkt_tkn_p:   token bucket peak
- * @bkt_tkn_c:   token bucket committed
- * @pbs:         peak burst size
- * @cbs:         committed burst size
- * @pir:         peak information rate
- * @cir:         committed information rate
- */
-struct nfp_profile_conf {
-	struct nfp_cfg_head head;
-	rte_be32_t bkt_tkn_p;
-	rte_be32_t bkt_tkn_c;
-	rte_be32_t pbs;
-	rte_be32_t cbs;
-	rte_be32_t pir;
-	rte_be32_t cir;
-};
-
-/**
- * Struct nfp_mtr_stats_reply - meter stats, read from firmware
- * @head:          config head information
- * @pass_bytes:    count of passed bytes
- * @pass_pkts:     count of passed packets
- * @drop_bytes:    count of dropped bytes
- * @drop_pkts:     count of dropped packets
- */
-struct nfp_mtr_stats_reply {
-	struct nfp_cfg_head head;
-	rte_be64_t pass_bytes;
-	rte_be64_t pass_pkts;
-	rte_be64_t drop_bytes;
-	rte_be64_t drop_pkts;
-};
-
 /**
  * Struct nfp_mtr_profile - meter profile, stored in driver
  * Can only be used by one meter
-- 
2.39.1


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

* [PATCH 10/13] net/nfp: improve modularazation of flow module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (8 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 09/13] net/nfp: improve modularazation of flower cmsg module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 11/13] net/nfp: improve modularazation of meter module Chaoyong He
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Make the header file self-containing by adding the correct include
statement.
Try to keep the API small by move the logic which need not expose from
header file to source file verbatim and remove the unused macro.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfp_flow.c | 88 +++++++++++++++++++++++++++++++++-----
 drivers/net/nfp/nfp_flow.h | 78 +--------------------------------
 2 files changed, 79 insertions(+), 87 deletions(-)

diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c
index 9847eb0615..ff03bea6ce 100644
--- a/drivers/net/nfp/nfp_flow.c
+++ b/drivers/net/nfp/nfp_flow.c
@@ -3,24 +3,92 @@
  * All rights reserved.
  */
 
+#include "nfp_flow.h"
+
 #include <rte_flow_driver.h>
 #include <rte_hash.h>
 #include <rte_jhash.h>
-#include <bus_pci_driver.h>
 #include <rte_malloc.h>
 
-#include "nfp_common.h"
-#include "nfp_ctrl.h"
-#include "nfp_flow.h"
-#include "nfp_logs.h"
-#include "nfp_rxtx.h"
-#include "nfp_mtr.h"
-#include "flower/nfp_flower.h"
 #include "flower/nfp_flower_cmsg.h"
-#include "flower/nfp_flower_ctrl.h"
 #include "flower/nfp_flower_representor.h"
-#include "nfpcore/nfp_mip.h"
 #include "nfpcore/nfp_rtsym.h"
+#include "nfp_logs.h"
+#include "nfp_mtr.h"
+
+#define NFP_FLOWER_LAYER_EXT_META       RTE_BIT32(0)
+#define NFP_FLOWER_LAYER_PORT           RTE_BIT32(1)
+#define NFP_FLOWER_LAYER_MAC            RTE_BIT32(2)
+#define NFP_FLOWER_LAYER_TP             RTE_BIT32(3)
+#define NFP_FLOWER_LAYER_IPV4           RTE_BIT32(4)
+#define NFP_FLOWER_LAYER_IPV6           RTE_BIT32(5)
+#define NFP_FLOWER_LAYER_CT             RTE_BIT32(6)
+#define NFP_FLOWER_LAYER_VXLAN          RTE_BIT32(7)
+
+#define NFP_FLOWER_LAYER2_GRE           RTE_BIT32(0)
+#define NFP_FLOWER_LAYER2_QINQ          RTE_BIT32(4)
+#define NFP_FLOWER_LAYER2_GENEVE        RTE_BIT32(5)
+#define NFP_FLOWER_LAYER2_GENEVE_OP     RTE_BIT32(6)
+#define NFP_FLOWER_LAYER2_TUN_IPV6      RTE_BIT32(7)
+
+/* Compressed HW representation of TCP Flags */
+#define NFP_FL_TCP_FLAG_FIN             RTE_BIT32(0)
+#define NFP_FL_TCP_FLAG_SYN             RTE_BIT32(1)
+#define NFP_FL_TCP_FLAG_RST             RTE_BIT32(2)
+#define NFP_FL_TCP_FLAG_PSH             RTE_BIT32(3)
+#define NFP_FL_TCP_FLAG_URG             RTE_BIT32(4)
+
+#define NFP_FL_META_FLAG_MANAGE_MASK    RTE_BIT32(7)
+
+#define NFP_FLOWER_MASK_VLAN_CFI        RTE_BIT32(12)
+
+#define NFP_MASK_TABLE_ENTRIES          1024
+
+/* The maximum action list size (in bytes) supported by the NFP. */
+#define NFP_FL_MAX_A_SIZ                1216
+
+#define NFP_FL_SC_ACT_DROP      0x80000000
+#define NFP_FL_SC_ACT_USER      0x7D000000
+#define NFP_FL_SC_ACT_POPV      0x6A000000
+#define NFP_FL_SC_ACT_NULL      0x00000000
+
+/* GRE Tunnel flags */
+#define NFP_FL_GRE_FLAG_KEY         (1 << 2)
+
+/* Action opcodes */
+#define NFP_FL_ACTION_OPCODE_OUTPUT             0
+#define NFP_FL_ACTION_OPCODE_PUSH_VLAN          1
+#define NFP_FL_ACTION_OPCODE_POP_VLAN           2
+#define NFP_FL_ACTION_OPCODE_PUSH_MPLS          3
+#define NFP_FL_ACTION_OPCODE_POP_MPLS           4
+#define NFP_FL_ACTION_OPCODE_USERSPACE          5
+#define NFP_FL_ACTION_OPCODE_SET_TUNNEL         6
+#define NFP_FL_ACTION_OPCODE_SET_ETHERNET       7
+#define NFP_FL_ACTION_OPCODE_SET_MPLS           8
+#define NFP_FL_ACTION_OPCODE_SET_IPV4_ADDRS     9
+#define NFP_FL_ACTION_OPCODE_SET_IPV4_TTL_TOS   10
+#define NFP_FL_ACTION_OPCODE_SET_IPV6_SRC       11
+#define NFP_FL_ACTION_OPCODE_SET_IPV6_DST       12
+#define NFP_FL_ACTION_OPCODE_SET_IPV6_TC_HL_FL  13
+#define NFP_FL_ACTION_OPCODE_SET_UDP            14
+#define NFP_FL_ACTION_OPCODE_SET_TCP            15
+#define NFP_FL_ACTION_OPCODE_PRE_LAG            16
+#define NFP_FL_ACTION_OPCODE_PRE_TUNNEL         17
+#define NFP_FL_ACTION_OPCODE_PRE_GS             18
+#define NFP_FL_ACTION_OPCODE_GS                 19
+#define NFP_FL_ACTION_OPCODE_PUSH_NSH           20
+#define NFP_FL_ACTION_OPCODE_POP_NSH            21
+#define NFP_FL_ACTION_OPCODE_SET_QUEUE          22
+#define NFP_FL_ACTION_OPCODE_CONNTRACK          23
+#define NFP_FL_ACTION_OPCODE_METER              24
+#define NFP_FL_ACTION_OPCODE_CT_NAT_EXT         25
+#define NFP_FL_ACTION_OPCODE_PUSH_GENEVE        26
+#define NFP_FL_ACTION_OPCODE_NUM                32
+
+#define NFP_FL_OUT_FLAGS_LAST            RTE_BIT32(15)
+
+/* Tunnel ports */
+#define NFP_FL_PORT_TYPE_TUN            0x50000000
 
 /*
  * Maximum number of items in struct rte_flow_action_vxlan_encap.
diff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/nfp_flow.h
index 414bd4573b..7ce7f62453 100644
--- a/drivers/net/nfp/nfp_flow.h
+++ b/drivers/net/nfp/nfp_flow.h
@@ -6,87 +6,11 @@
 #ifndef _NFP_FLOW_H_
 #define _NFP_FLOW_H_
 
-#include <sys/queue.h>
-#include <rte_bitops.h>
-#include <ethdev_driver.h>
-
-#define NFP_FLOWER_LAYER_EXT_META       RTE_BIT32(0)
-#define NFP_FLOWER_LAYER_PORT           RTE_BIT32(1)
-#define NFP_FLOWER_LAYER_MAC            RTE_BIT32(2)
-#define NFP_FLOWER_LAYER_TP             RTE_BIT32(3)
-#define NFP_FLOWER_LAYER_IPV4           RTE_BIT32(4)
-#define NFP_FLOWER_LAYER_IPV6           RTE_BIT32(5)
-#define NFP_FLOWER_LAYER_CT             RTE_BIT32(6)
-#define NFP_FLOWER_LAYER_VXLAN          RTE_BIT32(7)
-
-#define NFP_FLOWER_LAYER2_GRE           RTE_BIT32(0)
-#define NFP_FLOWER_LAYER2_QINQ          RTE_BIT32(4)
-#define NFP_FLOWER_LAYER2_GENEVE        RTE_BIT32(5)
-#define NFP_FLOWER_LAYER2_GENEVE_OP     RTE_BIT32(6)
-#define NFP_FLOWER_LAYER2_TUN_IPV6      RTE_BIT32(7)
-
-/* Compressed HW representation of TCP Flags */
-#define NFP_FL_TCP_FLAG_FIN             RTE_BIT32(0)
-#define NFP_FL_TCP_FLAG_SYN             RTE_BIT32(1)
-#define NFP_FL_TCP_FLAG_RST             RTE_BIT32(2)
-#define NFP_FL_TCP_FLAG_PSH             RTE_BIT32(3)
-#define NFP_FL_TCP_FLAG_URG             RTE_BIT32(4)
-
-#define NFP_FL_META_FLAG_MANAGE_MASK    RTE_BIT32(7)
-
-#define NFP_FLOWER_MASK_VLAN_CFI        RTE_BIT32(12)
-
-#define NFP_MASK_TABLE_ENTRIES          1024
-
-/* The maximum action list size (in bytes) supported by the NFP. */
-#define NFP_FL_MAX_A_SIZ                1216
+#include "nfp_common.h"
 
 /* The firmware expects lengths in units of long words */
 #define NFP_FL_LW_SIZ                   2
 
-#define NFP_FL_SC_ACT_DROP      0x80000000
-#define NFP_FL_SC_ACT_USER      0x7D000000
-#define NFP_FL_SC_ACT_POPV      0x6A000000
-#define NFP_FL_SC_ACT_NULL      0x00000000
-
-/* GRE Tunnel flags */
-#define NFP_FL_GRE_FLAG_KEY         (1 << 2)
-
-/* Action opcodes */
-#define NFP_FL_ACTION_OPCODE_OUTPUT             0
-#define NFP_FL_ACTION_OPCODE_PUSH_VLAN          1
-#define NFP_FL_ACTION_OPCODE_POP_VLAN           2
-#define NFP_FL_ACTION_OPCODE_PUSH_MPLS          3
-#define NFP_FL_ACTION_OPCODE_POP_MPLS           4
-#define NFP_FL_ACTION_OPCODE_USERSPACE          5
-#define NFP_FL_ACTION_OPCODE_SET_TUNNEL         6
-#define NFP_FL_ACTION_OPCODE_SET_ETHERNET       7
-#define NFP_FL_ACTION_OPCODE_SET_MPLS           8
-#define NFP_FL_ACTION_OPCODE_SET_IPV4_ADDRS     9
-#define NFP_FL_ACTION_OPCODE_SET_IPV4_TTL_TOS   10
-#define NFP_FL_ACTION_OPCODE_SET_IPV6_SRC       11
-#define NFP_FL_ACTION_OPCODE_SET_IPV6_DST       12
-#define NFP_FL_ACTION_OPCODE_SET_IPV6_TC_HL_FL  13
-#define NFP_FL_ACTION_OPCODE_SET_UDP            14
-#define NFP_FL_ACTION_OPCODE_SET_TCP            15
-#define NFP_FL_ACTION_OPCODE_PRE_LAG            16
-#define NFP_FL_ACTION_OPCODE_PRE_TUNNEL         17
-#define NFP_FL_ACTION_OPCODE_PRE_GS             18
-#define NFP_FL_ACTION_OPCODE_GS                 19
-#define NFP_FL_ACTION_OPCODE_PUSH_NSH           20
-#define NFP_FL_ACTION_OPCODE_POP_NSH            21
-#define NFP_FL_ACTION_OPCODE_SET_QUEUE          22
-#define NFP_FL_ACTION_OPCODE_CONNTRACK          23
-#define NFP_FL_ACTION_OPCODE_METER              24
-#define NFP_FL_ACTION_OPCODE_CT_NAT_EXT         25
-#define NFP_FL_ACTION_OPCODE_PUSH_GENEVE        26
-#define NFP_FL_ACTION_OPCODE_NUM                32
-
-#define NFP_FL_OUT_FLAGS_LAST            RTE_BIT32(15)
-
-/* Tunnel ports */
-#define NFP_FL_PORT_TYPE_TUN            0x50000000
-
 enum nfp_flower_tun_type {
 	NFP_FL_TUN_NONE   = 0,
 	NFP_FL_TUN_GRE    = 1,
-- 
2.39.1


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

* [PATCH 11/13] net/nfp: improve modularazation of meter module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (9 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 10/13] net/nfp: improve modularazation of flow module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 12/13] net/nfp: improve modularazation of CPP bridge module Chaoyong He
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Try to keep the API small by move the logic which need not expose from
header file to source file verbatim.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfp_mtr.c | 16 ++++++++--------
 drivers/net/nfp/nfp_mtr.h |  2 --
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/net/nfp/nfp_mtr.c b/drivers/net/nfp/nfp_mtr.c
index afc4de4cc7..255977ec22 100644
--- a/drivers/net/nfp/nfp_mtr.c
+++ b/drivers/net/nfp/nfp_mtr.c
@@ -3,17 +3,17 @@
  * All rights reserved.
  */
 
-#include <rte_mtr_driver.h>
-#include <bus_pci_driver.h>
-#include <rte_malloc.h>
+#include "nfp_mtr.h"
+
 #include <rte_alarm.h>
+#include <rte_malloc.h>
+#include <rte_mtr_driver.h>
 
-#include "nfp_common.h"
-#include "nfp_mtr.h"
-#include "nfp_logs.h"
-#include "flower/nfp_flower.h"
-#include "flower/nfp_flower_cmsg.h"
 #include "flower/nfp_flower_representor.h"
+#include "nfp_logs.h"
+
+#define NFP_MAX_POLICY_CNT             NFP_MAX_MTR_CNT
+#define NFP_MAX_PROFILE_CNT            NFP_MAX_MTR_CNT
 
 #define NFP_FL_QOS_PPS          RTE_BIT32(15)
 #define NFP_FL_QOS_METER        RTE_BIT32(10)
diff --git a/drivers/net/nfp/nfp_mtr.h b/drivers/net/nfp/nfp_mtr.h
index 4b1360cad8..7ab0324721 100644
--- a/drivers/net/nfp/nfp_mtr.h
+++ b/drivers/net/nfp/nfp_mtr.h
@@ -15,8 +15,6 @@
  * The max count is 65536 defined by OF_METER_COUNT.
  */
 #define NFP_MAX_MTR_CNT                65536
-#define NFP_MAX_POLICY_CNT             NFP_MAX_MTR_CNT
-#define NFP_MAX_PROFILE_CNT            NFP_MAX_MTR_CNT
 
 /**
  * Struct nfp_mtr_profile - meter profile, stored in driver
-- 
2.39.1


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

* [PATCH 12/13] net/nfp: improve modularazation of CPP bridge module
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (10 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 11/13] net/nfp: improve modularazation of meter module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-20 11:34 ` [PATCH 13/13] net/nfp: cleanup the include statement of PMD Chaoyong He
  2023-09-22 11:23 ` [PATCH 00/13] improve the modularization of NFP PMD Ferruh Yigit
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Try to keep the API small by move the logic which need not expose from
header file to source file verbatim.
Also remove the unneeded header file include statement of source file.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfp_cpp_bridge.c | 14 ++++++++++----
 drivers/net/nfp/nfp_cpp_bridge.h |  8 --------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/net/nfp/nfp_cpp_bridge.c b/drivers/net/nfp/nfp_cpp_bridge.c
index a9998f3c08..ed9a946b0c 100644
--- a/drivers/net/nfp/nfp_cpp_bridge.c
+++ b/drivers/net/nfp/nfp_cpp_bridge.c
@@ -5,17 +5,23 @@
  * Small portions derived from code Copyright(c) 2010-2015 Intel Corporation.
  */
 
+#include "nfp_cpp_bridge.h"
+
 #include <unistd.h>
 #include <sys/ioctl.h>
 
 #include <rte_service_component.h>
 
 #include "nfpcore/nfp_cpp.h"
-#include "nfpcore/nfp_mip.h"
-#include "nfpcore/nfp_nsp.h"
-
 #include "nfp_logs.h"
-#include "nfp_cpp_bridge.h"
+
+#define NFP_CPP_MEMIO_BOUNDARY    (1 << 20)
+#define NFP_BRIDGE_OP_READ        20
+#define NFP_BRIDGE_OP_WRITE       30
+#define NFP_BRIDGE_OP_IOCTL       40
+
+#define NFP_IOCTL 'n'
+#define NFP_IOCTL_CPP_IDENTIFICATION _IOW(NFP_IOCTL, 0x8f, uint32_t)
 
 /* Prototypes */
 static int nfp_cpp_bridge_serve_write(int sockfd, struct nfp_cpp *cpp);
diff --git a/drivers/net/nfp/nfp_cpp_bridge.h b/drivers/net/nfp/nfp_cpp_bridge.h
index 85289e158b..e6a957a090 100644
--- a/drivers/net/nfp/nfp_cpp_bridge.h
+++ b/drivers/net/nfp/nfp_cpp_bridge.h
@@ -10,14 +10,6 @@
 
 #include "nfp_common.h"
 
-#define NFP_CPP_MEMIO_BOUNDARY	(1 << 20)
-#define NFP_BRIDGE_OP_READ	20
-#define NFP_BRIDGE_OP_WRITE	30
-#define NFP_BRIDGE_OP_IOCTL	40
-
-#define NFP_IOCTL 'n'
-#define NFP_IOCTL_CPP_IDENTIFICATION _IOW(NFP_IOCTL, 0x8f, uint32_t)
-
 int nfp_enable_cpp_service(struct nfp_pf_dev *pf_dev);
 int nfp_map_service(uint32_t service_id);
 
-- 
2.39.1


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

* [PATCH 13/13] net/nfp: cleanup the include statement of PMD
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (11 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 12/13] net/nfp: improve modularazation of CPP bridge module Chaoyong He
@ 2023-09-20 11:34 ` Chaoyong He
  2023-09-22 11:23 ` [PATCH 00/13] improve the modularization of NFP PMD Ferruh Yigit
  13 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-20 11:34 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

Remove the unneeded header file include statement of PMD source files,
also adjust the include statement of 'nfp_rxtx' and 'nfp_flower_cmsg'
module.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c           |  2 --
 drivers/net/nfp/flower/nfp_flower_cmsg.c      |  1 -
 drivers/net/nfp/flower/nfp_flower_cmsg.h      |  4 +--
 drivers/net/nfp/flower/nfp_flower_ctrl.c      |  2 --
 .../net/nfp/flower/nfp_flower_representor.c   |  2 --
 drivers/net/nfp/nfp_ethdev.c                  | 25 ++++---------------
 drivers/net/nfp/nfp_ethdev_vf.c               |  9 +++----
 drivers/net/nfp/nfp_flow.c                    |  1 -
 drivers/net/nfp/nfp_rxtx.c                    |  1 -
 9 files changed, 9 insertions(+), 38 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index bbcbb0060b..1e10b38120 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -14,10 +14,8 @@
 #include "../nfpcore/nfp_nsp.h"
 #include "../nfpcore/nfp_rtsym.h"
 #include "../nfp_cpp_bridge.h"
-#include "../nfp_flow.h"
 #include "../nfp_logs.h"
 #include "../nfp_mtr.h"
-#include "nfp_flower_cmsg.h"
 #include "nfp_flower_ctrl.h"
 #include "nfp_flower_representor.h"
 
diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 0b8feec05b..6b9532f5b6 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -6,7 +6,6 @@
 #include "nfp_flower_cmsg.h"
 
 #include "../nfpcore/nfp_nsp.h"
-#include "../nfp_flow.h"
 #include "../nfp_logs.h"
 #include "nfp_flower_ctrl.h"
 #include "nfp_flower_representor.h"
diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h
index 3c2b279f40..9449760145 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.h
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h
@@ -6,6 +6,7 @@
 #ifndef _NFP_CMSG_H_
 #define _NFP_CMSG_H_
 
+#include "../nfp_flow.h"
 #include "nfp_flower.h"
 
 struct nfp_flower_cmsg_hdr {
@@ -974,9 +975,6 @@ struct nfp_fl_act_meter {
 	rte_be32_t profile_id;
 };
 
-/* Forward declaration */
-struct nfp_fl_rule_metadata;
-
 int nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower);
 int nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower,
 		struct nfp_flower_representor *repr);
diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index bdb042142a..c5282053cf 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -9,9 +9,7 @@
 
 #include "../nfd3/nfp_nfd3.h"
 #include "../nfdk/nfp_nfdk.h"
-#include "../nfp_flow.h"
 #include "../nfp_logs.h"
-#include "nfp_flower_cmsg.h"
 #include "nfp_flower_representor.h"
 #include "nfp_mtr.h"
 
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index d4df88fb73..55ca3e6db0 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -7,10 +7,8 @@
 
 #include "../nfd3/nfp_nfd3.h"
 #include "../nfpcore/nfp_nsp.h"
-#include "../nfp_flow.h"
 #include "../nfp_logs.h"
 #include "../nfp_mtr.h"
-#include "nfp_flower_cmsg.h"
 
 /*
  * enum nfp_repr_type - type of representor
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index b2a2cd9ed8..241595be9d 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -5,35 +5,20 @@
  * Small portions derived from code Copyright(c) 2010-2015 Intel Corporation.
  */
 
-#include <rte_common.h>
-#include <ethdev_driver.h>
-#include <ethdev_pci.h>
-#include <dev_driver.h>
-#include <rte_ether.h>
-#include <rte_malloc.h>
-#include <rte_memzone.h>
-#include <rte_mempool.h>
-#include <rte_service_component.h>
+#include <eal_firmware.h>
 #include <rte_alarm.h>
-#include "eal_firmware.h"
 
+#include "flower/nfp_flower.h"
+#include "nfd3/nfp_nfd3.h"
+#include "nfdk/nfp_nfdk.h"
 #include "nfpcore/nfp_cpp.h"
-#include "nfpcore/nfp_nffw.h"
 #include "nfpcore/nfp_hwinfo.h"
-#include "nfpcore/nfp_mip.h"
 #include "nfpcore/nfp_rtsym.h"
 #include "nfpcore/nfp_nsp.h"
 #include "nfpcore/nfp6000_pcie.h"
 
-#include "nfp_common.h"
-#include "nfp_ctrl.h"
-#include "nfp_rxtx.h"
-#include "nfp_logs.h"
 #include "nfp_cpp_bridge.h"
-
-#include "nfd3/nfp_nfd3.h"
-#include "nfdk/nfp_nfdk.h"
-#include "flower/nfp_flower.h"
+#include "nfp_logs.h"
 
 static int
 nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic, int port)
diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index 1a02a857ea..0c94fc51ad 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -7,15 +7,12 @@
 
 #include <rte_alarm.h>
 
-#include "nfpcore/nfp_mip.h"
-#include "nfpcore/nfp_rtsym.h"
+#include "nfd3/nfp_nfd3.h"
+#include "nfdk/nfp_nfdk.h"
+#include "nfpcore/nfp_cpp.h"
 
 #include "nfp_common.h"
-#include "nfp_ctrl.h"
-#include "nfp_rxtx.h"
 #include "nfp_logs.h"
-#include "nfd3/nfp_nfd3.h"
-#include "nfdk/nfp_nfdk.h"
 
 static void
 nfp_netvf_read_mac(struct nfp_net_hw *hw)
diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c
index ff03bea6ce..aa286535f7 100644
--- a/drivers/net/nfp/nfp_flow.c
+++ b/drivers/net/nfp/nfp_flow.c
@@ -10,7 +10,6 @@
 #include <rte_jhash.h>
 #include <rte_malloc.h>
 
-#include "flower/nfp_flower_cmsg.h"
 #include "flower/nfp_flower_representor.h"
 #include "nfpcore/nfp_rtsym.h"
 #include "nfp_logs.h"
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index eeca193d14..e74aba7439 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -9,7 +9,6 @@
 
 #include <ethdev_pci.h>
 
-#include "nfp_common.h"
 #include "nfd3/nfp_nfd3.h"
 #include "nfdk/nfp_nfdk.h"
 #include "flower/nfp_flower.h"
-- 
2.39.1


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

* Re: [PATCH 00/13] improve the modularization of NFP PMD
  2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
                   ` (12 preceding siblings ...)
  2023-09-20 11:34 ` [PATCH 13/13] net/nfp: cleanup the include statement of PMD Chaoyong He
@ 2023-09-22 11:23 ` Ferruh Yigit
  2023-09-25  1:34   ` Chaoyong He
  13 siblings, 1 reply; 16+ messages in thread
From: Ferruh Yigit @ 2023-09-22 11:23 UTC (permalink / raw)
  To: Chaoyong He, dev; +Cc: oss-drivers

On 9/20/2023 12:34 PM, Chaoyong He wrote:
> This patch series aims to improve the modularization of NFP PMD through:
> * Make the header files self-containing by adding the correct include
>   statement.
> * Try to keep the interface of modules as small as possible.
> * Remove the unneeded include statements to make sure a clean dependent
>   relations among modules.
> 
> Chaoyong He (13):
>   net/nfp: make sure header file is self-containing
>   net/nfp: improve modularazation of rxtx module
>   net/nfp: improve modularazation of nfd3 module
>   net/nfp: improve modularazation of nfdk module
>   net/nfp: improve modularazation of common module
>   net/nfp: improve modularazation of flower module
>   net/nfp: improve modularazation of flower representor module
>   net/nfp: improve modularazation of flower ctrl module
>   net/nfp: improve modularazation of flower cmsg module
>   net/nfp: improve modularazation of flow module
>   net/nfp: improve modularazation of meter module
>   net/nfp: improve modularazation of CPP bridge module
>   net/nfp: cleanup the include statement of PMD
> 

Series applied to dpdk-next-net/main, thanks.


Are these cleanups preparation for a planned work?

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

* RE: [PATCH 00/13] improve the modularization of NFP PMD
  2023-09-22 11:23 ` [PATCH 00/13] improve the modularization of NFP PMD Ferruh Yigit
@ 2023-09-25  1:34   ` Chaoyong He
  0 siblings, 0 replies; 16+ messages in thread
From: Chaoyong He @ 2023-09-25  1:34 UTC (permalink / raw)
  To: Ferruh Yigit, dev; +Cc: oss-drivers

> On 9/20/2023 12:34 PM, Chaoyong He wrote:
> > This patch series aims to improve the modularization of NFP PMD through:
> > * Make the header files self-containing by adding the correct include
> >   statement.
> > * Try to keep the interface of modules as small as possible.
> > * Remove the unneeded include statements to make sure a clean dependent
> >   relations among modules.
> >
> > Chaoyong He (13):
> >   net/nfp: make sure header file is self-containing
> >   net/nfp: improve modularazation of rxtx module
> >   net/nfp: improve modularazation of nfd3 module
> >   net/nfp: improve modularazation of nfdk module
> >   net/nfp: improve modularazation of common module
> >   net/nfp: improve modularazation of flower module
> >   net/nfp: improve modularazation of flower representor module
> >   net/nfp: improve modularazation of flower ctrl module
> >   net/nfp: improve modularazation of flower cmsg module
> >   net/nfp: improve modularazation of flow module
> >   net/nfp: improve modularazation of meter module
> >   net/nfp: improve modularazation of CPP bridge module
> >   net/nfp: cleanup the include statement of PMD
> >
> 
> Series applied to dpdk-next-net/main, thanks.
> 
> 
> Are these cleanups preparation for a planned work?

Yes, we try to add a common 'drivers/common/nfp' library and a 'dirvers/vdpa/nfp' PMD in this or next release cycle.

For now, our cards are 1PF <--> n physical mode, and we will add support for 1PF <--> 1 physical mode and maybe m PF <--> n physical mode in the future.

The modularization and refactor will make these works easier and the commits more natural to understand. 

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

end of thread, other threads:[~2023-09-25  1:34 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-20 11:34 [PATCH 00/13] improve the modularization of NFP PMD Chaoyong He
2023-09-20 11:34 ` [PATCH 01/13] net/nfp: make sure header file is self-containing Chaoyong He
2023-09-20 11:34 ` [PATCH 02/13] net/nfp: improve modularazation of rxtx module Chaoyong He
2023-09-20 11:34 ` [PATCH 03/13] net/nfp: improve modularazation of nfd3 module Chaoyong He
2023-09-20 11:34 ` [PATCH 04/13] net/nfp: improve modularazation of nfdk module Chaoyong He
2023-09-20 11:34 ` [PATCH 05/13] net/nfp: improve modularazation of common module Chaoyong He
2023-09-20 11:34 ` [PATCH 06/13] net/nfp: improve modularazation of flower module Chaoyong He
2023-09-20 11:34 ` [PATCH 07/13] net/nfp: improve modularazation of flower representor module Chaoyong He
2023-09-20 11:34 ` [PATCH 08/13] net/nfp: improve modularazation of flower ctrl module Chaoyong He
2023-09-20 11:34 ` [PATCH 09/13] net/nfp: improve modularazation of flower cmsg module Chaoyong He
2023-09-20 11:34 ` [PATCH 10/13] net/nfp: improve modularazation of flow module Chaoyong He
2023-09-20 11:34 ` [PATCH 11/13] net/nfp: improve modularazation of meter module Chaoyong He
2023-09-20 11:34 ` [PATCH 12/13] net/nfp: improve modularazation of CPP bridge module Chaoyong He
2023-09-20 11:34 ` [PATCH 13/13] net/nfp: cleanup the include statement of PMD Chaoyong He
2023-09-22 11:23 ` [PATCH 00/13] improve the modularization of NFP PMD Ferruh Yigit
2023-09-25  1:34   ` Chaoyong He

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