All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matej Vido <vido@cesnet.cz>
To: dev@dpdk.org
Cc: ferruh.yigit@intel.com
Subject: [PATCH v2 4/5] net/szedata2: move ibuf and obuf to specific header
Date: Mon, 12 Jun 2017 14:03:21 +0200	[thread overview]
Message-ID: <1497269002-19760-4-git-send-email-vido@cesnet.cz> (raw)
In-Reply-To: <1497269002-19760-1-git-send-email-vido@cesnet.cz>

Signed-off-by: Matej Vido <vido@cesnet.cz>
---
 drivers/net/szedata2/rte_eth_szedata2.h | 216 +-------------------------
 drivers/net/szedata2/szedata2_iobuf.h   | 261 ++++++++++++++++++++++++++++++++
 2 files changed, 264 insertions(+), 213 deletions(-)

diff --git a/drivers/net/szedata2/rte_eth_szedata2.h b/drivers/net/szedata2/rte_eth_szedata2.h
index 6b31a77..2571d54 100644
--- a/drivers/net/szedata2/rte_eth_szedata2.h
+++ b/drivers/net/szedata2/rte_eth_szedata2.h
@@ -34,10 +34,9 @@
 #ifndef RTE_PMD_SZEDATA2_H_
 #define RTE_PMD_SZEDATA2_H_
 
-#include <stdbool.h>
+#include <stdint.h>
 
-#include <rte_byteorder.h>
-#include <rte_io.h>
+#include <libsze2.h>
 
 /* PCI Vendor ID */
 #define PCI_VENDOR_ID_NETCOPE 0x1b26
@@ -114,213 +113,4 @@ struct szedata {
 	int                         numa_node;
 };
 
-static inline uint32_t
-szedata2_read32(const volatile void *addr)
-{
-	return rte_le_to_cpu_32(rte_read32(addr));
-}
-
-static inline void
-szedata2_write32(uint32_t value, volatile void *addr)
-{
-	rte_write32(rte_cpu_to_le_32(value), addr);
-}
-
-enum szedata2_link_speed {
-	SZEDATA2_LINK_SPEED_DEFAULT = 0,
-	SZEDATA2_LINK_SPEED_10G,
-	SZEDATA2_LINK_SPEED_40G,
-	SZEDATA2_LINK_SPEED_100G,
-};
-
-enum szedata2_mac_check_mode {
-	SZEDATA2_MAC_CHMODE_PROMISC       = 0x0,
-	SZEDATA2_MAC_CHMODE_ONLY_VALID    = 0x1,
-	SZEDATA2_MAC_CHMODE_ALL_BROADCAST = 0x2,
-	SZEDATA2_MAC_CHMODE_ALL_MULTICAST = 0x3,
-};
-
-/*
- * Maximum possible number of MAC addresses (limited by IBUF status
- * register value MAC_COUNT which has 5 bits).
- */
-#define SZEDATA2_IBUF_MAX_MAC_COUNT 32
-
-/*
- * Structure describes IBUF address space
- */
-struct szedata2_ibuf {
-	/** Total Received Frames Counter low part */
-	uint32_t trfcl; /**< 0x00 */
-	/** Correct Frames Counter low part */
-	uint32_t cfcl; /**< 0x04 */
-	/** Discarded Frames Counter low part */
-	uint32_t dfcl; /**< 0x08 */
-	/** Counter of frames discarded due to buffer overflow low part */
-	uint32_t bodfcl; /**< 0x0C */
-	/** Total Received Frames Counter high part */
-	uint32_t trfch; /**< 0x10 */
-	/** Correct Frames Counter high part */
-	uint32_t cfch; /**< 0x14 */
-	/** Discarded Frames Counter high part */
-	uint32_t dfch; /**< 0x18 */
-	/** Counter of frames discarded due to buffer overflow high part */
-	uint32_t bodfch; /**< 0x1C */
-	/** IBUF enable register */
-	uint32_t ibuf_en; /**< 0x20 */
-	/** Error mask register */
-	uint32_t err_mask; /**< 0x24 */
-	/** IBUF status register */
-	uint32_t ibuf_st; /**< 0x28 */
-	/** IBUF command register */
-	uint32_t ibuf_cmd; /**< 0x2C */
-	/** Minimum frame length allowed */
-	uint32_t mfla; /**< 0x30 */
-	/** Frame MTU */
-	uint32_t mtu; /**< 0x34 */
-	/** MAC address check mode */
-	uint32_t mac_chmode; /**< 0x38 */
-	/** Octets Received OK Counter low part */
-	uint32_t orocl; /**< 0x3C */
-	/** Octets Received OK Counter high part */
-	uint32_t oroch; /**< 0x40 */
-	/** reserved */
-	uint8_t reserved[60]; /**< 0x4C */
-	/** IBUF memory for MAC addresses */
-	uint32_t mac_mem[2 * SZEDATA2_IBUF_MAX_MAC_COUNT]; /**< 0x80 */
-} __rte_packed;
-
-/*
- * @return
- *     true if IBUF is enabled
- *     false if IBUF is disabled
- */
-static inline bool
-ibuf_is_enabled(const volatile struct szedata2_ibuf *ibuf)
-{
-	return ((szedata2_read32(&ibuf->ibuf_en) & 0x1) != 0) ? true : false;
-}
-
-/*
- * Enables IBUF.
- */
-static inline void
-ibuf_enable(volatile struct szedata2_ibuf *ibuf)
-{
-	szedata2_write32(szedata2_read32(&ibuf->ibuf_en) | 0x1, &ibuf->ibuf_en);
-}
-
-/*
- * Disables IBUF.
- */
-static inline void
-ibuf_disable(volatile struct szedata2_ibuf *ibuf)
-{
-	szedata2_write32(szedata2_read32(&ibuf->ibuf_en) & ~0x1,
-			&ibuf->ibuf_en);
-}
-
-/*
- * @return
- *     true if ibuf link is up
- *     false if ibuf link is down
- */
-static inline bool
-ibuf_is_link_up(const volatile struct szedata2_ibuf *ibuf)
-{
-	return ((szedata2_read32(&ibuf->ibuf_st) & 0x80) != 0) ? true : false;
-}
-
-/*
- * @return
- *     MAC address check mode
- */
-static inline enum szedata2_mac_check_mode
-ibuf_mac_mode_read(const volatile struct szedata2_ibuf *ibuf)
-{
-	switch (szedata2_read32(&ibuf->mac_chmode) & 0x3) {
-	case 0x0:
-		return SZEDATA2_MAC_CHMODE_PROMISC;
-	case 0x1:
-		return SZEDATA2_MAC_CHMODE_ONLY_VALID;
-	case 0x2:
-		return SZEDATA2_MAC_CHMODE_ALL_BROADCAST;
-	case 0x3:
-		return SZEDATA2_MAC_CHMODE_ALL_MULTICAST;
-	default:
-		return SZEDATA2_MAC_CHMODE_PROMISC;
-	}
-}
-
-/*
- * Writes "mode" in MAC address check mode register.
- */
-static inline void
-ibuf_mac_mode_write(volatile struct szedata2_ibuf *ibuf,
-		enum szedata2_mac_check_mode mode)
-{
-	szedata2_write32((szedata2_read32(&ibuf->mac_chmode) & ~0x3) | mode,
-			&ibuf->mac_chmode);
-}
-
-/*
- * Structure describes OBUF address space
- */
-struct szedata2_obuf {
-	/** Total Sent Frames Counter low part */
-	uint32_t tsfcl; /**< 0x00 */
-	/** Octets Sent Counter low part */
-	uint32_t oscl; /**< 0x04 */
-	/** Total Discarded Frames Counter low part */
-	uint32_t tdfcl; /**< 0x08 */
-	/** reserved */
-	uint32_t reserved1; /**< 0x0C */
-	/** Total Sent Frames Counter high part */
-	uint32_t tsfch; /**< 0x10 */
-	/** Octets Sent Counter high part */
-	uint32_t osch; /**< 0x14 */
-	/** Total Discarded Frames Counter high part */
-	uint32_t tdfch; /**< 0x18 */
-	/** reserved */
-	uint32_t reserved2; /**< 0x1C */
-	/** OBUF enable register */
-	uint32_t obuf_en; /**< 0x20 */
-	/** reserved */
-	uint64_t reserved3; /**< 0x24 */
-	/** OBUF control register */
-	uint32_t ctrl; /**< 0x2C */
-	/** OBUF status register */
-	uint32_t obuf_st; /**< 0x30 */
-} __rte_packed;
-
-/*
- * @return
- *     true if OBUF is enabled
- *     false if OBUF is disabled
- */
-static inline bool
-obuf_is_enabled(const volatile struct szedata2_obuf *obuf)
-{
-	return ((szedata2_read32(&obuf->obuf_en) & 0x1) != 0) ? true : false;
-}
-
-/*
- * Enables OBUF.
- */
-static inline void
-obuf_enable(volatile struct szedata2_obuf *obuf)
-{
-	szedata2_write32(szedata2_read32(&obuf->obuf_en) | 0x1, &obuf->obuf_en);
-}
-
-/*
- * Disables OBUF.
- */
-static inline void
-obuf_disable(volatile struct szedata2_obuf *obuf)
-{
-	szedata2_write32(szedata2_read32(&obuf->obuf_en) & ~0x1,
-			&obuf->obuf_en);
-}
-
-#endif
+#endif /* RTE_PMD_SZEDATA2_H_ */
diff --git a/drivers/net/szedata2/szedata2_iobuf.h b/drivers/net/szedata2/szedata2_iobuf.h
index 3ae4367..f1ccb3b 100644
--- a/drivers/net/szedata2/szedata2_iobuf.h
+++ b/drivers/net/szedata2/szedata2_iobuf.h
@@ -35,7 +35,10 @@
 #define _SZEDATA2_IOBUF_H_
 
 #include <stdint.h>
+#include <stdbool.h>
 
+#include <rte_byteorder.h>
+#include <rte_io.h>
 #include <rte_dev.h>
 
 /* IBUF offsets from the beginning of the PCI resource address space. */
@@ -46,6 +49,20 @@
 extern const uint32_t szedata2_obuf_base_table[];
 extern const uint32_t szedata2_obuf_count;
 
+enum szedata2_link_speed {
+	SZEDATA2_LINK_SPEED_DEFAULT = 0,
+	SZEDATA2_LINK_SPEED_10G,
+	SZEDATA2_LINK_SPEED_40G,
+	SZEDATA2_LINK_SPEED_100G,
+};
+
+enum szedata2_mac_check_mode {
+	SZEDATA2_MAC_CHMODE_PROMISC       = 0x0,
+	SZEDATA2_MAC_CHMODE_ONLY_VALID    = 0x1,
+	SZEDATA2_MAC_CHMODE_ALL_BROADCAST = 0x2,
+	SZEDATA2_MAC_CHMODE_ALL_MULTICAST = 0x3,
+};
+
 /**
  * Macro takes pointer to pci resource structure (rsc)
  * and returns pointer to mapped resource memory at
@@ -55,6 +72,114 @@
 	((type)(((uint8_t *)(rsc)->addr) + (offset)))
 
 /**
+ * Maximum possible number of MAC addresses (limited by IBUF status
+ * register value MAC_COUNT which has 5 bits).
+ */
+#define SZEDATA2_IBUF_MAX_MAC_COUNT 32
+
+/**
+ * Structure describes IBUF address space.
+ */
+struct szedata2_ibuf {
+	/** Total Received Frames Counter low part */
+	uint32_t trfcl; /**< 0x00 */
+	/** Correct Frames Counter low part */
+	uint32_t cfcl; /**< 0x04 */
+	/** Discarded Frames Counter low part */
+	uint32_t dfcl; /**< 0x08 */
+	/** Counter of frames discarded due to buffer overflow low part */
+	uint32_t bodfcl; /**< 0x0C */
+	/** Total Received Frames Counter high part */
+	uint32_t trfch; /**< 0x10 */
+	/** Correct Frames Counter high part */
+	uint32_t cfch; /**< 0x14 */
+	/** Discarded Frames Counter high part */
+	uint32_t dfch; /**< 0x18 */
+	/** Counter of frames discarded due to buffer overflow high part */
+	uint32_t bodfch; /**< 0x1C */
+	/** IBUF enable register */
+	uint32_t ibuf_en; /**< 0x20 */
+	/** Error mask register */
+	uint32_t err_mask; /**< 0x24 */
+	/** IBUF status register */
+	uint32_t ibuf_st; /**< 0x28 */
+	/** IBUF command register */
+	uint32_t ibuf_cmd; /**< 0x2C */
+	/** Minimum frame length allowed */
+	uint32_t mfla; /**< 0x30 */
+	/** Frame MTU */
+	uint32_t mtu; /**< 0x34 */
+	/** MAC address check mode */
+	uint32_t mac_chmode; /**< 0x38 */
+	/** Octets Received OK Counter low part */
+	uint32_t orocl; /**< 0x3C */
+	/** Octets Received OK Counter high part */
+	uint32_t oroch; /**< 0x40 */
+	/** reserved */
+	uint8_t reserved[60]; /**< 0x4C */
+	/** IBUF memory for MAC addresses */
+	uint32_t mac_mem[2 * SZEDATA2_IBUF_MAX_MAC_COUNT]; /**< 0x80 */
+} __rte_packed;
+
+/**
+ * Structure describes OBUF address space.
+ */
+struct szedata2_obuf {
+	/** Total Sent Frames Counter low part */
+	uint32_t tsfcl; /**< 0x00 */
+	/** Octets Sent Counter low part */
+	uint32_t oscl; /**< 0x04 */
+	/** Total Discarded Frames Counter low part */
+	uint32_t tdfcl; /**< 0x08 */
+	/** reserved */
+	uint32_t reserved1; /**< 0x0C */
+	/** Total Sent Frames Counter high part */
+	uint32_t tsfch; /**< 0x10 */
+	/** Octets Sent Counter high part */
+	uint32_t osch; /**< 0x14 */
+	/** Total Discarded Frames Counter high part */
+	uint32_t tdfch; /**< 0x18 */
+	/** reserved */
+	uint32_t reserved2; /**< 0x1C */
+	/** OBUF enable register */
+	uint32_t obuf_en; /**< 0x20 */
+	/** reserved */
+	uint64_t reserved3; /**< 0x24 */
+	/** OBUF control register */
+	uint32_t ctrl; /**< 0x2C */
+	/** OBUF status register */
+	uint32_t obuf_st; /**< 0x30 */
+} __rte_packed;
+
+/**
+ * Wrapper for reading 4 bytes from device memory in correct endianness.
+ *
+ * @param addr
+ *     Address for reading.
+ * @return
+ *     4 B value.
+ */
+static inline uint32_t
+szedata2_read32(const volatile void *addr)
+{
+	return rte_le_to_cpu_32(rte_read32(addr));
+}
+
+/**
+ * Wrapper for writing 4 bytes to device memory in correct endianness.
+ *
+ * @param value
+ *     Value to write.
+ * @param addr
+ *     Address for writing.
+ */
+static inline void
+szedata2_write32(uint32_t value, volatile void *addr)
+{
+	rte_write32(rte_cpu_to_le_32(value), addr);
+}
+
+/**
  * Get pointer to IBUF structure according to specified index.
  *
  * @param rsc
@@ -92,4 +217,140 @@
 		struct szedata2_obuf *);
 }
 
+/**
+ * Checks if IBUF is enabled.
+ *
+ * @param ibuf
+ *     Pointer to IBUF structure.
+ * @return
+ *     true if IBUF is enabled.
+ *     false if IBUF is disabled.
+ */
+static inline bool
+ibuf_is_enabled(const volatile struct szedata2_ibuf *ibuf)
+{
+	return ((szedata2_read32(&ibuf->ibuf_en) & 0x1) != 0) ? true : false;
+}
+
+/**
+ * Enables IBUF.
+ *
+ * @param ibuf
+ *     Pointer to IBUF structure.
+ */
+static inline void
+ibuf_enable(volatile struct szedata2_ibuf *ibuf)
+{
+	szedata2_write32(szedata2_read32(&ibuf->ibuf_en) | 0x1, &ibuf->ibuf_en);
+}
+
+/**
+ * Disables IBUF.
+ *
+ * @param ibuf
+ *     Pointer to IBUF structure.
+ */
+static inline void
+ibuf_disable(volatile struct szedata2_ibuf *ibuf)
+{
+	szedata2_write32(szedata2_read32(&ibuf->ibuf_en) & ~0x1,
+			&ibuf->ibuf_en);
+}
+
+/**
+ * Checks if link is up.
+ *
+ * @param ibuf
+ *     Pointer to IBUF structure.
+ * @return
+ *     true if ibuf link is up.
+ *     false if ibuf link is down.
+ */
+static inline bool
+ibuf_is_link_up(const volatile struct szedata2_ibuf *ibuf)
+{
+	return ((szedata2_read32(&ibuf->ibuf_st) & 0x80) != 0) ? true : false;
+}
+
+/**
+ * Get current MAC address check mode from IBUF.
+ *
+ * @param ibuf
+ *     Pointer to IBUF structure.
+ * @return
+ *     MAC address check mode constant.
+ */
+static inline enum szedata2_mac_check_mode
+ibuf_mac_mode_read(const volatile struct szedata2_ibuf *ibuf)
+{
+	switch (szedata2_read32(&ibuf->mac_chmode) & 0x3) {
+	case 0x0:
+		return SZEDATA2_MAC_CHMODE_PROMISC;
+	case 0x1:
+		return SZEDATA2_MAC_CHMODE_ONLY_VALID;
+	case 0x2:
+		return SZEDATA2_MAC_CHMODE_ALL_BROADCAST;
+	case 0x3:
+		return SZEDATA2_MAC_CHMODE_ALL_MULTICAST;
+	default:
+		return SZEDATA2_MAC_CHMODE_PROMISC;
+	}
+}
+
+/**
+ * Writes mode in MAC address check mode register in IBUF.
+ *
+ * @param ibuf
+ *     Pointer to IBUF structure.
+ * @param mode
+ *     MAC address check mode to set.
+ */
+static inline void
+ibuf_mac_mode_write(volatile struct szedata2_ibuf *ibuf,
+		enum szedata2_mac_check_mode mode)
+{
+	szedata2_write32((szedata2_read32(&ibuf->mac_chmode) & ~0x3) | mode,
+			&ibuf->mac_chmode);
+}
+
+/**
+ * Checks if obuf is enabled.
+ *
+ * @param obuf
+ *     Pointer to OBUF structure.
+ * @return
+ *     true if OBUF is enabled.
+ *     false if OBUF is disabled.
+ */
+static inline bool
+obuf_is_enabled(const volatile struct szedata2_obuf *obuf)
+{
+	return ((szedata2_read32(&obuf->obuf_en) & 0x1) != 0) ? true : false;
+}
+
+/**
+ * Enables OBUF.
+ *
+ * @param obuf
+ *     Pointer to OBUF structure.
+ */
+static inline void
+obuf_enable(volatile struct szedata2_obuf *obuf)
+{
+	szedata2_write32(szedata2_read32(&obuf->obuf_en) | 0x1, &obuf->obuf_en);
+}
+
+/**
+ * Disables OBUF.
+ *
+ * @param obuf
+ *     Pointer to OBUF structure.
+ */
+static inline void
+obuf_disable(volatile struct szedata2_obuf *obuf)
+{
+	szedata2_write32(szedata2_read32(&obuf->obuf_en) & ~0x1,
+			&obuf->obuf_en);
+}
+
 #endif /* _SZEDATA2_IOBUF_H_ */
-- 
1.8.4

  parent reply	other threads:[~2017-06-12 12:03 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-26 18:05 [PATCH 1/5] net/szedata2: refactor ibuf and obuf names Matej Vido
2017-05-26 18:05 ` [PATCH 2/5] net/szedata2: refactor ibuf and obuf read and write Matej Vido
2017-05-26 18:05 ` [PATCH 3/5] net/szedata2: refactor ibuf and obuf address definition Matej Vido
2017-05-29 12:41   ` Ferruh Yigit
2017-05-31  8:33     ` Matej Vido
2017-05-31  9:12       ` Ferruh Yigit
2017-05-26 18:05 ` [PATCH 4/5] net/szedata2: move ibuf and obuf to specific header Matej Vido
2017-05-26 18:05 ` [PATCH 5/5] net/szedata2: add more supported firmwares Matej Vido
2017-05-29 12:42   ` Ferruh Yigit
2017-05-31  8:34     ` Matej Vido
2017-05-31  9:11       ` Ferruh Yigit
2017-05-29 12:40 ` [PATCH 1/5] net/szedata2: refactor ibuf and obuf names Ferruh Yigit
2017-05-31  8:32   ` Matej Vido
2017-06-12 12:03 ` [PATCH v2 " Matej Vido
2017-06-12 12:03   ` [PATCH v2 2/5] net/szedata2: refactor ibuf and obuf read and write Matej Vido
2017-06-12 12:03   ` [PATCH v2 3/5] net/szedata2: refactor ibuf and obuf address definition Matej Vido
2017-06-12 12:03   ` Matej Vido [this message]
2017-06-12 12:03   ` [PATCH v2 5/5] net/szedata2: add more supported firmwares Matej Vido
2017-06-12 14:35   ` [PATCH v2 1/5] net/szedata2: refactor ibuf and obuf names Ferruh Yigit

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=1497269002-19760-4-git-send-email-vido@cesnet.cz \
    --to=vido@cesnet.cz \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.